Estou tentando usar a mesma linha de comando usada pelo YouTube para qualidade etc. em contêineres H.264 / MP4. Tenho trabalhado na conversão de vídeos em vários formatos, escalas, tamanhos e ajuste das taxas de bits e de áudio para corresponder ao que o YouTube disse usar.
Em uma casca de noz, aqui está o que eu uso:
-pix_fmt yuv420p -profile:v baseline -level 3.0 -acodec libfaac -ar 44100 -ac 2 -ab 192k -aspect 16:9 -r 24000/1001 -movflags +faststart
Agora, se eu quiser explicar por que esses valores são o que são, primeiro você deve ver o que o YouTube nos diz sobre o que eles usam aqui.
Então, vamos entrar em detalhes
Na linha de comando do ffmpeg, eles se tornam os seguintes.
-movflags +faststart
-ac 2
-ar 48000
-profile:v high -level 4.0
-bf 2
(o padrão do FFMPEG é 16). -g 12
ou -g 15
varia no FPS do YouTube. (O padrão, 12, funciona para 24-25 fps. Para NTSC e 30 fps, selecione 15. * Opção FFMPEG: -g
, Não tenho certeza se o FPS padrão do youtube é 24 ou 30. Presumo que 24 como padrão 12 seria metade da taxa de quadros e 15 se a taxa de quadros for 30.) -coder 1
(Por padrão, o CABAC é o codificador de entropia usado pelo x264.) -pix_fmt yuv420p
(Minha opinião todo mundo precisa adicionar este obrigatório, ou talvez todos os jogadores não baseados no FFmpeg não suportem decodificação adequada de YUV 4: 2: 2 ou YUV 4: 4: 4. Então yuv 4: 2: 0 é necessário .) -r 24000/1001
(suponha que a taxa de quadros padrão do YouTube seja de 24). -aspect 16:9
-acodec libfaac
Mas eu sei que provavelmente há alguns comandos que estou perdendo ou que preciso mudar se alguém puder ajudar. E corrija / me diga o que preciso alterar / adicionar.
Como desejo usar um perfil de linha de base, não uso CABAC, GOP ou B-Frames na linha de comando, pois todos se tornam desabilitados e irrelevantes.