avformat_find_stream_info获取流信息之设置duration—FFmpeg源码分析
回顾之前的文章《FFmpeg打开输入文件》,对于 mp4 文件, avformat_open_input
函数执行完之后,ic->duration
就有值了。但是对于 flv
文件,必须要调 avformat_find_stream_info()
之后,ic->duration
才能有值。
而且 flv
的 ic->nb_streams
也是在 avformat_find_stream_info()
之后才会有值。
本文主要分析,在输入文件为 FLV 的场景里,avformat_find_stream_info()
函数内部是从哪里读取到文件时长(duration)的 以及 创建 stream 的,如下:
ffmpeg -i juren-30s.flv juren-out.mp4
请参考《用Ubuntu18与clion调试FFmpeg》搭建好调试环境,juren-30s.flv
在 GitHub 里面有的,请自行下载。
还是老套路,直接在 gdb
控制台输入命令来监控 duration
变量,如下:
watcho *0x555
以下是 VIP会员 专属内容,点击购买 FFmpeg原理VIP版