Ajustando a taxa de quadros-chave ffmpeg / v4l2 Logitech C920 para o YouTube ao vivo

1

Estou tentando transmitir vídeos de um Logitech c920 para o YouTube ao vivo via ffmpeg. Eu tenho uma configuração que funciona no Twitch, mas o YouTube rejeita o fluxo com a mensagem:

Please use a keyframe frequency of four seconds or less. Currently, keyframes are not being sent often enough, which will cause buffering. The current keyframe frequency is 9.9 seconds.

Meu comando é assim:

ffmpeg \
    -ar 44100 \
    -acodec pcm_s16le \
    -f s16le \
    -ac 2 -i /dev/null \
    -f v4l2 \
    -codec:v h264 \
    -framerate 60 \
    -video_size 1920x1080 \
    -i /dev/video0 \
    -c:v copy \
    -c:a aac \
    -f flv \
    -strict -2 \
    rtmp://a.rtmp.youtube.com/live2/$STREAM_KEY

E nos registros, o ffmpeg dá esta mensagem:

[video4linux2,v4l2 @ 0x2965ec0] The driver changed the time per frame from 1/60 to 1/30

Alguém sabe uma maneira de forçar a câmera, v4l2 ou ffmpeg a fornecer quadros-chave a uma taxa adequada?

Obrigado.

    
por Dan 25.01.2017 / 07:40

1 resposta

0

Consegui fazê-lo funcionar no YouTube Live com o seguinte comando:

ffmpeg -re-ar 44100 -ac2 -acodec pcm_s16le -f s16le -ac2 -i / dev / zero -f v4l2 -input_format h264 -i / dev / video0 -codec: v cópia -acodec aac -ab 128k -g 50 -strict experimental -f flv rtmp: //a.rtmp.youtube.com/live2/REMOVED

Eu posso definir a resolução fazendo: v4l2-ctl --device = / dev / video0 --set-fmt-video = largura = 1280, altura = 720

A saída do ffmpeg se parece com: Stream # 1: 0: Vídeo: h264 (Baseline Restrita), yuvj420p (pc), 320x240 [SAR 1: 1 DAR 4: 3], -5 kb / s, 30 fps, 30 tbr, 1000k tbn, 60 tbc

Eventualmente, o YouTube reclama dos quadros-chave, mas consegue manter um fluxo decente em 1080p.

    
por 26.01.2017 / 07:24