小编Ser*_*rco的帖子

在 FFmpeg/LibAV 中设置 RTSP/UDP 缓冲区大小

注意:我知道 ffmpeg 和 libav 是不同的库。这是双方共同的问题。

免责声明:重复的SO 问题标记为已回答但实际上没有给出正确的解决方案。


UDP 缓冲区大小不足会导致多个高分辨率视频流的流中断。在 LibAV/FFMPEG 中,可以通过向其附加一些选项 (buffer_size)来设置 udp url (udp://...) 的 udp 缓冲区大小。

但是,对于 RTSP url,这是不支持的

这些是我找到的唯一解决方案:

  • 重建 ffmpeg/libav 更改udp.c源文件中的UDP_MAX_PKT_SIZE
  • 通过转换一些私有结构,使用讨厌的 hack来查找和修改所需的值。
  • 使用不同的解码库(针对上述相关 SO问题的建议解决方案)。

这些实际上都不是解决方案。根据我的发现,应该可以使用 APIAVOptions来查找和设置此值。否则,AVDictionary

在 libav 或 ffmpeg 的整个文档中很难找到如何设置这些。

更新:

感谢 Libav 开发人员@lu_zero,以下补丁已提交给 Libav 来解决此主题:

这应该提供有关如何实现这些的提示,但这些仍然无法通过官方稳定 API 获得。

udp ffmpeg buffer-overflow rtsp libav

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

buffer-overflow ×1

ffmpeg ×1

libav ×1

rtsp ×1

udp ×1