Ser*_*rco 7 udp ffmpeg buffer-overflow rtsp libav
注意:我知道 ffmpeg 和 libav 是不同的库。这是双方共同的问题。
免责声明:重复的SO 问题标记为已回答但实际上没有给出正确的解决方案。
UDP 缓冲区大小不足会导致多个高分辨率视频流的流中断。在 LibAV/FFMPEG 中,可以通过向其附加一些选项 (buffer_size)来设置 udp url (udp://...) 的 udp 缓冲区大小。
但是,对于 RTSP url,这是不支持的。
这些是我找到的唯一解决方案:
这些实际上都不是解决方案。根据我的发现,应该可以使用 APIAVOptions来查找和设置此值。否则,AVDictionary。
在 libav 或 ffmpeg 的整个文档中很难找到如何设置这些。
更新:
感谢 Libav 开发人员@lu_zero,以下补丁已提交给 Libav 来解决此主题:
这应该提供有关如何实现这些的提示,但这些仍然无法通过官方稳定 API 获得。
小智 5
仅供参考,最新的 ffmpeg2.8.5 已经有这个选项。我用它来设置buffer_size
av_dict_set(&options, "buffer_size", "655360", 0);
Run Code Online (Sandbox Code Playgroud)
我得到了这个输出:
[udp @ 0xb4945090] 试图将接收缓冲区的大小设置为 655360,但最终只设置为 327680 经过一些搜索我运行
echo 2097152 > /proc/sys/net/core/rmem_max
Run Code Online (Sandbox Code Playgroud)
修复警告
| 归档时间: |
|
| 查看次数: |
19472 次 |
| 最近记录: |