Какие параметры сжатия видео H.264/H.265 обеспечивают DVD-эквивалентное качество с лучшим сжатием?
У меня есть коробка DVD-видеодисков, от которой я хочу избавиться, в то время как я хотел бы сохранить видео, преобразовав их в файлы MP4, чтобы сохранить их на жестком диске.
Учитывая превосходство современных алгоритмов сжатия H.264 AVC и H.265 HEVC над стандартом DVD 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. декодирования вообще пока нет.
1 ответ
Обратите внимание, что для этого вы всегда должны использовать последнюю версию ffmpeg и, предпочтительно, скомпилировать ее самостоятельно. Это дает вам доступ к самым последним libx265 и libfdk-aac для кодирования звука.
Кроме того, экономия скорости передачи данных будет весьма существенной, если вы перейдете с DVD-диска ~ 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
Встроенный кодировщик ffmpeg AAC можно использовать, если 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
Для получения дополнительной информации, вот соответствующие ресурсы:
- FFmpeg Wiki по кодированию H.264 и H.265
- Документация ffmpeg для libx265
- документация x265