O FFmpeg não inclui predefinições e perfis baseados em arquivo de texto para a libx264, ou seja, o que você usou com a -vpre
opção. Estes foram depreciados e removido em favor de acessar os presets x264 reais, perfis (e músicas) com o -preset
, -profile:v
e -tune
opções. Os arquivos de texto antigos emulavam apenas as predefinições e perfis oficiais do x264 e, devido a várias limitações, não podiam oferecer a funcionalidade completa fornecida pelo novo sistema. Também é muito mais fácil de manter.
Além disso, muitos codificadores têm suas próprias opções separadas; também chamado de "opções privadas". Você precisará procurar nas opções do codificador de áudio e vídeo os codecs comuns na documentação on-line do FFmpeg ou verificar a saída ffmpeg -h full
para obter uma lista completa das opções suportadas. Por exemplo, x264 lista suas opções em libx264 AVOptions
na saída de ajuda completa.
Se o seu ffmpeg suportar -preset
, nenhuma predefinição de arquivo de texto deverá ser usada, e o FFmpeg não será mais fornecido com outras que não sejam predefinições de iPod não padrão. É um equívoco comum que as predefinições de texto possam ser simplesmente copiadas de qualquer lugar e usadas com qualquer ffmpeg. Isso é falso e resultará em quebra.
Basicamente, as predefinições permitem que você faça o seguinte:
Controle a qualidade
A qualidade é controlada especificando uma taxa de bits através de -b:v
(para vídeo) ou -b:a
(para áudio) ou especificando qualquer outro método de codificação que o codec possa suportar.
Para x264, existem vários métodos de codificação, sendo o método do fator de taxa constante o mais sofisticado. Isso resulta em taxa de bits variável, mas boa qualidade geral em uma única passagem. Os valores de CRF variam de 0 a 51, mas os valores sãos estão entre 19 e 26, dependendo da fonte e da qualidade desejada. 23 é o padrão; portanto, você pode, por exemplo, escolher 18 para "alta qualidade" e 28 para "baixa qualidade", o que isso significa para você.
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
O x264 também tem outros métodos de codificação , mas isso está fora do escopo aqui.
Esses perfis definem um conjunto de recursos que o codificador pode usar para corresponder aos recursos de um determinado decodificador. Em recente FFmpeg, use a seguinte sintaxe para especificar um perfil, onde perfil poderia ser baseline
, main
ou high
:
ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4
Para obter mais informações e quando você deve usar qual perfil, consulte: Quais são as diferenças entre os perfis H.264?
Escolha uma codificação x264 preset
Essas predefinições afetam a velocidade da codificação. O uso de uma predefinição mais lenta fornece uma melhor compactação ou qualidade por tamanho de arquivo, enquanto as predefinições mais rápidas oferecem pior compactação. Em geral, você deve apenas usar a predefinição que pode esperar. Presets pode ser ultrafast
, superfast
, veryfast
, faster
, fast
, medium
(padrão), slow
e veryslow
. Aqui está um exemplo:
ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4
Codificar vídeo sem perdas
Isso é possível especificando um CRF de 0, então basta usar -crf 0
:
ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4
Por fim, vamos falar sobre o ProRes rapidamente. O ProRes aceita uma taxa de bits fixa com -b:v
ou você pode especificar o perfil, que deve ser um valor entre 0 e 3 , onde as taxas de bits são escolhidas de acordo com o perfil. Maior significa melhor:
ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov
O ffmbc Wiki sugere que nomes de perfis podem ser usados - mas isso falha no FFmpeg 1.0.
ffmpeg -i input.mp4 -c:v libx264 output.mp4
? crf: 23 e predefinido: médio?Fiz um teste no qual transcodifiquei (usando a codificação libx264 para
.mp4
) um vídeo de alta qualidade de uma câmera de vídeo Sony usando toda a gama de valores predefinidos (exceto placebo) em uma faixa de valores de CRF (18, 21, 24 e 27 ) Eu queria saber o que me daria a melhor combinação de velocidade de codificação, qualidade de saída e tamanho do arquivo.Para cada valor de CRF, atribui uma pontuação a cada operação trans-código por seu tempo de codificação (por exemplo, para CRF = 18, o valor predefinido, o tempo do ultrafast de 5,7 segundos obteve uma pontuação de 1,0, o tempo do veryslow de 162 segundos obteve um 0, com todos outras pontuações escalonadas no meio). Calculei as pontuações do tamanho do arquivo de saída da mesma forma, é claro, dando ao menor arquivo a melhor pontuação. Em seguida, adicionei as duas pontuações para uma velocidade / tamanho "combinados".
Para cada um dos quatro valores de CRF, a predefinição "muito rápida" foi a vencedora, com pontuações quase perfeitas de 1,94 (para CRF 18 e 21), 1,96 (CRF 24) e 1,97 (CRF 27). Acho muito curioso que "veryfast" produzisse quase sempre o menor tamanho de arquivo , perdendo apenas para "muito lento" e nunca muito.
Uma diferença que notei entre os vários valores predefinidos foi que o sistema operacional (Windows 7) me daria miniaturas diferentes. As predefinições mais rápidas exibem uma miniatura por alguns segundos no vídeo, onde as miniaturas das predefinições mais lentas refletem o (s) quadro (s) de abertura do vídeo. Isso não é importante para mim; o que aprendi foi que "-preset veryfast" parece ser uma escolha fácil.
Aqui estão meus resultados (como uma imagem instantânea de uma planilha do Excel):
Aqui está a planilha do Excel como texto csv:
fonte