先上使用方法:
cpp
codec_ctx->flags |= AVFMT_FLAG_NOBUFFER;
AVFMT_FLAG_NOBUFFER 标记如果没有设置,就会导致打开时探测的数据包丢AVFormatContext的缓存区中。
播放的时候,就从这些数据包开始,但是整个探测过程时间可能较长,缓存区数据没有播放出来,而是等到avformat_find_stream_info等操作结束后才去做播放, 如果没有设置nobuffer,这几秒数据在缓存着了,我们调用av_read_frame就先从这两秒开始读取数据 ;如果设置了nobuffer,则这2秒数据是被直接扔掉的,所以加了这个参数后,打开时间就会缩短。