Tente isto:
ffmpeg -f x11grab -video_size 1280x720 -framerate 60 -i :0.0 -f pulse -i default \
-c:v libx264 -preset fast -b:v 4500k -bufsize 9000k -maxrate 5000k -g 120 \
-pix_fmt yuv420p -c:a aac -b:a 128k -f flv "rtmp://foo/your_stream_key"
-
Veja a saída do console durante o processo de codificação. Se a saída fps for menor que
-framerate
, diminua-framerate
e / ou use um-preset
mais rápido. Use o-preset
mais lento que ainda fornece a taxa de quadros de saída desejada. -
-b:v
é aproximadamente determinado por-video_size
. Veja Figura 3 em Configurações de Codificação Recomendadas para HTTP Live Streaming Media para algumas taxas de bits sugeridas (mas experimente e veja o que funciona melhor para você).-bufsize
é determinado por-b:v
. Neste exemplo, um buffer de 2 segundos é usado, então-bufsize
é 2x-b:v
. -
-g
deve ser 2x-framerate
. -
Se você obtiver "
The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it
", seuffmpeg
é antigo e você deve atualizar em vez de usar-strict -2
. O codificador FFmpeg AAC foi melhorado e não é mais considerado experimental, mas sua versão não possui essas melhorias. O método mais fácil de atualizar é baixar baixar um% binárioffmpeg
e movê-lo para/usr/local/bin
(ou~/bin
but you ' Será necessário fazer login novamente ou executarsource ~/.profile
para que funcione).
Veja também:
- documentação do dispositivo de entrada de vídeo x11grab
- documentação do dispositivo de entrada de áudio por pulso
- Wiki do FFmpeg: H.264
- Wiki do FFmpeg: codificando sites de streaming
- Capturando áudio da área de trabalho com o ffmpeg