Почему кодирование 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.


Ответы:


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.


Следует также отметить, что существуют разные предустановки скорости, т. Е. -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) будет еще медленнее.


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.