O que o dispositivo suporta
De acordo com o Documento técnico do Xperia U , este dispositivo pode decodificar vídeo H.264, Alto perfil, nível 3.2 no contentor MP4 com áudio AAC.
Exemplo de comando ffmpeg
ffmpeg -i input -codec:v libx264 -crf 23 -preset medium -profile high -level 3.2 \
-pix_fmt yuv420p -movflags +faststart -codec:a aac -strict experimental out.mp4
O que essas opções fazem
-
-codec:v libx264
- Escolha o codificador de vídeolibx264
para codificar o vídeo H.264. -
-crf 23
- Nível de qualidade de vídeo de saída.23
é o padrão e um valor menor é de maior qualidade. -
-preset medium
- Compensação de velocidade de codificação versus eficiência de compactação. O padrão émedium
. -
-profile high
- Define o perfil de vídeo H.264 como Alto. -
-level 3.2
- Define o nível de vídeo H.264 como 3.2. -
-pix_fmt yuv420p
-ffmpeg
tenta minimizar ou evitar a subamostragem de croma (dependendo da entrada, codificador,ffmpeg
versão, etc). Isso é tecnicamente uma coisa boa, mas pode resultar em uma saída que os players não baseados em FFmpeg não podem manipular. Isso garante um esquema de subamostragem de chroma compatível. -
-movflags +faststart
- realoca o "moov atom" para o início do arquivo para que a reprodução comece antes do download completo do arquivo no caso de download progressivo (como assistir por meio de um navegador). -
-codec:a aac -strict experimental
- Codifica o áudio AAC usando o codificador FFmpeg AAC nativo experimental. Não é o pior codificador AAC, mas se soar uma merda, use uma taxa de bits maior com-b:a
(o padrão é 128k).
Notas adicionais
-
Use uma versão recente de
ffmpeg
. As versões antigas não impõem o número correto de quadros de referência ao usar-level
(corrigido bug # 3307 ), mas desde que você está usando o Arch Linux, você não precisa se preocupar com isso. -
O pacote ffmpeg do repositório Arch Linux Extra suporta apenas o codificador FFmpeg AAC nativo. Recompile de ABS com
--enable-libfdk-aac --enable-nonfree
(com o pacote libfdk-aac como dependente) ou use o pacote ffmpeg-git no AUR para obter suporte para codificação com libfdk_aac, que é o melhor codificador AAC suportado pelo FFmpeg. Recomenda-se usar o pacote ABS sobre o pacote AUR se você quiser tentar isso. -
Se o vídeo e / ou áudio de entrada já for compatível, você poderá simplesmente copiar o fluxo em vez de recodificar, como com
-codec:a copy
. -
O dispositivo móvel pode ter restrições adicionais das quais não tenho conhecimento, por isso você terá que experimentar. Também não tenho certeza se o dispositivo funcionará com um link simples para o vídeo, mas isso seria fácil de testar.
-
Veja o Guia de codificação do FFmpeg H.264 e FFmpeg AAC Encoding Guide para informações adicionais.