最近开发FFmpeg接收海康摄像头的推流视频,在打开视频时延时比较大,在5秒左右,下面分享一下优化的过程。
优化前后的效果比较。
avformat_find_stream_info用于分析流信息。在初始信息不足的情况下,avformat_find_stream_info接口需要在内部调用read_frame_internal接口读取流数据,然后再分析后,设置核心数据结构AVFormatContext。由于需要读取数据包,avformat_find_stream_info接口会带来很大的延迟,降低该接口的延迟的具体操作:
通过设置AVFormatContext的probesize成员,来限制avformat_find_stream_info接口内部读取的最大数据量,代码如下:
avFormatContext->probesize = 4096;
经过测试,优化后,打开视频时延降低到了1秒左右。
如果有相关开发经验的可以交流:
Q_Q 766813161