Если MKV тормозит на новой видеокарте

Так же ищут: DXVA, ffdshow, mkv, h264


Здравствуйте.

mkv видеоНе так давно столкнулся с проблемой: mkv видео тормозило на компьютере с достаточно приличной видеокартой. Собственно смысл проблемы был ясен практически сразу – вся работа по раскодированию видео производилась на  центральном процессоре, хотя по всем правилам должна была бы производиться на GPU. Я перебрал ряд плееров – эффект был, но лишь относительный: в одном плеере видео тормозило, в других «фризилось», где-то вообще останавливалось на определенном кадре.

После прочтения нескольких статей я наткнулся на описание технологи DXVA (DirectX Video Acceleration). Если сказать проще, то DXVA часть DirectX, которая позволяет перенести на графический процессор большинство сложных операций по преобразованию видео потока.
Да, нужно расстроить часть читателей – DXVA  поддерживается не всеми видеокартами. Хотя нужно отметить, что ряд поддерживающих устройств достаточно широкий:

  • ATI X12xx, X16xx, X18xx, X19xx и все Radeon HD
  • NVidia GeForce серий 6xxx, 7xxx, 8xxx, 9xxx, GTX 2xx
  • Intel GM 4500 HD

DXVA может работать и с mkv видео, ffdshow DXVA video decoder есть в пакете k-lite, проблема в том, что эта опция выключена по умолчанию. После включения аппаратного ускорения для mkv я получил то, что искал. Вся нагрузка перешла с центрального процессора на графический процессор видеокарты; видео перестало тормозить в принципе, если раньше во время воспроизведения FPS плавал от 23 до 10, то теперь он как будто стал константой 23.97.

Эффект можно понять даже просто запустив диспетчер задач и перейдя на вкладку быстродействие. В первом случае (без DXVA) процессор загружен на 20 – 35%, этой загрузки хватает, чтобы при резкой смене видео кадра начинались тормоза. Во втором случае процессор загружен лишь на несколько процентов, что скорее связано большим объемом видео потока, нежели с его обработкой.

без DXVA

без DXVA

с использованием ffdshow DXVA

с использованием ffdshow DXVA

Теперь к практике (перед началом неплохо было бы обновить DirectX):

1. Скачиваем свежие кодеки k-lite с официального сайта , скачивайте Full версию, на всякий случай.

2. Устанавливаем кодеки.

3. Запускаем mkv видео в media player classic, чтобы удостовериться в том, что DXVA пока не активен. Смотрим в трей  и видим там 2 значка ffdshow кодеков.

иконки в трее

иконки в трее

Это говорит нам о том, что видео и аудио в данный момент декодируется обычным ffdshow декодером. Нас же интересует ffdshow DXVA, поэтому закрываем плеер и идем далее.

4. Нажимаем «Пуск» , далее «Все программы», «K-Lite Codec Pack», «Configuration», «ffdshow DXVA video decoder»

Переходим к настройке

Переходим к настройке

5. В появившемся окне конфигурации переходим в пункт «Hardware acceleration», и там включаем галочку h246 (это mkv).

Окно настроек

Окно настроек

6. Жмем применить, закрываем настройки, запускаем mkv видео. Если видим в трее значок ffdshow DXVA, то сделали все верно – остальное за видео картой.

Метки: ,

Комментарии запрещены.