Чому кодування 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-ядерний машині, при кодуванні 1080-30p H.264 потоку, я отримую удар від 3.8 fpsдо 10 fps.


Слід також зазначити, що існують різні пресети швидкості, тобто -presetдля libx264і -speedдля libvpx-vp9. Див ffmpeg -h full. Вони можуть дуже змінити, але вони також впливають на якість або ефективність стиснення.
slhck

1
Я спробував це на досить старих машинах, але я використав 4 потоки, оскільки обидві машини чотириядерні. Цей -speedваріант не
змінив

@comfreak Дивіться також: developers.google.com/media/vp9/the-basics
slhck

3

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


1
Інакше кажучи, незважаючи на те, що кодек "тільки" забезпечує порівняно невелике поліпшення розміру, це може бути набагато повільніше? Чи є результати, які я отримав репрезентативними?
конфлікт

1
VP9 може бути до 50% ефективнішим з точки зору якості, @comfreak. Я б не називав це маленьким. Ви не можете просто порівняти отриманий розмір файлу.
slhck

@slhck: Отже, ви говорите, що 3MBit / s може кодувати більш оригінальну інформацію, ніж H.264, і, отже, менша швидкість передачі бітів, ніж вихідний матеріал у H.264, може бути варіантом для прискорення роботи?
comfreak

1
@comfreak Використання нижнього бітрейта не автоматично збільшуватиме швидкість процесу кодування. Я просто кажу, що між ефективністю та швидкістю стиснення є компроміс, і багато постачальників потокових передач, наприклад, краще вкладуть час процесора для створення потоків вищої якості при меншому загальному бітрейті, щоб заощадити простір та пропускну здатність. Використання більш ефективних кодеків (наприклад, VP9 або HEVC над H.264) також допомагає в цьому плані.
slhck

Але по суті, якщо швидкість є найважливішим фактором для вас, вам слід дотримуватися старих кодеків (наприклад, H.264), менш ефективних стискань пресетів, а також, можливо, також вивчити кодування, що підтримується GPU, наприклад, з NVENC.
slhck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.