FFMPEG 和比特率

FFMPEG 和比特率

我的目标是找出使用 FFMPEG 转发/重新流式传输 m3u8 格式视频的最有效方法。我不介意承担 CDN 或额外服务器的成本,但最终目标是按照以下规格交付内容;

  • 1280x720
  • 30 帧每秒
  • 1Mbit/s(1,000Kbits)

在测试阶段我使用以下占位符:

Input: https://adultswimhls-i.akamaihd.net/hls/live/238460/adultswim/main/1/master.m3u8
Output: rtmp://a.rtmp.youtube.com/live2/xfiles

我当前正在使用的命令是;

ffmpeg -re -i https://adultswimhls-i.akamaihd.net/hls/live/238460/adultswim/main/1/master.m3u8 -c:a aac -c:v copy -f flv rtmp://a.rtmp.youtube.com/live2/xfiles

当前资源使用情况

在对 SuperUser 和其他一些领域进行一些研究之后,我相信该-c:v copy参数有效地反映了输入源,这意味着我的服务器没有重新编码,因此 CPU 使用率如此之低。

第二个我使用类似的命令;

ffmpeg -re -i https://adultswimhls-i.akamaihd.net/hls/live/238460/adultswim/main/1/master.m3u8 -c:a aac -b:v 1M -b:a XXX -r 30 -s 1280x720 -f flv rtmp://a.rtmp.youtube.com/live2/xfiles (Not tested if this actually works, but just an example)

我注意到第一个命令的 CPU 使用率约为 5% 很快就变成了 60% 以上,我猜那是因为我实际上正在重新编码。我正在获取输入流,将所述变量应用于它,然后重新编码并将其推送到目的地,这是可以理解的,升级我的服务器不是问题,但我必须找出我是否搞砸了什么。这是我第一次使用 FFMPEG,我已经做了所有我能理解的研究,因此我要求找一个懂行的人。我的想法是:

  • 找到一个提供编码的 CDN,等待 BelugaCDN 的回复,我知道有一个 CDN 提供商以每月 10 美元的价格向我提供这项服务,这很不错,但我忘了是哪一家了。

  • 寻求帮助来优化第二个命令或找到某种方法来使用-c:v copy并将比特率降低到 1Mbit/s,我认为这是不可能的。

  • 研究是否有可能(不确定是否有人知道这一点或者它更多地基于服务)在使用 CDN 时输入原生比特率流但限制出站比特率以便观众不会消耗疯狂的 5Mbit/s 带宽,因为流本身不需要那么高的质量。

  • 升级我的服务器,以便我可以同时处理最多 3 个流并进行重新编码,如果可以的话,我应该追求什么样的规格。

现在我知道您可能正在考虑只使用免费的 YouTube/Twitch...好吧,我提供的视频是付费服务,而且看起来不专业,因此这将是我的最后手段。

谢谢您的帮助/建议。

相关内容