Estou tentando usar a mesma linha de comando que o YouTube usa para qualidade etc. em contêineres H.264 / MP4. Eu tenho trabalhado na conversão de vídeos em vários formatos, escalas, tamanhos e ajuste das taxas de bits e taxas de áudio para corresponder ao que o YouTube disse que elas usam.
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 devo explicar por que esses valores são o que são? Você deve primeiro ver o que o YouTube nos diz o que eles usam aqui.
- https://support.google.com/youtube/answer/1722171?hl=en
- https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping
Então, vamos entrar em detalhes
- átomo moov na frente do arquivo (Início rápido)
- Canais: Estéreo ou Estéreo + 5.1
- Taxa de amostragem 96khz ou 48khz
- Varredura progressiva (sem entrelaçamento)
- Alto perfil
- 2 quadros B consecutivos
- GOP fechado. GOP de metade da taxa de quadros.
- CABAC
- Subamostragem de croma: 4: 2: 0
- Taxa de quadros
- O YouTube usa players de formato 16: 9.
- Codec de áudio: AAC-LC
Na linha de comando do ffmpeg, eles se tornam os seguintes.
-movflags +faststart
-ac 2
-ar 48000
- Não tenho certeza qual é o comando para isso. (FFMPEG Por padrão, a codificação é progressiva.)
-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 qual é o FPS padrão do youtube se for 24 ou 30. Presumo 24, pois o padrão 12 seria metade da taxa de quadros e 15 se a taxa de quadros for 30.)-coder 1
(Por padrão, CABAC é o codificador de entropia usado por x264.)-pix_fmt yuv420p
(Minha opinião é que todo mundo precisa adicionar isso obrigatório, ou talvez todos os players que não sejam baseados em FFmpeg não suportem decodificação adequada de YUV 4: 2: 2 ou YUV 4: 4: 4. Portanto, yuv 4: 2: 0 é necessário.)-r 24000/1001
(Suponha que a taxa de quadros padrão do YouTube seja 24.)-aspect 16:9
-acodec libfaac
Mas eu sei que provavelmente existem alguns comandos que estão faltando ou que preciso mudar, se alguém quiser ajudar. E corrija / me diga o que preciso alterar / adicionar.
Como quero usar um perfil de linha de base, não uso CABAC, GOP ou B-Frames na minha linha de comando, pois todos ficam desabilitados e irrelevantes.
youtube-dl
e analisando o fluxo de bits em relação a GOPs, tipos de quadros B etc. A verdadeira questão é: por que você deseja combinar essas configurações tão de perto? Qual é o caso de uso? (Se você quiser 24 fps, basta configurar -r 24
...)
-aspect
. Isso estragará sua codificação.