Вопрос или проблема
Я хочу перекодировать многие свои видео H264 в видео H265 с пониженным разрешением (480p или что-то в этом духе, максимум 720p), чтобы они не занимали слишком много места на диске.
Я пытался использовать аппаратное ускорение VAAPI процессора Intel с кодеком hevc_vaapi
, потому что кодирование H265 в программном обеспечении все еще довольно медленное (на более медленных процессорах), и на данный момент это работает, но либо закодированное видео выглядит намного хуже, чем исходник, либо занимает больше места, чем оригинал, или и то, и другое.
Кто-нибудь смог добиться хорошего качества и разумных битрейтов, как можно ожидать от видео HEVC?
В моем примере это, конечно, должно быть ниже, чем источник H264, иначе нет смысла перекодировать. Видео H264 использует от 1 до 1.5 Мбит/с в основном – так что я нацеливаюсь на что-то ниже 1 Мбит/с для HEVC в 480p, поскольку libx265
дает мне выход около 500 кбит/с с хорошим визуальным качеством с -crf 26
(или аналогичным, в зависимости от источника, конечно – но программное кодирование довольно медленное).
Лучший вариант вместо режима постоянного битрейта для кодека hevc_vaapi
кажется использованием -qp 25
(или аналогичных значений), но это сделало его только немного лучше, он все равно не выглядит действительно хорошо…
Я читал и пробовал команды из вики ffmpeg для VAAPI (хотя они все используют режим CBR), но это не сильно помогло, так как они используют очень высокие битрейты, что не совсем то, для чего предназначен HEVC (https://trac.ffmpeg.org/wiki/Hardware/VAAPI).
Кто-нибудь знает решение для этого – или, возможно, у кого-то та же проблема?!
Возможно ли вообще получить хорошее качество с разумными битрейты при использовании VAAPI?
Я также рассматриваю другие возможности ускорения процесса, но в данный момент у меня просто есть этот медленный процессор с поддержкой VAAPI (qsv не работал, если это лучше).
Кодирование больших видеофайлов таким образом, чтобы они не занимали слишком много места на хранение, является очень распространенной проблемой. В зависимости от содержания и реального оригинального файла может быть довольно сложно найти хороший компромисс между размером файла и качеством.
Одним из вариантов было бы использовать VideoTranscodingTools от Дона Мелтона. Эти инструменты предназначены для аппаратно ускоренного транскодирования скопированных DVD и BluRay, но они также работают с другими медиафайлами, такими как видео, снятые с помощью видеокамеры или мобильного телефона. На GitHub есть активная поддержка, и возникающие проблемы обычно решаются разработчиком в течение нескольких дней.
Если что, пакет инструментов, созданный Доном Мелтоном, использует FFmpeg в своей основе, т.е. в конечном итоге ваш видеофайл передается в исполняемый файл FFmpeg с сотней аргументов, которые вы никогда сами не выбрали бы.
Он работает, определяя качество входного файла (качество в плане битрейта, разрешения и некоторых других параметров), а затем принимая на этом основании решение о том, как должен быть закодирован выходной файл, чтобы обеспечить максимальную портативность, уменьшая размер файла и сохраняя как можно больше оригинальной информации, чтобы сохранить наилучшее возможно изображение.
Кроме того, он автоматически определяет, на каком оборудовании вы запускаете инструменты, и выбирает подходящий метод аппаратного ускорения.
Личный опыт: Мой довольно старый ноутбук с процессором i5 2017 года, по-моему, обрабатывает полный 1.5-часовой фильм, скопированный с DVD, за около 15 минут, без каких-либо визуальных потерь, сжимая входной файл с примерно 6 ГБ до около 1.5 ГБ.
Ответ или решение
Как закодировать видео в HEVC с использованием VAAPI через ffmpeg для достижения хорошего качества видео при разумных битрейтах
Введение
При переходе от кодека H264 к H265 (HEVC) многие пользователи сталкиваются с вопросами, связанными с качеством видео и размером файлов. Особенно это актуально для случаев, когда используются старые процессоры и требуется аппаратное ускорение для повышения скорости кодирования. В данной статье мы рассмотрим, как эффективно использовать ffmpeg с VAAPI для достижения хорошего качества видео при разумных битрейтах, особенно для разрешения 480p.
Шаги для кодирования в HEVC с помощью ffmpeg и VAAPI
-
Убедитесь, что ваше оборудование поддерживает VAAPI
Прежде чем начинать кодирование, убедитесь, что ваше оборудование поддерживает VAAPI и у вас установлены необходимые драйверы. Для проверки запустите следующую команду:vainfo
Если ваша система поддерживает VAAPI, вы увидите информацию о совместимых кодеках.
-
Установите ffmpeg с поддержкой VAAPI
Убедитесь, что у вас установлена версия ffmpeg, собранная с поддержкой VAAPI. Вы можете установить её через пакетный менеджер вашей системы или собрать самостоятельно из исходников. -
Выбор параметров кодирования
Для достижения хорошего качества видео при разумных битрейтах рекомендуется использовать следующие параметры кодирования:
- Разрешение: для вашего случая это 480p (854×480) или 720p (1280×720).
- Кодек: используйте
hevc_vaapi
для работы с VAAPI. - Контроль битрейта: хотя
-qp
(установка квантовального параметра) может давать хорошие результаты, попробуйте методы VBR (переменный битрейт).
-
Пример команды ffmpeg
Вот пример команды, которая может быть использована для кодирования вашего видео:ffmpeg -i input.mp4 -vf "scale=854:480" -c:v hevc_vaapi -qp 25 -b:v 800k -profile:v main -level 3.1 -c:a aac -b:a 128k output.mp4
Объяснение параметров:
-i input.mp4
: входной файл, который вы хотите закодировать.-vf "scale=854:480"
: применяется фильтр для изменения разрешения видео.-c:v hevc_vaapi
: установка видеокодека на HEVC с использованием VAAPI.-qp 25
: начальное значение квантовального параметра (поэкспериментируйте с этим значением).-b:v 800k
: установка целевого битрейта (может быть скорректирован в зависимости от ваших потребностей).-profile:v main
и-level 3.1
: определяют совместимость кодека.-c:a aac -b:a 128k
: кодирование аудиотрека с использованием AAC.
-
Тестируйте различные параметры
Качество и размер выходного файла могут сильно варьироваться в зависимости от содержания видео. Рекомендуется протестировать несколько различных значений-qp
и-b:v
, чтобы найти оптимальное сочетание для вашего материала. -
Анализируйте результаты
После завершения кодирования оцените качество выходного файла. Используйте видеоплеер с поддержкой HEVC для просмотра и сравнения с оригиналом. Также обратите внимание на размер файла, битрейт и визуальное качество.
Заключение
Кодирование видео из формата H264 в H265 с использованием VAAPI через ffmpeg может предоставить значительное сокращение размера файлов при сохранении качества на приемлемом уровне. Однако, как и в любом процессе кодирования, важно экспериментировать с параметрами, чтобы достичь наилучшего результата. Рекомендуется внимательно следить за изменениями в качестве и размере файла, а также адаптировать команды в соответствии с вашими потребностями.
Дополнительные ресурсы
Для глубокой настройки кодирования и получения помощи возможно использование инструментов, таких как VideoTranscodingTools от Don Melton, которые автоматизируют процесс и предлагают оптимальные настройки.
Эта информация должна помочь вам добиться успеха в вопросах кодирования видео с использованием VAAPI, обеспечивая хорошее видео качество при разумных битрейтах.