Atualmente, estou usando um arquivo em lotes que (entre outras coisas) executa a seguinte linha de comando do 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 menor que o original (bom quando você tem apenas dispositivos de 16 Gb), parece bom o suficiente e funciona em praticamente qualquer iPod, iPad e iPhone em que eu o coloquei.
No entanto, com o tempo, o handbrakecli está lutando para converter mais e mais vídeos ao ponto em que preciso procurar uma alternativa. Isso não é ajudado pelo fato de os logs não fornecerem absolutamente nenhuma informação sobre o motivo pelo qual houve uma falha. Este vídeo, por exemplo, caiu em 71% com a conversão e estas são as últimas 4 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 usar o ffmpeg como uma alternativa, mas todos os exemplos que eu vi na internet fazem um ou mais dos seguintes:
- Não trabalhe (as opções de linha de comando não são reconhecidas) - comum!
- Resultar em um arquivo maior que o original - muito comum!
- Distorça a imagem, especialmente quando um tamanho de vídeo inesperado é convertido (por exemplo, PAL não widescreen)
- Retire o áudio
- Resultar em um vídeo que o iPhone, iPod ou iPad não reproduzirá
Existe uma linha de comando ffmepg decente para todos os fins, que fará qualquer vídeo rodar feliz em todos os dispositivos Apple, além de obter uma redução no tamanho do arquivo?
Pontos de bônus se diminuir (mas não distorcer) qualquer vídeo acima de 720p também.
Respostas:
Aqui está a minha opinião. Vou levar o iPhone 4 ou mais recente (incluindo todos os iPads) como alvo: H.264 Perfil principal, nível 3.1
Os valores que você pode alterar livremente:
-crf 23
: A configuração de qualidade constante. Valor mais alto = menos qualidade, arquivo menor. Baixa = melhor qualidade, arquivo maior. Os valores sãos 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, use um mais lento. Veja aqui para mais informações.-acodec copy
: Tenta copiar a faixa de áudio no contêiner MP4. Se não puder ser copiado, será necessário recodificá-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á o vídeo para 720p e manterá a proporção. O algoritmo de escalonamento usado será lanczos, pois é muito melhor que o padrão.
fonte
-vf "scale=-2:720:flags=lanczos"
lugar. A adição-movflags +faststart
é recomendada se o arquivo for visualizado por meio de download progressivo, como em um navegador (e, caso contrário, a opção certamente não dói).x264-params
. Além de construí-lo, existe uma maneira de contornar esse problema?-x264-params
funciona bem. Tem certeza de que não perdeu nada? A opção é principalmente uma segurança para evitar ter mais de 4 quadros de referência que podem não ser manipulados por um decodificador mais antigo.-acodec libmp3lame
não funciona para mim. Para ativar o áudio no meu iPad Mini, reconstruíffmpeg
com umanonfree
variante e useilibfdk_aac
codificado.Isso é básico, mas funcionou imediatamente para mim em um iPad 3
fonte