ffmpeg 流式传输效率非常低

ffmpeg streaming very inefficiently

基本上我正在做的是通过 streamlink 获取 twitch 流并通过 ffmpeg 将其输出到 youtube 流。在查找如何执行此操作时,我(诚然)只是复制了文档中的第一个命令并稍微调整了一下,最后得到了这个命令:

 streamlink -O twitch.tv/boxbox best | ffmpeg -i pipe:0 -s 1920x1200 -framerate 30 -vcodec libx264 -preset veryfast -s 1280x720 -threads 0 -f flv "rtmp://a.rtmp.youtube.com/live2/-------------"

运行 这个命令有效,youtube 上出现了一个流,但它很慢。控制台告诉我,我正在以一致的 9fps 进行流式传输,这并不是我真正想要的。由于这是我第一次使用 ffmpeg,所以我真的不知道是什么原因造成的。它甚至可能是我的服务器,因为我 运行 是一个非常便宜的 debian VPS。这是可以预料的还是我可以调整它以更好地播放它?

ffmpeg streaming very inefficiently

Since this is my very first experience with ffmpeg I dont really know what is causing this.

是什么让您认为它效率低下?您正在重新编码视频。这需要大量 CPU.

It might even be my server since I'm running a pretty cheap debian VPS.

很有可能。

无论如何,你有几个选择。最好的办法是不要重新编码视频。如果 Twitch 为您提供 H.264 和 AAC 音频,请使用 -vcodec copy -acodec copy.

您可以做的另一件事(虽然在 VPS 上不太可能)是强制硬件加速。这将导致一些平庸的视频质量(你可能并不关心,因为你已经在重新编码以前编码的视频)但 运行 不会对 CPU 产生重大影响。 FFmpeg 支持大量 GPU。您必须选择一个与您使用的任何硬件兼容的。

你应该做的不是中继流,而是从原始源流多个流。这将帮助您避免重新编码造成的质量损失。