web-dev-qa-db-ja.com

最小限のリソースで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

オーディオ:160kAAC。

セットアップで達成しようとしている2つの目標があります。

  1. Twitchの場合、ffmpegは、ソースストリームを変換せずにOBSからTwitchにコピーするだけです。Twitchは、OBSから渡されるものを受け入れます。
  2. Facebookの場合、FacebookはFPS以外のOBSからのすべてを受け入れるため、リソース使用量を最小限に抑えながら、FPSを60から30に変換する必要があります。
3
Dustin
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を使用しないでください。 Documentation は、パケット損失を引き起こす可能性があることを示しています。

  • 30 fpsに合うように、-g 50-g 60に変更しました。

  • 失敗した場合に出力の回復を試みるオプションを追加する場合は、 fifo muxer を参照してください。

2
llogan