A codificação H264 com o windows ffmpeg resulta, nos primeiros segundos, em “blocky”

3

Estou usando o seguinte código para transcodificar um 1264 x 720 H264 mp4 de alta qualidade de 10mbps em um H264 mp4 de qualidade inferior com nosso logotipo com marca d'água no vídeo.

ffmpeg.exe -i test.mp4 -i watermark.png -filter_complex overlay="(main_w)-(overlay_w):(main_h)-(overlay_h)" -c:v libx264 -profile:v main -preset slow -b:v 400k -r 30 -c:a libvo_aacenc -b:a 128k -s 1280x720 -movflags faststart -f mp4 "test-done.mp4"

Essas configurações funcionam maravilhosas e depois de muitos ajustes para obter esse código, ele produz vídeos nítidos e claros para alta ação, fotos, muitas cores diferentes, etc.

O problema é que nos primeiros segundos do vídeo, o fluxo é muito grande. Então, após cerca de 3-5 segundos, o fluxo "se corrige" e o vídeo fica nítido e claro. Diminuir o tempo de renderização alterando a predefinição para "veryslow" apenas melhora marginalmente os primeiros segundos, mas aumenta drasticamente o tempo de renderização.

Como posso dizer ao ffmpeg para prestar mais atenção no início do vídeo? Eu tenho que recorrer a codificação de 2 passagens? Eu não quero quase dobrar o tempo de renderização porque apenas os primeiros segundos do vídeo têm esse problema. Alguém poderia modificar meu código para fornecer uma melhor codificação no início do arquivo?

Para referência, os mp4s originais de 10mbps são codificados pelo Premiere 5.0 e não têm bloqueios no começo. Isso é algo que só testemunhei com o ffmpeg depois da transcodificação.

    
por degenerate 30.05.2014 / 18:50

1 resposta

2

Obrigado @LordNeckbeard pela solução. Parece que o ffmpeg codifica melhor o x264 usando -crf em vez de -v:b .

Então -crf 26 funcionou perfeitamente para eliminar o bloqueio no início do processo de codificação de vídeo.

Meu código final é agora:

ffmpeg.exe -i test.mp4 -i watermark.png -filter_complex overlay="(main_w)-(overlay_w):(main_h)-(overlay_h)" -c:v libx264 -profile:v main -preset slow -crf 26 -r 30 -c:a libvo_aacenc -b:a 128k -s 1280x720 -movflags faststart -f mp4 "test-done.mp4"
    
por 20.06.2014 / 17:18