Почему кодирование VP8 / 9 такое медленное по сравнению с H.264?

11

Недавно я хотел опробовать кодеки Webm VP8 и VP9, ​​но когда я побежал ffmpegкодировать файл H.264 MP4 в один из двух других кодеков, я понял, что кодирование (почти на порядок) медленнее.

Видео 1080p30 от H.264 до VP9 со скоростью 3 Мбит / с кодируется со скоростью около 6-7 кадров в секунду, в то время как то же видео кодируется со скоростью около 40 кадров в секунду до H.264. Я использовал libvpx-vp9кодек ffmpegдля формата VP9. Я получаю одинаковые результаты для VP8 и Theora тоже.

Может кто-нибудь объяснить мне, почему VP9 намного медленнее? Я попробовал другую машину, которая дала мне похожие результаты, используя Handbrake.

comfreak
источник
askubuntu.com/questions/270625/…
Сиро Сантилли 冠状 病毒 审查 六四 事件 法轮功

Ответы:

11

libvpx-vp9это гораздо более медленный кодировщик, libx264но настройки по умолчанию для потоков в ffmpeg (0 = auto) не эффективны для libvpx. Ручная настройка дает ускорение. например

ffmpeg -i in.mp4 -c:v libvpx-vp9 -threads 4 out.mp4

На 4-ядерном компьютере при кодировании потока H.264 1080-30p я получаю удар от 3.8 fpsдо 10 fps.

Gyan
источник
Следует также отметить, что существуют разные предустановки скорости, т. Е. -presetДля libx264и -speedдля libvpx-vp9. См ffmpeg -h full. Они могут иметь большое значение, но они также влияют на качество или эффективность сжатия.
Slhck
1
Я попробовал это на довольно старых машинах, но я использовал 4 потока, так как обе машины были четырехъядерными. -speedВариант не делает большой разницы для меня
comfreak
@comfreak См. также: developers.google.com/media/vp9/the-basics
slhck
3

VP9 - более сложный кодек, обеспечивающий лучшее сжатие. Коэффициент сжатия видео / производительность имеет тенденцию к экспоненциальному росту. Вы должны ожидать, что замена VP9 (AV1) будет еще медленнее.

szatmary
источник
1
Другими словами, хотя кодек «только» производит сравнительно небольшое увеличение размера, он может быть намного медленнее? Являются ли результаты, которые я получил представитель?
comfreak
1
@9ffreak VP9 может быть на 50% более эффективным с точки зрения качества. Я бы не назвал это маленьким. Вы не можете просто сравнить полученный размер файла.
slhck
@slhck: То есть вы говорите, что 3MBit / s может кодировать больше исходной информации, чем H.264, и, следовательно, более низкая скорость передачи данных, чем у исходного материала в H.264, может быть вариантом для ускорения процесса?
comfreak
1
@comfreak Использование более низкой скорости передачи не приведет к автоматическому увеличению скорости процесса кодирования. Я просто говорю, что существует компромисс между эффективностью сжатия и скоростью, и многие потоковые провайдеры, например, предпочли бы потратить процессорное время на создание потоков более высокого качества с более низкой общей скоростью передачи битов, чтобы сохранить пространство и пропускную способность. Использование более эффективных кодеков (таких как VP9 или HEVC поверх H.264) также помогает в этом отношении.
slhck
Но, по сути, если скорость является наиболее важным фактором для вас, вам следует придерживаться более старых кодеков (например, H.264), менее эффективных пресетов сжатия и, возможно, также изучать кодирование с помощью графического процессора, например, с помощью NVENC.
slhck