Quais parâmetros de compactação de vídeo H.264 / H.265 oferecem qualidade equivalente ao DVD com melhor compactação?


11

Eu tenho uma caixa de discos de vídeo em DVD que procuro livrar enquanto gostaria de manter os vídeos, convertendo-os em arquivos MP4 para armazená-los em um disco rígido.

Considerando a superioridade dos modernos algoritmos de compressão H.264 AVC e H.265 HEVC sobre o MPEG2 padrão de DVD, espero economizar espaço no disco rígido compactando o vídeo e economizando ~ 99% da qualidade original do DVD.

o que

  • Parâmetros de compactação H.264 (FFMPEG + libx264)
  • Parâmetros de compactação H.265 (FFMPEG + libx265)

devo usar para alcançar meu objetivo?

Por parâmetros, quero dizer os valores de CBR / CRF, a predefinição (sem baixa velocidade / placebo, por favor), sinalizadores etc.

PS: Eu preferiria restringir o caso ao usar -pix_fmt yuv420pe -profile:v baseline -level 3.0garantir que o arquivo seja executado corretamente em todos os dispositivos, incluindo dispositivos antigos baseados em chips decodificadores de hardware antigos. -gTambém é desejável usar a frequência de quadros I um pouco aumentada (usando o parâmetro) para facilitar o uso da mídia em baixa velocidade e alta latência.

Para o HEVC, eu preferiria usar parâmetros que garantissem uma reprodução acelerada por hardware em dispositivos compatíveis, mas não pretendo me concentrar nessa restrição, pois não vi nenhum dispositivo que ofereça H.265 acelerado por hardware decodificação ainda.

Respostas:


14

Observe que, para isso, você deve sempre usar a versão mais recente do ffmpeg e, de preferência, compilá-la . Isso fornece acesso às mais recentes libx265 e libfdk-aac para codificação de áudio.

Além disso, a economia na taxa de dados será bastante drástica se você estiver passando de um DVD de ~ 10 MBit / s para cerca de 1-2 MBit / s para vídeo H.264 e 0,5-1 MBit / s para vídeo H.265. Alterar a qualidade nas etapas abaixo pode influenciar as taxas de bits, mas ainda assim a redução de dados deve ser significativa.

H.264

Para o controle de qualidade / taxa, você deseja usar o modo CRF na libx264 em vez de uma taxa de bits constante. O uso do CRF garante que uma qualidade média seja preservada, independentemente da resolução do vídeo original ou de sua complexidade. A taxa de bits constante só é realmente útil se você estiver limitado pelo meio de transmissão (por exemplo, velocidade do disco rígido, taxa de transferência da Internet).

Escolher o valor do CRF é a parte complicada. Exige que você observe a saída. O padrão da libx264 (23) oferece uma boa troca entre tamanho e qualidade. Mas, como sua fonte original já está compactada (e não com uma qualidade muito boa em comparação com os Blu-rays), convém alterar o CRF para um pouco menor, como 20. Isso aumentará a taxa de bits necessária em cerca de um terço .

Escolha a predefinição de acordo com quanto tempo você deseja esperar. slowparece ser um bom valor aqui.

ffmpeg -i input \
-c:v libx264 -crf 20 -pix_fmt yuv420p \
-x264-params keyint=240:min-keyint=20 \
-preset:v slow -profile:v baseline -level 3.0 \
-c:a libfdk_aac -vbr 4 \
output.mp4

O codificador ffmpeg AAC embutido pode ser usado se libfdk-aac não estiver disponível. Use em -c:a aac -strict experimental -b:a 128kvez de -c:a libfdk_aac -vbr 4.

H.265

Pesquisas sugerem que o uso de HEVC levará a uma economia de taxa de bits de até 74% em comparação com o H.264. Isso é baseado em dados de visualização subjetivos de seqüências Ultra-HD. Obviamente, isso depende da complexidade temporal do conteúdo de origem e a quantidade de dados salvos não será tão alta para sequências difíceis de codificar. De qualquer maneira, você pode dizer com segurança que a redução de 50% dos dados é absolutamente possível.

O CRF padrão para libx265 é 28. Usando o mesmo conteúdo de origem, resulta em cerca de metade da taxa de bits em comparação com a libx264 no CRF 23. Isso independe da taxa de bits real, ou seja, se a versão H.264 levar 1,5 MBit / s, o H.265 usará cerca de 750 kBit / s, mas é 750 kBit / s vs. 350 kBit / s para outra sequência. Eu o executei em algumas seqüências na resolução de DVD-PAL e não consegui dizer a diferença em termos de qualidade.

ffmpeg -i input \
-c:v libx265 -pix_fmt yuv420p \
-x265-params crf=28:keyint=240:min-keyint=20 \
-preset:v slow \
-c:a libfdk_aac -vbr 4 \
output.mp4

Para mais informações, aqui estão os recursos relevantes:


Obrigado por uma boa resposta. O que keyint significa praticamente por sinal?
19714 Ivan Ivan

1
O keyintem x264 / x265 é o intervalo entre os quadros IDR, ou seja, o intervalo entre os quadros-chave nos quais o decodificador pode atualizar. No meio, pode haver quadros I sem quadro-chave, por exemplo, quando ocorre um corte na cena. É equivalente ao -gparâmetro se não me engano.
slhck

BTW, @slhck, algo que me surpreendeu na sua resposta - a atenção que você dá à escolha de uma biblioteca de codificação AAC. Eu costumava pensar que eles são quase iguais e dão pouca ou nenhuma diferença, que as coisas são simples na parte de áudio (basta escolher a taxa de bits e ir embora e que todos os principais codecs com perdas, como MP3, AAC e Vorbis, soam quase ou exatamente o mesmo em 128 kbps e acima). Você quer dizer que realmente existe uma diferença notável entre libfdk-aac e aac comum?
19414 Ivan Ivan

1
@ Ivan As compilações de Zeranoe definitivamente devem permitir que você faça -c:a aac -strict experimentalcomo indicado na minha resposta. E eu concordo, eu não tentaria construí-lo no Windows.
slhck

2
@Ivan (1º comentário): Veja ffmpeg-wiki : "Com base na qualidade produzida de alto a baixo: libopus > libvorbis >= libfdk_aac > aac > libmp3lame >= libfaac >= eac3/ac3 > libtwolame > vorbis > mp2 > wmav2/wmav1Somente para AAC: (porque é um pouco confuso, com 3 codificadores disponíveis): libfdk_aac > aac > libfaacO sinal> = significa maior ou igual qualidade."
Golar Ramblar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.