Streaming para vários servidores RTMP com ffmpeg com recursos mínimos

3

Usando o OBS e o ffmpeg, estou tentando transmitir para o Facebook e o Twitch ao mesmo tempo. Minha configuração atual funciona, no entanto, a questão é que é um recurso com muita fome.

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

As configurações da OBS são diretas:

Vídeo: 720p, taxa de bits de 2500k, codificação x264, 60FPS

Áudio: 160k AAC.

Eu tenho dois objetivos que estou tentando realizar com a configuração.

  1. Para o Twitch, o ffmpeg deve simplesmente copiar o fluxo de origem do OBS para o Twitch sem qualquer conversão, pois o Twitch aceita o que estou passando do OBS.
  2. Para o Facebook, ele deve converter o FPS de 60 para 30, novamente com o uso mínimo de recursos, já que o Facebook aceita tudo que vem do OBS, além do FPS.
por Dustin 01.07.2017 / 19:24

1 resposta

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
  • Não use -re com fluxos de entrada ao vivo. Documentação diz que pode causar perda de pacotes.

  • Alterei -g 50 para -g 60 para melhor adequar seus 30 fps.

  • Veja o fifo muxer se quiser adicionar opções para tentar recuperar o resultado em caso de falha.

por 01.07.2017 / 21:56