在 FFmpeg 中将“读取率”设置为固定时间长度的高值

在 FFmpeg 中将“读取率”设置为固定时间长度的高值

我正在尝试使用 FFmpeg 将 HLS 直播流输入重新流式传输到 MPEG-TS 直播流输出。它使用以下命令工作,但有一个小问题

命令:

ffmpeg -readrate 1 -fflags nobuffer -live_start_index -1 -http_persistent 0 -i <input> -map 0:v:0 -c:v libx264 -preset veryfast -maxrate 1800k -bufsize 3000k -vf "scale=1920:1080,format=yuv420p" -map 0:a:0 -c:a aac -ar 44100 -f mpegts <output>

问题:输出比输入延迟了大约 10 秒。似乎有一种方法可以解决这个问题,即将值设置-readrate为略大于 1。然而,这会导致输出在几秒钟后出现故障。然后故障会一直存在。进入“故障”期所需的时间与值成反比。-readrate这是完全合乎逻辑的,也是意料之中的。

现在我正在尝试找到一种方法来摆脱这些故障,因此问题是:

有没有办法-readrate只指定直播开始的几秒的值?这样,一旦输出赶上输入,-readrate就应该回到 1。

谢谢

编辑:添加-tune zerolatency确实有点帮助,但仍然有不必要的延迟。有什么办法可以消除它吗?

相关内容