Які параметри стиснення відео H.264 / H.265 забезпечують якість DVD-еквівалента з кращою компресією?


11

У мене є коробка відеодисків DVD, яких я хочу позбутися, хоча я хотів би зберегти відео, перетворивши їх у файли MP4, щоб зберегти їх на жорсткому диску.

Враховуючи перевагу сучасних алгоритмів стиснення H.264 AVC та H.265 HEVC над стандартним DVDEG MPEG2, я сподіваюся зекономити простір на жорсткому диску, стиснувши відео, заощадивши ~ 99% оригінальної якості DVD.

Що

  • Параметри стиснення H.264 (FFMPEG + libx264)
  • Параметри стиснення H.265 (FFMPEG + libx265)

я повинен використовувати для досягнення своєї мети?

Під параметрами я маю на увазі значення CBR / CRF, попередньо встановлені налаштування (без veryslow / placebo, будь ласка), прапори тощо.

PS: Я вважаю за краще обмежити випадок із використанням -pix_fmt yuv420pта -profile:v baseline -level 3.0забезпечити нормальне відтворення файлів на всіх пристроях, включаючи старі пристрої, що спираються на старі мікросхеми апаратного декодера. Використання дещо підвищеної частоти I-кадру (з використанням -gпараметра) також бажано для полегшення використання носіїв з низькою швидкістю та високою затримкою.

Для HEVC я також вважаю за краще використовувати параметри, які б забезпечували плавне відтворення прискореного апаратного забезпечення на пристроях, які підтримують його, але я не хочу зосереджуватися на цьому обмеженні, оскільки я не бачив жодного пристрою, що пропонує апаратне прискорення H.265 дешифрування взагалі ще немає.

Відповіді:


14

Зауважте, що для цього завжди слід використовувати останню версію ffmpeg , і бажано скласти її самостійно . Це дає вам доступ до найсвіжіших libx265 та libfdk-aac для кодування аудіо.

Крім того, економія швидкості передачі даних буде досить драматичною, якщо ви перейдете від DVD-10 ~ 10 Мбіт / с до приблизно 1–2 Мбіт / с для відео H.264 та 0,5–1 Мбіт / с для відео H.265. Зміна якості на наступних етапах може вплинути на бітрейт, але все-таки зменшення даних має бути суттєвим.

H.264

Для контролю якості / швидкості потрібно використовувати режим CRF в libx264, а не постійний бітрейт. Використання CRF забезпечує збереження середньої якості, незалежно від оригінальної роздільної здатності відео чи його складності. Постійний бітрейт дуже корисний, лише якщо вас обмежує середовище передачі (наприклад, швидкість жорсткого диска, пропускна здатність в Інтернеті).

Вибір значення CRF - складна частина. Це вимагає, щоб ви подивилися на вихід. За замовчуванням для libx264 (23) пропонується досить хороший компроміс між розміром та якістю. Але з огляду на те, що ваш вихідний джерело вже стиснений (і не дуже гарної якості порівняно з Blu-ray), ви можете змінити CRF на трохи нижче, наприклад, 20. Це збільшить необхідний бітрейт приблизно на третину .

Виберіть попередньо встановлене налаштування відповідно до того, як довго ви хочете чекати. slowздається, тут хороша цінність.

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

Вбудований кодер AAC ffmpeg може використовуватися, якщо libfdk-aac недоступний. Використовуйте -c:a aac -strict experimental -b:a 128kзамість -c:a libfdk_aac -vbr 4.

H.265

Дослідження свідчать, що використання HEVC призведе до економії до 74% бітрейту в порівнянні з H.264. Це ґрунтується на даних суб'єктивного перегляду послідовностей Ultra-HD. Звичайно, це залежить від часової складності вихідного вмісту, а кількість збережених даних не буде настільки високим для послідовностей, що важко кодують. У будь-якому випадку можна сміливо сказати, що 50% зменшення даних є абсолютно можливим.

CRF за замовчуванням для libx265 дорівнює 28. Використовуючи той самий вихідний вміст, це призводить до приблизно половини бітрейта порівняно з libx264 у CRF 23. Це незалежно від фактичного бітрейта, тобто якщо версія H.264 займає 1,5 Мбіт / с, тоді H.265 використовуватиме близько 750 кбіт / с, але це 750 кбіт / с проти 350 кБ / с для іншої послідовності. Я запустив це в декількох послідовностях при роздільній здатності DVD-PAL і не зміг визначити різницю в якості.

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

Для отримання додаткової інформації тут відповідні ресурси:


Дякую за прекрасну відповідь. Що практично означає кейтінг?
Іван

1
Значення keyintx264 / x265 - це інтервал між кадрами IDR, тобто інтервал між ключовими кадрами, на якому декодер може оновитись. Між ними можуть бути I-кадри без ключових кадрів, наприклад, коли відбувається зріз сцени. Це еквівалентно -gпараметру, якщо я не помиляюся.
slhck

BTW, @slhck, що мене здивувало у вашій відповіді - увагу, яке ви приділяєте вибору бібліотеки кодування AAC. Раніше я вважав, що вони майже однакові, і вони мало або взагалі не змінюють, що в аудіо-частині все просто (просто виберіть бітрейт і перейдіть, і всі основні втратні кодеки, такі як MP3, AAC і Vorbis, звучать майже або точно те саме зі швидкістю 128 кбіт / с і вище). Ви маєте на увазі, що насправді є помітна різниця між libfdk-aac та звичайним aac?
Іван

1
@Ivan Створення Zeranoe повинно дозволити вам робити так, -c:a aac -strict experimentalяк зазначено в моїй відповіді. І я згоден, я б не намагався будувати його на Windows.
slhck

2
@Ivan (1-й коментар): Див. Ffmpeg-wiki : "На основі якості, виробленої від високої до низької: Тільки libopus > libvorbis >= libfdk_aac > aac > libmp3lame >= libfaac >= eac3/ac3 > libtwolame > vorbis > mp2 > wmav2/wmav1для AAC: (Оскільки це трохи заплутано, доступні 3 кодери): libfdk_aac > aac > libfaacЗнак> = означає більше або те саме якість ».
Golar Ramblar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.