read_frame_internal读取AVPacket—FFmpeg源码分析
read_frame_internal()
函数里面的逻辑分为两块,如下:
1,不需要对 packet 进行 parse 解析操作
这是比较常用的场景,MP4,FLV 都是不需要 进行 parse
解析的。这种情况下,read_frame_internal()
本身没有太多逻辑的,就是直接调 AVInputFormat
的 read_packet
接口读取到 packet
,然后就直接返回了。
MP4 与 FLV 场景下的 st->need_parsing
跟 st->parser
变量都是 0 ,所以立即设置了 got_packet = 1
,不会跑进去 parse 的逻辑。
相关命令如下:
ffmpeg -i juren-30s.mp4 -an out.flv -y
ffmpeg -i juren-30s.flv -an out.flv -y
2,需要对 packet 进行 parse 解析操作
以下是 VIP会员 专属内容,点击购买 FFmpeg原理VIP版