ffmpeg 使用 UDP 输出时出现高数据包丢失

ffmpeg 使用 UDP 输出时出现高数据包丢失

我正在尝试使用 ffmpeg 将我们的 hls 流转码为 UDP 多播流,但丢失的数据包太多。

我正在使用以下命令进行转码

ffmpeg \
-loglevel warning \
-nostats \
-re \
-max_reload 2 \
-i "http://hls-server/stream/playlist.m3u8" \
-c:v copy \
-c:a copy \
-f mpegts \
-flush_packets 0 \
"udp://remote-ip:40001?pkt_size=1316&buffer_size=8388608"

在远程主机上,我正在运行检查 mpegts 标头连续性计数器的客户端,并且每分钟都会出现几次错误。

我已经使用 iperf - 100 mb/s 测试了服务器之间的链接半小时,没有丢失一个数据包。

我让这个测试与 ffmpeg 并行运行,并且 ffmpeg 流出现了前面提到的数据包丢失,但是 iperf 没有出现数据包丢失。

我已经尝试调整 net.core.rmem_max 和 net.core.wmem_max,但没有成功。我尝试增加网卡缓冲区,ethtool -G tx xxx也没有成功。我已经尝试了多个版本的 ffmpeg 3.3.9、3.4.5、4.0.3 和 4.1。

有人知道什么原因导致此问题以及如何解决它吗?

相关内容