我的目标是找出使用 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...好吧,我提供的视频是付费服务,而且看起来不专业,因此这将是我的最后手段。
谢谢您的帮助/建议。