ffmpeg
Ven_J
这个作者很懒,什么都没留下…
展开
-
ffplay源码剖析(3.2.4 + sdl2)(1):函数调用流程图
最近在学习ffplay的源码知识,网上关于ffplay的都是老版本的基于sdl1.x版本的,于是自己结合自己的理解分析了一下ffpaly3.2.4(基于sdl2)的源码,并记录下来供自己以后查阅。如果有理解错误,还请指正。一、总体框架:ffmpeg3.2.4版本中的ffplay的函数调用图如下所示:avdevice_register_all()这ffmpeg设备进行初始化与注册原创 2017-07-05 11:54:28 · 1097 阅读 · 1 评论 -
FFmpeg中AVPacket和AVFrame关系
最近在研究ffplay的源码,ffplay中有两个队列一个PacketQueue, 一个FrameQueue,对这两个队列之间的关系不是很清楚。于是对这两个结构进行了深入的研究。AVPacket结构用于存储压缩的数据,分别包括有音频压缩数据,视频压缩数据和字幕压缩数据。它通常在解复用操作后存储压缩数据,然后作为输入传给解码器。或者由编码器输出然后传递给复用器。对于视频压缩数据,一个AVPa原创 2017-07-10 09:23:07 · 10949 阅读 · 0 评论 -
ffplay源码剖析(3.2.4 + sdl2)(2):初始化与解复用
接上一篇继续阅读ffplay源码,前一篇从总体上了解了ffplay的整个框架:解复用,解码,显示播放。这一篇就讲第一个解复用。int main(int argc, char **argv){ int flags; VideoState *is; /* register all codecs, demux and protocols */#if CONFIG_AVD原创 2017-07-19 17:26:20 · 1277 阅读 · 1 评论 -
ffplay源码剖析(3.2.4 + sdl2)(3):解码
上一篇讲到ffplay的初始化和解复用,在解复用过程中创建了三个解码线程:音频、视频和字幕解码线程。同时将解复用的数据包分别添加到了音频包队列audioq、视频包队列videoq和字幕包队列subtitleq中。今天要讲的是从这三个包队列中分别进行解码,然后将解码出来的数据帧添加到对应的帧队列。显示线程就是从帧队列中取出数据帧然后进行显示。read_thead函数中用于解码的函数是stream原创 2017-08-05 20:09:51 · 1092 阅读 · 0 评论