Como posso definir um nível de perfil h.264 com o ffmpeg?

12

Eu tenho um filme (m4v / h.264 / AAC) que funciona bem no meu Mac, mas eu descobri recentemente que não vai jogar no meu Apple TV3. Depois de olhar as propriedades deste arquivo de filme, eu vejo que ele tem um perfil Alto, mas o Apple só suporta alto até 4.10. Eu acho que a única propriedade que está tornando este vídeo incompatível é a taxa de bits máxima de vídeo, todas as outras propriedades parecem ser suportadas em [email protected].

Como posso usar o ffmpeg para fazer o downgrade desse vídeo para [email protected]?

Ou eu tenho que alterar a propriedade real (taxa máxima de bit) que faz este vídeo 4.1 em vez de 4.0? Estou preocupado que, se eu alterar a taxa de bits, embora o arquivo seja compatível com [email protected], ele ainda será 'marcado' como [email protected] e, portanto, ainda não será reproduzido na minha Apple TV3.

    
por Sam 11.03.2013 / 08:37

2 respostas

18

Ao codificar com libx264 , você pode definir o perfil e nível H.264 com:

  • -profile:v - um dos high , main ou baseline (e outros, mas isso é irrelevante aqui)
  • -level:v - conforme definido no Anexo A da norma H.264, por exemplo, 4.0 .

Por exemplo:

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy output.mp4

Aqui acabamos de copiar o fluxo de áudio, já que ele não será afetado.

A saída terá o perfil e o nível corretos definidos em seus metadados. Você pode verificar isso enquanto codifica, onde x264 diz algo como:

[libx264 @ 0x7fb26103a000] profile High, level 4.0
O

MediaInfo também pode ajudá-lo a analisar os detalhes do contêiner e do codec.

É claro que a reencodificação do vídeo prejudicará sua qualidade, já que você está aplicando novamente uma conversão com perdas. Tente definir a opção -crf para influenciar o parâmetro de qualidade constante. O valor padrão aqui é 23, enquanto valores entre 18 e 28 são considerados normais. Lower significa melhor qualidade. Se sua entrada tiver uma taxa de bits de até 65.000 kBit / s, é provável que ela ainda pareça boa depois da conversão.

    
por 11.03.2013 / 09:06
0

Em referência ao seu comentário , tente este comando:

ffmpeg -i input.mp4 -map 1 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy \
# copies all global metadata from input.mp4 to output.mp4
-map_metadata 0 \
# copies video stream metadata from input.mp4 to output.mp4
-map_metadata:s:v 0:s:v \
# copies audio stream metadata from input.mp4 to output.mp4
-map_metadata:s:a 0:s:a \
output.mp4

Felicidades

    
por 13.07.2018 / 15:17