Cheat sheets e presets-settings que realmente funcionam com o FFmpeg 1.0?

21

Já experimentamos várias 'cheat sheets' disponíveis em outros lugares, mas quase todas estão desatualizadas e simplesmente NÃO funcionarão com a versão mais recente do FFMpeg.

Alguém pode me indicar configurações que funcionarão com o FFMpeg mais recente?

Estou principalmente interessado nos seguintes codecs

H.264, predefinições de qualidade baixa média e alta

bem como

ProRes, pré-ajustes de baixa e média qualidade

    
por Bachalo 21.10.2012 / 18:35

2 respostas

41

O FFmpeg não inclui predefinições e perfis baseados em arquivos de texto para a libx264, ou seja, o que você usou com a opção -vpre . Estes foram depreciados e removidos em favor do acesso aos presets x264 reais, perfis (e músicas) com as opções -preset , -profile:v e -tune . Os arquivos de texto antigos apenas emularam os presets e perfis x264 oficiais e, devido a várias limitações, não puderam oferecer a funcionalidade completa que o novo sistema oferece. 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ê terá que olhar para o áudio e video opções de codificador para codecs comuns na documentação on-line do FFmpeg ou verifique a saída de 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 suporta -preset , qualquer pré-ajuste de arquivo de texto não deve ser usado, e o FFmpeg não vem mais com presets de iPod não-padrão. É um equívoco comum que as predefinições de texto possam simplesmente ser copiadas de qualquer lugar e usadas com qualquer ffmpeg. Isso não é verdade e resultará em quebra.

Basicamente, as predefinições permitiram que você fizesse o seguinte:

Qualidade de controle

A qualidade é controlada pela especificação de uma taxa de bits através de -b:v (para vídeo) ou -b:a (para áudio) ou pela especificação de 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 Fator de taxa constante 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 sua fonte e da qualidade desejada. 23 é o padrão, então você poderia, por exemplo, escolher 18 para "alta qualidade" e 28 para "baixa qualidade", o que quer que isso signifique para você.

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

x264 tem outros métodos de codificação , mas isso está fora do escopo aqui.

Restringir o perfil H.264

Esses perfis definem um conjunto de recursos que o codificador pode usar para corresponder aos recursos de um determinado decodificador. No recente FFmpeg, use a seguinte sintaxe para especificar um perfil, onde o perfil pode ser baseline , main ou high :

ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4

Para mais informações e quando você deve usar o 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 de codificação. A utilização de uma predefinição mais lenta oferece melhor compactação ou qualidade por tamanho do arquivo, enquanto pré-ajustes mais rápidos resultam em pior compactação. Em geral, você deve usar apenas o preset que você pode esperar. As predefinições podem 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 use simplesmente -crf 0 :

ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4

Finalmente, 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 os nomes dos perfis podem ser usados - isso, no entanto, falha no FFmpeg 1.0.

    
por 21.10.2012 / 18:53
10

Eu fiz um teste em que codifiquei (usando a codificação libx264 para .mp4 ) um vídeo de alta qualidade de uma filmadora da 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 de arquivo.

Para cada valor de CRF, atribui a cada operação de trans-código uma pontuação para seu tempo de codificação (por exemplo, para CRF = 18, o valor predefinido do ultrafast de 5.7 segundos obteve uma pontuação de 1.0, o tempo de veryslow de 162 segundos , com todas as outras pontuações escaladas no meio). Eu calculei pontuações de tamanho de arquivo de saída da mesma forma, claro, dando o menor arquivo a melhor pontuação. Em seguida, adicionei as duas pontuações para uma pontuação de velocidade / tamanho "combinada".

Para cada um dos quatro valores de CRF, o pré-ajuste "muito rápido" foi o vencedor absoluto, 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 "muito rápido" tenha produzido quase o menor tamanho de arquivo a cada vez , perdendo apenas para "veryslow" 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 mostrariam uma miniatura em vários segundos no vídeo, em que as miniaturas das predefinições mais lentas refletiriam o (s) quadro (s) de abertura do vídeo. Isso não é importante para mim; O que eu aprendi foi que "-preset veryfast" parece ser uma escolha fácil.

Aqui estão os meus resultados (como uma imagem instantânea de uma planilha do Excel):

Aqui está a planilha do Excel como texto csv:

CRF,Preset,Seconds,score,MB,score,totalscore
18,1_ultrafast,5.7,1.00,59.5,0.09,1.09
18,2_superfast,8.4,0.98,62.3,0.00,0.98
18,3_veryfast,10.8,0.97,30.9,0.98,1.94
18,4_faster,16.0,0.93,33.5,0.89,1.83
18,5_fast,24.0,0.88,36.8,0.79,1.68
18,6_medium,29.1,0.85,34.9,0.85,1.70
18,7_slow,48.1,0.73,33.9,0.88,1.61
18,8_slower,84.9,0.49,33.0,0.91,1.40
18,9_veryslow,162.0,0.00,30.1,1.00,1.00
21,1_ultrafast,5.7,1.00,38.0,0.00,1.00
21,2_superfast,7.9,0.98,35.0,0.15,1.14
21,3_veryfast,10.0,0.97,19.0,0.97,1.94
21,4_faster,14.2,0.94,21.0,0.87,1.80
21,5_fast,19.9,0.89,23.0,0.77,1.66
21,6_medium,24.6,0.86,22.0,0.82,1.67
21,7_slow,43.1,0.72,21.0,0.87,1.58
21,8_slower,69.8,0.51,20.5,0.89,1.41
21,9_veryslow,137.3,0.00,18.4,1.00,1.00
24,1_ultrafast,5.5,1.00,24.9,0.00,1.00
24,2_superfast,7.5,0.98,21.4,0.27,1.25
24,3_veryfast,9.3,0.97,12.0,0.99,1.96
24,4_faster,13.2,0.93,14.0,0.84,1.77
24,5_fast,17.4,0.90,15.0,0.76,1.66
24,6_medium,21.0,0.87,14.4,0.81,1.67
24,7_slow,37.3,0.72,14.0,0.84,1.56
24,8_slower,62.2,0.51,13.0,0.92,1.42
24,9_veryslow,121.1,0.00,11.9,1.00,1.00
27,1_ultrafast,5.5,1.00,16.8,0.00,1.00
27,2_superfast,7.4,0.98,13.6,0.38,1.36
27,3_veryfast,9.0,0.97,8.4,1.00,1.97
27,4_faster,12.6,0.93,10.1,0.80,1.73
27,5_fast,15.8,0.90,10.4,0.76,1.66
27,6_medium,18.8,0.87,10.0,0.81,1.68
27,7_slow,34.1,0.73,9.8,0.83,1.56
27,8_slower,59.6,0.48,9.0,0.93,1.41
27,9_veryslow,109.7,0.00,8.4,1.00,1.00
    
por 14.10.2017 / 21:04