gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:30:11 43 4
gpt4 key购买 nike

备注 : 我知道 ffmpeg 和 libav 是 different libraries .这是双方共同的问题。

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

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

但是,对于 RTSP 网址,这是 not supported .

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

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

  • 这些都不是真正的解决方案。根据我的发现,应该可以使用 API 的 AVOptions 查找并设置此值。否则, AVDictionary .

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

    更新:

    感谢 Libav 开发人员 @lu_zero ,以下补丁已提交给 Libav 以解决此主题:
  • Add a buffer_size option
  • Map the urloptions to AVOptions

  • 这应该提供有关如何实现这些的提示,但这些还不能通过官方稳定的 API 获得。

    最佳答案

    仅供引用,最新的 ffmpeg2.8.5 已经有这个选项。
    我用它来设置buffer_size

    av_dict_set(&options, "buffer_size", "655360", 0);

    我得到了这个输出:

    [udp @ 0xb4945090] 尝试将接收缓冲区设置为 655360,但最终设置为 327680
    经过一番搜索,我跑了
    echo 2097152 > /proc/sys/net/core/rmem_max

    修复警告

    关于ffmpeg - 在 FFmpeg/LibAV 中设置 RTSP/UDP 缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29075467/

    43 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com