FFMPEG-libavformat内部缓冲 我使用FFMPEG作为C++音频流和回放应用程序。

FFMPEG-libavformat内部缓冲 我使用FFMPEG作为C++音频流和回放应用程序。,ffmpeg,audio-streaming,libavformat,Ffmpeg,Audio Streaming,Libavformat,我使用avformat\u open\u input功能打开指向外部压缩音频文件的URL,然后使用av\u read\u frame逐步进行流式传输。然后,对于每个数据包,我直接解码数据,并使用OpenAL将其排入音频缓冲区 我的问题是FFMPEG是否在内部预缓冲来自外部URL的压缩数据 即使我不调用av\U read\U frame,FFMPEG是否仍在后台下载数据 还是我有责任维护一个中间缓冲区,在那里我提前下载尽可能多的数据包,以避免音频播放中断 如果是,它在内部缓冲/下载多少?我可以配置

我使用avformat\u open\u input功能打开指向外部压缩音频文件的URL,然后使用av\u read\u frame逐步进行流式传输。然后,对于每个数据包,我直接解码数据,并使用OpenAL将其排入音频缓冲区

我的问题是FFMPEG是否在内部预缓冲来自外部URL的压缩数据

即使我不调用av\U read\U frame,FFMPEG是否仍在后台下载数据

还是我有责任维护一个中间缓冲区,在那里我提前下载尽可能多的数据包,以避免音频播放中断

如果是,它在内部缓冲/下载多少?我可以配置这个吗

我一直在查看文档,但没有找到任何有关这方面的信息

谢谢

更新: 根据这个线程,libav默认情况下应该预缓冲大约5MB,这取决于AVFormatContext::max_analyze_duration。然而,我没有注意到这种行为,如果我改变max_analyze_duration,它似乎不会改变

如果我监控进程的内存消耗,调用avformat_open_input后内存消耗不会增加,如果我模拟慢速网络,av_read_帧会直接停止工作,就像它没有缓冲任何数据包一样