FFmpeg: Mantendo a qualidade durante a conversão [duplicado]

13

Eu gostaria de converter uma boa quantidade de arquivos wmv, mpg e avi (com diferentes codificações de áudio e vídeo) para mp4 / x264 / aac com qualidade equivalente. Eu fiz alguns testes com o seguinte comando:

ffmpeg.exe -i "test.avi" -c:v libx264 -c:a libvo_aacenc "test.mp4"

(Como você pode ver, omiti opções que especificam a taxa de bits e a qualidade de áudio e vídeo)

Usando este comando, o FFmpeg preserva automaticamente as dimensões do vídeo, mas ainda não sei como ele lida com as coisas como a taxa de bits quando elas são omitidas? Qual é a melhor maneira de manter a qualidade de um vídeo ao convertê-lo em um formato e codec diferente?

Estou usando o Windows 7 de 64 bits e o ffmpeg-20121230-git-518239c-win64-shared

    
por x74x61 30.12.2012 / 12:25

1 resposta

16

O FFmpeg define a opção -crf como 23 por padrão.

Tente:

ffmpeg.exe -i "test.avi" -c:v libx264 -crf 20 -c:a aac -strict -2 "test.mp4"

A opção CRF define a qualidade de codificação. A taxa de bits varia conforme necessário para fornecer uma qualidade consistente em todo o vídeo. 51 sendo o pior a 0 sendo o melhor - sem perdas.

Costumo definir todos os meus códigos como 20, o que é o padrão do Handbrake, e estou satisfeito com a qualidade. Sugiro brincar com esse valor para encontrar um nível de qualidade que seja aceitável para você.

Você pode querer usar as opções -ss e -t para criar codificações de teste curtas. -ss sendo a hora de início e -t sendo a duração - ambos em segundos. Você provavelmente não precisa codificar o vídeo inteiro para determinar o que é aceitável.

Para criar um clipe de 1 min começando 1min no vídeo:

ffmpeg.exe -i "test.avi" -c:v libx264 -crf 20  -c:a aac -strict -2 -ss 60 -t 60 "test.mp4"
    
por 30.12.2012 / 12:50