FFmpeg / avidemux: quadros B compactados

12

Estou transcodificando alguns dos meus vídeos antigos mpeg4 (em contêineres avi) para h.264 com FFmpeg. Basicamente

ffmpeg -i input.avi -c:v libx264 [x264 settings] -c:a libfdk_aac [aac settings] output.mp4

Ao fazer isso, mpeg4emite o seguinte aviso

O vídeo usa uma maneira não-padrão e desperdiçadora de armazenar quadros B ('quadros B compactados'). Considere usar uma ferramenta como o VirtualDub ou o avidemux para corrigi-lo.

Sei que ainda posso transcodificar com êxito, mas pelo aviso não está claro para mim se a qualidade do vídeo h.264 resultante será afetada .

Assim,

  • Como me preocupo apenas com a qualidade (e o tamanho, desejo minimizar o tamanho dos meus dispositivos móveis, e é por isso que também estou usando a veryslowpredefinição) do vídeo h.264 de saída, devo me preocupar com o tamanho B- quadros?

  • Se devo, como faço para corrigi-los com o avidemux? (Eu já tentei folhear o manual.)

4ae1e1
fonte

Respostas:

15

Os quadros B são um tipo de quadro usado na compactação de vídeo para representar os quadros de um vídeo. Os quadros B podem usar as informações dos quadros anteriores e futuros para representar cada quadro de vídeo.

Vídeos antigos codificados em DivX geralmente usam um método feio chamado fluxo de bits compactado, que coloca vários quadros de vídeo em um único bloco AVI. O fluxo de bits compactado não é padrão MPEG-4, usa mais espaço, requer mais energia da CPU para codificar / decodificar e (o mais importante) pode causar problemas se copiado para outro tipo de contêiner. Este é o principal motivo do aviso.

Como você está recodificando o vídeo em vez de apenas copiá-lo, você deve ficar bem. Se você quiser manter o vídeo original, mas copiá-lo para outro tipo de contêiner (por exemplo, MP4 ou MKV), é melhor descompactar os quadros B primeiro usando o filtro FFmpeg mpeg4_unpack_bframes.

Você pode descompactar os quadros B com algo simples como

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
xiii1408
fonte