История изменений
Исправление question4, (текущая версия) :
Возвращаясь к теме:
Список доступных ffmpeg кодеков можно вывести командой ffmpeg -encoders.
Список параметров для кодека выводится по ffmpeg -h encoder=av1_nvenc, ffmpeg -h encoder=h265_vulkan, ffmpeg -h encoder=vp9_vaapi и т.п.
Для теста перекодировал 33-секундную заставку Диснея в 1146x480 (отрезанную, если не ошибаюсь, от скачанного с Ютуба короткого мультфильма). Видео AV01, звук AAC. Исходный объём 3,8М, плюс звук 1,2М. VP90+OGG пережали его без заметных отличий в 0,9М, плюс звук 1,4М.
Nvidia, 5090:
Наилучшее сжатие без видимого ухудшения для h264_nvenc получилось с параметрами:
ffmpeg -i infile.mp4 -c:v h264_nvenc -multipass 2 -preset p7 -rc constqp outfile.mp4 — до 2,1М, звук 0,5М.
Без -rc constqp получается от 8,2M. -multipass 2 и -preset p7 дают небольшой выигрыш ~1%. Можно уменьшить видео ещё сильнее параметром -qp 27 (и выше), но уже для -qp 30 (1,3М видео) легко заметны искажения при быстрых движениях. Для максимального -qp 51 (всего 177k видео) видео разваливается на 76x30 пикселов, кроме совсем статичных кадров.
Изменение прочих параметров только увеличивает размер, поэтому оставил дефолтные.
Видео 1146x480 сжималось с 30-кратной скоростью, 1920x816 — с 13-кратной.
Наилучшее сжатие без видимого ухудшения для av1_nvenc получилось с параметрами:
ffmpeg -i infile.mp4 -c:v av1_nvenc -rc constqp outfile.mp4 — 1,0М, звук 0,5М
Многие комбинации параметров недоступны.
-qp 125 и выше позволяют ещё снизить размер, но всё быстро тонет в артефактах.
Различные -preset дают выигрыш до 2к или проигрыш до 3к, причём лучшие p2 и p5, а худшие p7 и slow.
-multipass дают проигрыш до 6к.
Без замедляющих пресетов и повторных проходов видео 1146x480 сжималось с 45-кратной скоростью, 1920x816 — с 30-кратной.
Наилучшее сжатие без видимого ухудшения для hevc_nvenc получилось с параметрами:
ffmpeg -i infile.mp4 -c:v hevc_nvenc -rc constqp outfile.mp4 — 1,6М, звук 0,5М
Пресеты slow, hq, p6 и p7 дают выигрыш 0,5к, 2к, 3к и 2к, остальные увеличивают.
Тоже можно брать -qp 27 и выше, снижая размер. -qp 30 почти догоняет AV1 выше — видео 1М, качество ненамного хуже.
1146x480 сжималось с 50-60-кратной скоростью.
Похоже, Nvidia долго вылизывала HEVC, но в итоге оказалось, что AV1 сжимает лучше :)
На Radeon и Vulkan постоянно сыпятся ошибки наподобие «CreateComponent(AMFVideoEncoderHW_AV1) failed with error 11» «Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.» Опробую их в следующий раз как-нибудь.
Исходная версия question4, :
Возвращаясь к теме:
Список доступных ffmpeg кодеков можно вывести командой ffmpeg -encoders.
Список параметров для кодека выводится по ffmpeg -h encoder=av1_nvenc, ffmpeg -h encoder=h265_vulkan, ffmpeg -h encoder=vp9_vaapi и т.п.
Для теста перекодировал 33-секундную заставку Диснея в 1146x480 (отрезанную, если не ошибаюсь, от скачанного с Ютуба короткоо мультфильма). Видео AV01, звук AAC. Исходный объём 3,8М, плюс звук 1,2М. VP90+OGG пережали его без заметных отличий в 0,9М, плюс звук 1,4М.
Nvidia, 5090:
Наилучшее сжатие без видимого ухудшения для h264_nvenc получилось с параметрами:
ffmpeg -i infile.mp4 -c:v h264_nvenc -multipass 2 -preset p7 -rc constqp outfile.mp4 — до 2,1М, звук 0,5М.
Без -rc constqp получается от 8,2M. -multipass 2 и -preset p7 дают небольшой выигрыш ~1%. Можно уменьшить видео ещё сильнее параметром -qp 27 (и выше), но уже для -qp 30 (1,3М видео) легко заметны искажения при быстрых движениях. Для максимального -qp 51 (всего 177k видео) видео разваливается на 76x30 пикселов, кроме совсем статичных кадров.
Изменение прочих параметров только увеличивает размер, поэтому оставил дефолтные.
Видео 1146x480 сжималось с 30-кратной скоростью, 1920x816 — с 13-кратной.
Наилучшее сжатие без видимого ухудшения для av1_nvenc получилось с параметрами:
ffmpeg -i infile.mp4 -c:v av1_nvenc -rc constqp outfile.mp4 — 1,0М, звук 0,5М
Многие комбинации параметров недоступны.
-qp 125 и выше позволяют ещё снизить размер, но всё быстро тонет в артефактах.
Различные -preset дают выигрыш до 2к или проигрыш до 3к, причём лучшие p2 и p5, а худшие p7 и slow.
-multipass дают проигрыш до 6к.
Без замедляющих пресетов и повторных проходов видео 1146x480 сжималось с 45-кратной скоростью, 1920x816 — с 30-кратной.
Наилучшее сжатие без видимого ухудшения для hevc_nvenc получилось с параметрами:
ffmpeg -i infile.mp4 -c:v hevc_nvenc -rc constqp outfile.mp4 — 1,6М, звук 0,5М
Пресеты slow, hq, p6 и p7 дают выигрыш 0,5к, 2к, 3к и 2к, остальные увеличивают.
Тоже можно брать -qp 27 и выше, снижая размер. -qp 30 почти догоняет AV1 выше — видео 1М, качество ненамного хуже.
1146x480 сжималось с 50-60-кратной скоростью.
Похоже, Nvidia долго вылизывала HEVC, но в итоге оказалось, что AV1 сжимает лучше :)
На Radeon и Vulkan постоянно сыпятся ошибки наподобие «CreateComponent(AMFVideoEncoderHW_AV1) failed with error 11» «Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.» Опробую их в следующий раз как-нибудь.