使用 ffmpeg 以最少的资源向多个 RTMP 服务器进行流式传输

使用 ffmpeg 以最少的资源向多个 RTMP 服务器进行流式传输

我尝试使用 OBS 和 ffmpeg 同时向 Facebook 和 Twitch 进行直播。我当前的设置可以正常工作,但问题是资源消耗有点大。

FACEBOOK_KEY="123?ds=1\&s_l=1\&a=ggnore"
TWITCH_KEY="live_123_aBcEdFg"

ARGS="-c:v libx264 -preset medium -maxrate 3500k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv"

CMD="ffmpeg -re -listen 1 -i rtmp://127.0.0.1:5555"
CMD="$CMD $ARGS rtmp://live.twitch.tv/app/$TWITCH_KEY"
CMD="$CMD -r 30 $ARGS rtmp://rtmp-api.facebook.com:80/rtmp/$FACEBOOK_KEY"

eval $CMD

OBS 设置很简单:

视频:720p、2500k 比特率、x264 编码、60FPS

音频:160k AAC。

我试图通过该设置实现两个目标。

  1. 对于 Twitch,ffmpeg 应该只是将源流从 OBS 复制到 Twitch 而无需任何转换,因为 Twitch 接受我从 OBS 传递的内容。
  2. 对于 Facebook,它应该将 FPS 从 60 转换为 30,同样以最少的资源使用量,因为 Facebook 接受来自 OBS 的除 FPS 之外的所有内容。

答案1

ffmpeg -listen 1 -i rtmp://127.0.0.1:5555 -c copy -f flv rtmp://twitch -c:v libx264 -preset medium -maxrate 3500k -bufsize 6000k -r 30 -pix_fmt yuv420p -g 60 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv rtmp//:facebook
  • 不要-re与实时输入流一起使用。文档说可能会造成丢包。

  • 我将-g 50其改为-g 60以更好地适应您的 30 fps。

  • 查看先进先出复用器如果您想添加选项以在发生故障时尝试恢复输出。

相关内容