2016-12-29 10 views
1

Я рассматриваю возможность использования VP9 для кодирования моего BluRays в будущем, начиная с его кодека с открытым исходным кодом. Но я не могу заставить Handbrake или ffmpeg использовать более 50% (4) моих (8) ядер. Поэтому время кодирования намного хуже, чем x264/5, которое использует все ядра.Кодирование VP9 ограничено 4 потоками?

В ручном тормозе Я просто установил кодировщик в VP9 и CQ19. Нет разницы, если я добавлю «потоки 8», «потоки 16» или «потоки 64» в поле параметров.

Тестирование ffmpeg в командной строке ("-c: v libvpx-vp9 -crf 19 -threads 16 -tile-columns 6-frame-parallel 1-speed 0") также не использует больше потоков cpu.

Является ли текущий кодировщик не способным кодировать более чем 4 потока или я делаю что-то неправильно?

  • Linux Mint 18
  • ручной тормоз 0.10.2 + ds1-2build1
  • FFmpeg 2.8.10-0ubuntu0.16.04.1
  • libvpx3 1.5.0-2ubuntu1

ответ

6

Libvpx использует , что означает, что у вас может быть столько потоков, сколько количество плиток. Опция -tile-columns находится в формате log2 (так -tile-columns 6 означает 64 плитки), но также ограничена рамкой. Точные данные here, это в основном означает, что max_tiles = max(1, exp2(floor(log2(sb_cols)) - 2)), где sb_cols = ceil(width/64.0). Вы можете написать небольшой скрипт для расчета количества плитки для заданного горизонтального разрешения:

Width: 320 (sb_cols: 5), min tiles: 1, max tiles: 1 
Width: 640 (sb_cols: 10), min tiles: 1, max tiles: 2 
Width: 1280 (sb_cols: 20), min tiles: 1, max tiles: 4 
Width: 1920 (sb_cols: 30), min tiles: 1, max tiles: 4 
Width: 3840 (sb_cols: 60), min tiles: 1, max tiles: 8 

Таким образом, даже для 1080p (1920 пикселей по горизонтали), вы получите только 4 плитки макс, поэтому 4 нитей макс, т.е. битовый поток ограничение. Чтобы получить 8 плиток, вам нужна по крайней мере ширина 1985 пикселей (2048-64 + 1, что дает sb_cols = 32). Чтобы получить больше потоков, чем макс. количество плиток в заданном разрешении, вам нужна многопоточность на уровне кадра, которую libvpx не реализует. Другие кодеры, такие как x265/x264, реализуют это.

+0

Спасибо за ваше объяснение, знаете ли вы какой-либо другой способ получить VP9 с разумной производительностью? – kellerkindt

+1

Лучше всего использовать более высокие значения для параметра '-speed'. Если этого недостаточно или качество слишком сильно страдает от вашего предполагаемого использования, я боюсь, что вам не повезло ... –

+0

По-видимому, поскольку ffmpeg 3.3/libvpx 1.6.2, теперь есть поддержка '-row-mt = 1 ', которая обеспечивает лучшую распараметровку кодирования и более 4 потоков для контента 1080p. Ребята из мульчиров сходят с ума! - https://groups.google.com/a/webmproject.org/forum/#!topic/codec-devel/oiHjgEdii2U – Programster

 Смежные вопросы

  • Нет связанных вопросов^_^