Que comando ffmpeg poderia converter um vídeo para iPad / iPhone / iPod?

20

Atualmente estou usando um arquivo de lote que (entre outras coisas) executa a seguinte linha de comando handbrakecli para converter um vídeo:

HandBrakeCLI.exe -v0 --input "D:\input.mkv" --preset="Universal" --ipod-atom -t 1 --angle 1 --gain 0 --output="D:\output.mp4"

Isso me serviu bem por muitos anos, produzindo um arquivo de vídeo que é menor que o original (bom quando você tem apenas dispositivos de 16Gb), parece bom o suficiente e funciona em praticamente qualquer iPod, iPad e iPhone .

No entanto, com o tempo, o handbrakecli está lutando para converter mais e mais vídeos, ao ponto de eu precisar procurar uma alternativa. Não é ajudado pelo fato de que os logs não fornecem absolutamente nenhuma informação sobre o motivo do travamento. Esse vídeo, por exemplo, caiu em 71% por meio da conversão e estas são as últimas quatro linhas:

AC3 Passthru requested and input codec is not compatible for track 2, using AC3 encoder
x264 [info]: using SAR=9593/9600
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
x264 [info]: profile Constrained Baseline, level 3.0

Não é muito útil.

Eu olhei para o ffmpeg como uma alternativa, mas todos os exemplos que vi na internet fazem um ou mais dos seguintes:

  1. Não funcione (opções de linha de comando não são reconhecidas) - comum!
  2. Resultado em um arquivo maior que o original - muito comum!
  3. Distorça a imagem, especialmente quando um tamanho de vídeo inesperado é convertido (por exemplo, PAL sem widescreen)
  4. Remover o áudio
  5. Resultado em um vídeo que o iPhone, o iPod ou o iPad não reproduzem

Existe uma linha de comando decente ffmepg para todos os propósitos que fará com que qualquer vídeo seja executado alegremente em todos os dispositivos da Apple, além de reduzir o tamanho do arquivo?

Pontos de bônus se ele diminuir (mas não distorcer) qualquer vídeo acima de 720p também.

    
por Richard 21.08.2015 / 00:16

2 respostas

24

Aqui está minha opinião sobre isso. Vou levar o iPhone 4 ou mais recente (incluindo todos os iPads) como o alvo: perfil principal H.264, nível 3.1

ffmpeg -i input.mp4 -vcodec libx264 -profile:v main -level 3.1 -preset medium -crf 23 -x264-params ref=4 -acodec copy -movflags +faststart output.mp4

Os valores que você pode alterar:

  • -crf 23 : a configuração de qualidade constante. Maior valor = menor qualidade, menor arquivo. Inferior = melhor qualidade, maior arquivo. Os valores são [18 - 24]
  • -preset medium : Se isso for muito lento para você, use uma predefinição mais rápida. Se você tiver paciência para isso, use um mais lento. Consulte aqui para obter mais informações.
  • -acodec copy : tenta copiar a faixa de áudio para o contêiner MP4. Se não puder ser copiado, você terá que reencitá-lo para AAC / MP3 / AC3 ... por exemplo, -acodec libmp3lame

Se o seu vídeo for maior que 720p, adicione o seguinte após a entrada:

-vf "scale=-2:720:flags=lanczos"

Isso reduzirá seu vídeo para 720p e manterá a proporção. O algoritmo de escalonamento usado será lanczos, pois é muito melhor que o padrão.

    
por 21.08.2015 / 15:35
0

Isso é básico, mas funcionou imediatamente para mim em um iPad 3

ffmpeg -i inputfile outputfile.m4v
    
por 01.04.2017 / 12:44