
Android Media
文章平均质量分 95
chituhuan
这个作者很懒,什么都没留下…
展开
-
ExoPlayer 中的音频时间戳计算
视频播放 音频视频对齐 有三种方式以音频为基准最为常见, ExoPlayer中也是采用以音频为基准的方式。DefaultAudioSink 负责音频数据的渲染,音频数据的时间戳也是在处理的。DefaultAudioSink 时间戳处理涉及这几个 概念。AudioTrackPositionTrackerMediaPositionParametersConfigurationAudioTrackPositionTracker用于 DefaultAudioSink 内部计算时间戳,是真正计算时间戳的类。根据and原创 2022-06-29 10:17:49 · 1612 阅读 · 2 评论 -
ffmpeg 中的GNU语法
阅读ffmpeg源码是 发现一些函数前面加了 attribute_deprecated 属性;如:attribute_deprecated int url_fopen( AVIOContext **s, const char *url, int flags);在libavutil/attributes.h 中有如下定义: 83 #ifndef attribute_deprecated 8原创 2016-08-31 12:11:11 · 409 阅读 · 0 评论 -
ffmpeg 流对象的概念。
最近看ffmpeg的代码,在打开文件时,使用了一个AVIOContext对象的概念。在ffmepg中将输入做了封装,将流媒体和本地文件都封装为AVIOContext结构体。和编解码的概念类似。在libavformat/allformats.c中的 av_register_all()不仅注册了编解码器,还注册了各种AVIOContext。 36 #define REGISTER_PROTOCOL原创 2016-08-31 12:11:01 · 590 阅读 · 0 评论 -
音视频文件格式和编码格式
首先要分清楚媒体文件和编码的区别:文件是既包括视频又包括音频、甚至还带有脚本的一个集合,也可以叫容器;文件当中的视频和音频的压缩算法才是具体的编码。 AVI:音视频交互存储,最常见的音频视频容器。支持的视频音频编码也是最多的 MPG:MPEG编码采用的音频视频容器,具有流的特性。里面又分为 PS,TS 等,PS 主要用于 DVD 存储,TS 主要用于 HDTV。 VOB:DVD采用的音频视频容器格转载 2016-08-31 12:10:57 · 1176 阅读 · 0 评论 -
Android播放器框架分析 1 .
Author:AyaDate:2011-08-03the1soft Java层 要开启一个播放器进行播放, 需要以下几行代码:Java代码MediaPlayer mp = new MediaPlayer(); mp.setDisplay (...); /// 设置播放器Suface mp.setDataSource(PATH_TO_FILE); ///设转载 2016-08-31 12:08:13 · 1491 阅读 · 0 评论 -
ANDROID framework media 框架
在framework中涉及media播放的流程头文件如下:IMediaPlayer.h mediaplayer.h IMediaPlayerClient.h其中IMediaPlayer.h 定义了binder通信相关的接口。定义了:class BnMediaPlayer: public BnInterface{public: virtual status_t onTrans原创 2016-08-31 12:11:39 · 1366 阅读 · 0 评论 -
I,P,B帧和PTS,DTS的关系(转载)
I,P,B帧和PTS,DTS的关系基本概念:I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。P frame: 前向预测编码帧 又称predictive-frame,通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩转载 2016-08-31 12:10:54 · 375 阅读 · 0 评论 -
ES TS PS 流
IP数据报有首部和数据两部分组成的,首部的前一部分是固定长度20字节,是所有IP数据报必须具有的。首部包括:总长度、标识、MF、DF、片偏移。在MPEG-2系统中,信息复合/分离的过程称为系统复接/分接,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送流(TS:TransportStream)。据传输媒体的质量不同,MPEG-2中定义了两种复合信息流:传送流(T转载 2016-08-31 12:06:09 · 561 阅读 · 0 评论 -
TS 流解码过程(转载)
TS 流解码过程:1. 获取TS中的PAT2. 获取TS中的PMT3. 根据PMT可以知道当前网络中传输的视频(音频)类型(H264),相应的PID,PCR的PID等信息。4. 设置demux 模块的视频Filter 为相应视频的PID和stream type等。5. 从视频Demux Filter 后得到的TS数据包中的payload 数据就是 one piece of PES,在TS head转载 2016-08-31 12:05:59 · 1835 阅读 · 0 评论 -
AwesomePlayer 中 媒体流buffer 中的传递
AwesomePlayer 中 媒体流buffer 中的传递OMXCodec::read在前面分析Stagefright 的播放调用流程中play 会启动一个TimedEventQueue 的线程循环反复。先调用onVideoEvent 然后 postEventWithDelay(mVideoEvent, 0)到Queue中。 在onVideoEvent 中调用status_t err =原创 2016-12-14 19:20:16 · 1740 阅读 · 0 评论 -
Android Audio 的播放
Android Audio 的播放 前面已经分析了Video 的播放,现在看下Audio 的播放过程。Audio decode 后的数据是送给AudioFlinger处理, 由AudioFlinger 和硬件打交道。一 prepare 创建AudiO OMXCodecstatus_t AwesomePlayer:: prepare() 的prepare 函数会调用到prepareAsync_l原创 2016-12-14 19:20:48 · 1233 阅读 · 0 评论 -
Android OMX
Android OMX一 OMXClientAwesomePlayer 在创建OMXCodec 的时候调用了mClient.interface()。 mClient 类型为: OMXClient.OMXClient 负责OMX的客户端调用。status_t AwesomePlayer::initVideoDecoder(uint32_t flags) { mVideoSource = OMX原创 2016-12-14 19:21:16 · 1871 阅读 · 0 评论