假设通过网络流式传输,如何在 cli 中运行时提高 ffmpeg 流的速度



我想提高播放速度,以便我可以赶上最新的可用音频数据包。在 archlinux 上使用 PulseAudio 作为服务器,客户端使用 Windows,尽管这真的无关紧要。

发出的服务器命令:

pactl load-module module-null-sink sink_name=remote
ffmpeg -f pulse -i "remote.monitor" -ac 2 -acodec pcm_s16le -ar 48000 -f s16le "udp://{LAN_IP_OF_CLIENT}:{PORT}"

发出客户端命令:

ffplay.exe -nodisp -ac 2 -acodec pcm_s16le -ar 48000 -analyzeduration 0 -probesize 32 -f u8 -i udp://0.0.0.0:{PORT}

当前的设置是使用 pavucontrol 将音频输出从 Firefox 放到 pactl 接收器,并保持 cli 应用程序在某处运行。通常,网络速度很慢,音频会越来越明显地滞后于屏幕上的内容。当我在服务器和客户端上重新执行命令时,它会赶上。如果可能的话,我想跟上正在广播的任何内容 - 我认为最简单的解决方案是将播放速度提高到比发送音频快一点的速度,以便在中长期内它会自行修复。

如果只有一种方法可以丢弃不是最新音频数据包并在可能的情况下跳转,我更喜欢将其作为解决方案-我对ffmpeg知之甚少,无法知道这是否可以轻松做到。

不是一个理想的解决方案,但可以使用-filter:a "atempo:{speed_here}"标志来提高速度。

https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video

仍然不知道如何从cli界面进行操作。

最新更新