Eu tenho um vídeo que gostaria de transmitir ao vivo no YouTube usando o ffmpeg. O vídeo não tem áudio, mas visuais bastante ocupados (muitas cores que mudam rapidamente). Estou tentando transmitir a 720p, mas sempre que vejo a transmissão ao vivo, não é fácil. Há muita gagueira e buffer. No entanto, depois que a transmissão ao vivo termina e eu assisto ao vídeo não mais ao vivo, todos os quadros estão presentes e suaves.
Isso inicialmente me fez pensar que acabei de ver problemas ao assistir streaming ao vivo, mas não tenho problemas para assistir a outros streams de 720p ou superiores. Além disso, ao transmitir as partes complexas do meu vídeo, o ffmpeg "time = ..." diminui, o bitrate dispara e o fps também cai.
Isso me faz acreditar que o problema é com o comando ffmpeg que estou usando para enviá-lo. Quando eu uso o mesmo comando para enviar um vídeo mais simples (todo branco com um quadro preto), não tenho nenhum problema.
Aqui está o meu script ffmpeg:
INPUT=""
# Read input as native framerate
INPUT="$INPUT -re"
# Input file
INPUT="$INPUT -i input.flv"
AUDIO=""
# Read input as native framerate
AUDIO="$AUDIO -re"
# Audio codec (lavfi is better for bandwidth?)
AUDIO="$AUDIO -f lavfi"
# Input (dummy)
AUDIO="$AUDIO -i aevalsrc=0"
OUTPUT=""
# Video codec
OUTPUT="$OUTPUT -c:v libx264"
# Video resolution
OUTPUT="$OUTPUT -video_size 1280x720"
# Pixel format
#OUTPUT="$OUTPUT -pix_fmt yuv420p"
# Attempt to force bitrate at 1500k
OUTPUT="$OUTPUT -minrate 150k -maxrate 150k -b:v 150k"
# frames per second
OUTPUT="$OUTPUT -r 25"
# Audio codec
OUTPUT="$OUTPUT -c:a libvo_aacenc"
# GOP size (calculates intraframes)
OUTPUT="$OUTPUT -g 30"
# Format
OUTPUT="$OUTPUT -f flv"
# Allow use of "experimental" encoders
OUTPUT="$OUTPUT -strict experimental"
# Testing
OUTPUT="$OUTPUT rtmp://a.rtmp.youtube.com/live2/xxx"
É possível usar o ffmpeg para enviar este tipo de vídeo sem buffer?