Há algumas coisas que gostaria de destacar:
-
Atualize sua versão do FFmpeg. Está terrivelmente desatualizado. Execute
brew update
e, em seguida,brew upgrade
para fazer isso. O FFmpeg 0.9 introduziu uma nova maneira de especificar presets de codificação, e o que você está usando atualmente é apenas legado. -
Nunca use
sameq
. não significa a mesma qualidade . Basicamente significa, usar as mesmas opções matemáticas que foram usadas no vídeo de entrada, o que de fato drasticamente reduz a qualidade.
Onde seu problema é…
Vamos ao assunto em questão. O vídeo de saída tem uma taxa de bits de ~ 200 kBit / s, mas sua entrada tem 14823 kBit / s. É por isso que parece tão ruim. Agora depende do que você quer fazer. Se você quiser apenas mudar o container para MP4, use -vcodec copy
e termine com isso.
Se você quiser alterar o tamanho do quadro, use algo como o seguinte:
ffmpeg -i out_poem_big.mpg -c:v libx264 -preset slow -crf 22 -s 1280x720 -c:a libfaac -b:a 128K outvideo.mp4
O que isso significa?
-
O aspecto mais importante aqui é
-crf 22
, o fator de taxa constante. Diminui para melhor qualidade, aumenta para pior qualidade. Veja esta resposta para uma explicação mais completa do que ela significa.Se você precisar de uma taxa de bits de saída constante, substitua
-crf 22
por-b:v 1M
, por exemplo. Note, porém, que a taxa de bits constante resulta em pior qualidade devido à forma como o x264 lida com ele. -
-c:v
é usado em vez de-vcodec
. Isso significa o mesmo, mas este é o formato padrão e eu prefiro ficar com isso. Além disso, queremos explicitamentelibx264
, pois todos os outros codificadores provavelmente reduzirão a qualidade obtida para o tamanho do arquivo (como o MPEG-4 Parte II,-c:v mpeg4
). -
-preset slow
usará uma variante lenta de codificação com otimização mais eficiente de bit. -
Especifiquei o codec de áudio e a taxa de bits de áudio. Altere de acordo, dependendo do que você deseja usar.
-
Veja estas respostas para mais explicações sobre a codificação do FFmpeg: