注意:我知道ffmpeg和libav是不同的库。这是两者共同存在的问题。
免责声明:这是一个被标记为已回答,但实际上没有给出适当解决方案的SO问题的副本。
免责声明:这是一个被标记为已回答,但实际上没有给出适当解决方案的SO问题的副本。
UDP缓冲区大小不足会导致多个高分辨率视频流中断。在LibAV/FFMPEG中,可以通过附加一些选项(buffer_size)来设置udp url(udp://...)的udp缓冲区大小。
然而,对于RTSP url,这是不支持的。
以下是我找到的唯一解决方案:
- 重新构建ffmpeg/libav,更改udp.c源文件中的UDP_MAX_PKT_SIZE。
- 使用恶劣的方法查找和修改所需值,通过转换某些私有结构。
- 使用不同的解码库(提出了上述相关SO 问题的解决方案)。
这些都不是实际的解决方案。从我找到的资料来看,应该可以使用API的AVOptions
来查找和设置此值。或者,使用AVDictionary。
在libav或ffmpeg的文档中很难找到如何设置这些内容。
更新:
以下补丁已提交给Libav,处理了这个主题,感谢Libav开发人员@lu_zero:
这应该提供了如何实现这些内容的提示,但这些还没有通过官方稳定的API进行发布。