Working with video
January 2012 23

HD-видео на компьютере: CPU, DXVA, Hi10P, плееры

     

Казалось бы, такая обыденная задача, как воспроизведение видео не должна вызывать никаких проблем, но по прежнему это не совсем так.

Т.к. речь идет о HD-видео, то потребуется высокая производительность декодера. Например, если декодериуем на CPU, то на потоках 30-35 MBps на Intel Core2 Duo E8500 3.2 GHz уже начинают выпадать кадры. Процессор довольно быстрый, разница в производительности по сравнению с ядром Sandy Bridge на той-же частоте будет порядка 20%. Качественно пережатый full-HD фильм может создать проблемы, не говоря уж об оригинальных потоках с Blu-ray, там поток может достигать 45 MBps. Обладатели ноутбуков обычно имеют процессоры послабее, да и настольные системы не у всех с мощными CPU. Еще один случай, где CPU становится узким местом – это deinterlacing. Deintrlacing необходим при просмотре потоков спутниковых HD каналов, потоки там с разумным bitrate (обычно 10-15 MBps), но программный deintarlace съедает все остатки ресурсов. Причем качественный deinterlace, без замыливания и с сохранением fps, тяжелы для CPU. Единственный выход – использовать аппаратное декодирование, которое предлагают современные GPU. Про видео со спутниковых каналов следует отметить, что они бывают частично поврежденными, т.к. прием не всегда идеален, поэтому важно, чтобы плеер стабильно переваривал такие “срывы” потока.

В Windows аппаратное декодирование реализовано через API DXVA. Все современные GPU AMD и Nvidia реализуют DXVA отдельным физическим модулем (AMD – UVD, Nvidia – PureVideo). Эти модули сделаны специально для этой задачи, работают они практически идентично как в видеокартах начального так и старшего класса. У Intel-а ситуация сложнее. Только в ядрах CPU Sandy Bridge Intel добавил модуль Intel Clear Video HD. Предыдущие поколения графики Intel, формально выполняли ускорение, но реализация была с использованием шейдеров GPU, чего хватало только для 720p видео и как мне кажется было сильно неэффективно в смысле затрат энергии. По этой причине обладатели большинства ноутбуков с графикой Intel не могут себе позволить просмотр full-HD видео. Загрузка CPU при использовании DXVA составляет несколько процентов, при этом DXVA обеспечивает высокое качество deinterlace. Производители дают дополнительные настройки декодирования, например сглаживание движения в 24/25 fps фильмах через генерацию промежуточных кадров (подобная функциональность имеется в телевизорах), устранение шумов и пр.

На практике нередко встречаются потоки выходящие за рамки спецификаций Blu-ray и с этим были проблемы у DXVA декодеров. Первой здесь оказалась AMD, которая обеспечила поддержку профиля H.264 L5.1. Не знаю как с этим у Nvidia и Intel, поэтому пока рекомендую решения AMD.

Есть еще одно новшество — профиль H.264 High 10 Profile (Hi10P). Hi10P преподносят (хабр) как следующий шаг в развитии сжатия видео. Выяснилось, что если внутри кодека использовать 10-битную дискретизацию сигнала, то можно обеспечить 20-40% (?!) прироста сжатия при сохранении качества. Главный плюс – улучшение передачи градиентов, что видно даже при выводе на экраны с обычной глубиной цвета (8-бит на канал). Известно, что анимешники находятся в авангарде использования новинок кодирования видео и вот появились группы релизеров, которые выкладывают видео закодированное в этом профиле. Этот профиль не понимает большинство кодеков и уж тем более аппаратные плееры и DXVA реализации. Декодирование проходит только софтовыми декодерами, которые при этом еще сильнее нагружают CPU. Не все пользователи имеют топовые процессоры и это вызывает негодование публики, но не останавливает авторов релизов, которые иногда не дают альтернатив Hi10P. Но все это носит характер локальной проблемы в среде некоторых анимешных релизеров.

Замечание по поводу внешних кодеков H.264. Ранее я пытался использовать дополнительные внешние кодеки Divx H.264 DXVA и PowerDVD8 H.264 DXVA, теперь от них отказался. PowerDVD8 H.264 – это старая версия, которая не развивается и имеет проблемы при работе в Windows 7, а нв Divx H.264 я неоднократно замечал проблемы с неравномерностью воспроизведения. В Windows 7 есть встроенный кодек Microsoft H.264 с поддержкой DXVA, который оказался очень стабильным и я его давно использую в качестве базового в Media Player Classic Home Cinema.

При выборе плеера руководствуюсь следующими принципами: не замусоривать систему кодеками; поддержка DXVA; всеядность – разные контейнеры и кодеки; по возможности поддержка Hi10P.

VLC Player

Плюсы
  • Поддержка DXVA появилась уже давно, но пока считается beta, поэтому надо включать GPU ускорение в опциях (Tools/Preferences/Input & Codecs/Use GPU acceleration (experimental)).
  • Всеядный, обычно, если что-то нигде не идет, то он переваривает.

Минусы
  • Загрузка CPU в DXVA раза в 2-3 больше чем у других, он использует разрыв потока стандартного конвейера для того, чтобы можно было применять софтовые фильтры.
  • Нетривиальное управление масштабированием. Масштабировать можно по заготовленным пресетам или хитро обрезать с разных сторон.
  • Нельзя использовать внешние кодеки (например MS H.264).
Media Player Classic Home Cinema

Плюсы
  • Всеядный, имеет множество встроенных кодеков, в частности есть встроенные с поддержкой DXVA.
  • Можно подцеплять внешние кодеки, например кодек MS H.264 (View/Options/External Filters – добавить MS DTV-DVD Video Decoder, сделать его Prefer, в Internal Filters отключить встроенный H264).
  • Удобный и гибкий интерфейс.
Windows Media Player 12 (часть Windows 7)

Плюсы
  • Поддержка DXVA через кодеки из системы.
  • Стабилен при работе с потоками спутниковых каналов.
  • Удобная и продвинутая музыкальная библиотека, но это не относится к теме видео.

Минусы
  • Слабая поддержка форматов, только: ts, m2ts, mov, avi, wmv.
  • Нет масштабирования.
  • Нет нормальной поддержки субтитров.
  • Нет переключения аудиодорожек.
  • Гибкость минимальна, практически ничего настроить нельзя.
XBMC

Это родитель двух других мощных медиа центров – boxee и mediaportal, они в разное время отпочковались от XBMC.

Плюсы
  • Это не просто плеер, это медиа центр. Красивый интерфейс, медиатека с закачкой картинок и описаний с imdb/kinopoisk и пр.
  • С недавних пор добавили поддержку DXVA. Немного погонял, вроде все хорошо. DXVA по умолчанию выключен, надо в опциях включить.
  • Всеяден.

Минусы
  • Чтобы заставить четко работать медиатеку (распознавание названия и загрузка инф-ии из интернета), надо порядочно повозиться. Но можно обойтись простой навигацией по файлам.
  • Навигация по медиатеке довольно разнообразна, но не хватает продвинутой фильтрации и поиска, это будет актуально, если фильмов много.
  • Для медиатеки хотелось бы иметь поля пользователя, чтобы можно было более эффективно фильтровать.
  • Управление больше заточено под пульт, с клавиатуры не все можно быстро сделать.
SMPlayer

Плюсы
  • Всеяден.
  • Удобный интерфейс, сразу под рукой кнопки выбора аудиодорожки и субтитров.

Минусы
  • Нет поддержки DXVA, поэтому на тяжелых потоках возможны пропуски, по этой же причине не идеален и сильно грузит CPU deinterlace.
UMPlayer

Родственник SMPlayer, интерфейсы очень близки.

Плюсы
  • Всеяден.
  • Поддерживает H.264 Hi10p. SMPlaer тоже использует кодеки mplayer, однако Hi10P там почему-то не поддерживается.

Минусы
  • Нет поддержки DXVA, поэтому на тяжелых потоках возможны пропуски, по этой же причине не идеален и сильно грузит CPU deinterlace.

Вывод из моей практики: номер 1 – это MPC-HC, если проблемы – использую VLC, спутниковые потоки иногда с меньшими проблемами идут в WMP.

PS Есть конечно еще и другие плееры, я перечислил то, чего сам касался и использую.
+37
111.3k 211
Comments 164