Quali parametri di compressione video H.264 / H.265 forniscono una qualità equivalente a DVD con una migliore compressione?


10

Ho una scatola di dischi video DVD di cui cerco di liberarmi mentre mi piacerebbe conservare i video convertendoli in file MP4 per archiviarli su un disco rigido.

Considerando la superiorità dei moderni algoritmi di compressione H.264 AVC e H.265 HEVC rispetto allo standard DVD MPEG2, spero di risparmiare spazio sul disco rigido comprimendo il video risparmiando circa il 99% della qualità originale del DVD.

Che cosa

  • Parametri di compressione H.264 (FFMPEG + libx264)
  • Parametri di compressione H.265 (FFMPEG + libx265)

dovrei usare per raggiungere il mio obiettivo?

Per parametro intendo i valori CBR / CRF, il preset (no veryslow / placebo per favore), i flag ecc.

PS: Preferirei limitare il caso con l'utilizzo -pix_fmt yuv420pe -profile:v baseline -level 3.0garantire che il file venga riprodotto correttamente su tutti i dispositivi, compresi i vecchi dispositivi che si basano su vecchi chip di decodifica hardware. L'uso di una frequenza I-frame leggermente aumentata (usando il -gparametro) è anche desiderabile per facilitare l'uso di supporti a bassa velocità e ad alta latenza.

Per HEVC, preferirei anche utilizzare parametri che garantissero una riproduzione fluida con accelerazione hardware su dispositivi che lo supportano, ma non intendo concentrarmi su questo vincolo poiché non ho visto alcun dispositivo che offre H.265 con accelerazione hardware decodifica a tutti ancora.

Risposte:


13

Nota che per questo, dovresti sempre usare l' ultima versione di ffmpeg e preferibilmente compilarla da solo . Questo ti dà accesso ai più recenti libx265 e libfdk-aac per la codifica audio.

Inoltre, il risparmio della velocità dei dati sarà piuttosto drastico se si passa da un DVD di ~ 10 MBit / s a ​​circa 1–2 MBit / s per video H.264 e 0,5–1 MBit / s per video H.265. La modifica della qualità nei passaggi seguenti può influenzare i bitrate, ma la riduzione dei dati dovrebbe comunque essere significativa.

H.264

Per il controllo qualità / frequenza, si desidera utilizzare la modalità CRF in libx264 anziché un bitrate costante. L'uso di CRF garantisce il mantenimento di una qualità media, indipendentemente dalla risoluzione video originale o dalla sua complessità. Il bitrate costante è davvero utile solo se sei limitato dal mezzo di trasmissione (ad es. Velocità del disco rigido, velocità di trasmissione Internet).

La scelta del valore CRF è la parte difficile. Richiede di guardare l'output. L'impostazione predefinita per libx264 (23) offre un discreto compromesso tra dimensioni e qualità. Ma dato che la tua fonte originale è già compressa (e non con una qualità molto buona rispetto ai Blu-ray), potresti voler cambiare il CRF in modo che sia un po 'più basso, come 20. Ciò aumenterà il bitrate necessario di circa un terzo .

Scegli il preset in base a quanto tempo vuoi aspettare. slowsembra un buon valore qui.

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

L'encoder AAC ffmpeg incorporato può essere utilizzato se libfdk-aac non è disponibile. Usa -c:a aac -strict experimental -b:a 128kinvece di -c:a libfdk_aac -vbr 4.

H.265

La ricerca suggerisce che l'uso di HEVC porterà ad un risparmio di bitrate fino al 74% rispetto a H.264. Questo si basa su dati soggettivi di visualizzazione di sequenze Ultra-HD. Naturalmente, dipende dalla complessità temporale del contenuto di origine e la quantità di dati salvati non sarà così elevata per le sequenze difficili da codificare. In ogni caso, puoi tranquillamente affermare che la riduzione dei dati del 50% è assolutamente possibile.

Il CRF predefinito per libx265 è 28. Usando lo stesso contenuto sorgente, risulta circa la metà del bitrate rispetto a libx264 in CRF 23. Questo è indipendentemente dal bitrate effettivo, cioè se la versione H.264 richiede 1,5 MBit / s, quindi H.265 utilizzerà circa 750 kBit / s, ma è 750 kBit / s contro 350 kBit / s per un'altra sequenza. L'ho eseguito su un paio di sequenze alla risoluzione DVD-PAL e non sono stato in grado di dire la differenza in termini di qualità.

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

Per ulteriori informazioni, ecco le risorse rilevanti:


Grazie per una bella risposta Cosa significa praticamente keyint tra l'altro?
Ivan,

1
In keyintx264 / x265 è l'intervallo tra i frame IDR, ovvero l'intervallo tra i fotogrammi chiave in corrispondenza del quale il decodificatore può essere aggiornato. Nel mezzo, possono esserci I-frame senza fotogrammi chiave, ad esempio quando si verifica un taglio di scena. È equivalente al -gparametro se non sbaglio.
slhck,

A proposito, @slhck, una cosa che mi ha sorpreso nella tua risposta: l'attenzione che dai alla scelta di una libreria di codifica AAC. Pensavo che fossero quasi tutti uguali e dessero poca o nessuna differenza, che le cose fossero semplici nella parte audio (basta scegliere il bitrate and go e che tutti i principali codec con perdita di dati come MP3, AAC e Vorbis suonano quasi o esattamente lo stesso a 128 kbps e oltre). Vuoi dire che in realtà esiste una notevole differenza tra libfdk-aac e ordinario aac?
Ivan,

1
@Ivan Le build di Zeranoe dovrebbero assolutamente permetterti di fare -c:a aac -strict experimentalcome indicato nella mia risposta. E sono d'accordo, non proverei a costruirlo su Windows.
slhck,

1
@Ivan (primo commento): vedi ffmpeg-wiki : "Basato sulla qualità prodotta dall'alto verso il basso: Solo libopus > libvorbis >= libfdk_aac > aac > libmp3lame >= libfaac >= eac3/ac3 > libtwolame > vorbis > mp2 > wmav2/wmav1per AAC: (Perché è un po 'confuso, con 3 encoder disponibili): libfdk_aac > aac > libfaacIl segno> = significa maggiore o uguale qualità."
Golar Ramblar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.