Я уже излагал свой опыт решения проблемы воспроизведения HD видео, ссылки на две старые заметки привожу в конце. Теперь у меня есть что добавить. Остановлюсь на специфической области – воспроизведение телевизионных HD потоков, т.е. ts файлов захваченных в основном со спутников. К написанию заметки меня подтолкнуло вот это обсуждение. С обычными фильмами проблем с воспроизведением практически нет, разве что иногда надо за производительность побороться. Здесь ситуация иная, зачастую ни один из плееров не дает качественный результат.
Кодеки H.264
| кодек | цена | число потоков | GPU ускорение |
| ffdshow | бесплатный | 1 | нет |
| ffdshow mpc-hc | бесплатный | до 8 | DXVA |
| powerdvd8 | платный | 6 | DXVA |
| divx7 | бесплатный | до 4 | нет |
| core avc | платный | 2 точно есть | CUDA |
Два последних я отбросил. С divx7 я сталкивался с проблемами декодирования, а именно подергивание картинки на потоке, где остальные четко работали. Может это поправят, но я вполне обхожусь без него. Core AVC славится своей скоростью, но и более низким качеством результата, кроме того не поддерживает DXVA – я его и раньше не рассматривал и сейчас проигнорирую. Итого остается три кодека – ffdshow, ffdshow mpc-hc и powerdvd8.
Плееры
| плеер | цена | установка | поддержка | h.264 | комментарий |
| powerdvd8 | платный | да | нет | powerdvd8 | играет dvd, avi, ts, m2ts, wmv |
| mpc-hc | бесплатный | нет | да | ffdshow mpc-hc или внешний | играет все |
| smplayer | бесплатный | нет | нет | ffdshow | играет все |
| vlc | бесплатный | нет | нет | ffdshow | играет все |
| kmplayer | бесплатный | нет | да | ffdshow или внешний | играет все |
Сам я ограничиваюсь только тремя первыми плеерами, два последних я добавил для полноты теста.
Тестовые материалы
| тест | название | ТВ канал | кодек, профиль, [reframes,] разрешение, fps |
| 1 | IMAX Great North | Mojo HD | mpeg-2, main@high, 1080i, 30fps |
| 2 | Авиашоу | Life HD | avc, main@l4.0, r=4, 1080i, 25fps |
| 3 | Человек, который покорил Эверест | Телепутешествия HD | avc, main@l4.0, r=4, 1080i, 25fps |
| 4 | ATP Australian Open 2009 final | нтв+ спорт hd | avc, main@l4.0, r=4, 1080i, 25fps |
| 5 | ATP Doha 2009 final | eurosport hd в нтв+ | avc, main@l4.0, r=4, 1080i, 25fps |
| 6 | ATP London 2009 Federer vs Davidenko | sky sport hd2 | avc, main@l4.0, r=4, 1080i, 25fps |
| 7 | ATP London 2009 Federer vs Del Potro | нтв+ спорт hd (nbc) | avc, main@l4.0, r=4, 1080i, 25fps |
| 8 | ATP Wimbledon 2009 final | нтв+ спорт hd (bbc) | avc, main@l4.0, r=4, 1080i, 25fps |
| 9 | Открытие зимних олим. игр 2010 | europort hd, платформа hd | avc, main@l4.0, r=4, 1080i, 25fps |
| 10 | Anna Netrebko & Rolando Villazon - Paris | hd suisse | avc, main@l4.0, r=2, 720p, 50fps |
| 11 | Muse - A Seaside Rendezvous | bbc | mpeg-2, main@high, 1080i, 30fps |
| 12 | Vienna – New Year's Concert | orf 2 hd | avc, main@l4.0, r=2, 720p, 50fps |
| 13 | Дьявол носит Прада | sky | mpeg-2, main@high, 1080p, 25fps |
Подборка покрывает почти все варианты каналов, которые у меня обнаружились. Кроме h.264 (avc) имеется три примера с потоком mpeg-2, который до сих пор иногда используется в hd вещании. Обратите внимание на 10 и 12 пример – там разрешение 720p, но при этом 50fps, выглядит надо сказать очень неплохо, читал, что 720p от 1080i нельзя отличить на глаз. Про профили и reference frames можно посмотреть в wikipedia тут. В следующих заметках я к профилям еще вернусь, там есть о чем поговорить.
Результаты теста
Тестовое окружение: Intel Core 2 Duo E8500 3.16 GHz, ATI HD 4850 512 MB, Windows XP SP3.
| тест | powerdvd8 (powerdvd8) | vlc (ffdshow) | mpc-hc (powerdvd8) | mpc-hc (ffdshow mpc-hc) | smplayer (ffdshow) | kmplayer (ffdshow) |
| 1 | ok | не открыл | ok (=mpc-hc) | ok | дергание картинка плывет сбои перемотки нужен DI | ok |
| 2 | ok | tearing нужен DI | ok | сбои перемотки | не открыл | не открыл |
| 3 | ok | tearing падает перемотка нужен DI | ok | сбои перемотки | неверный fps нет перемотки нужен DI | дергание артефакты |
| 4 | ok | tearing до 70% 1 core без DI нужен DI размытие движения | ok | дрожание нет перемотки | нет звука нет перемотки неверный fps нужен DI | артефакты размытие движения нужен DI |
| 5 | ok | tearing размытие движения нужен DI | ok | дрожание нет перемотки | неверный fps сбои перемотки нужен DI | артефакты размытие движения нужен DI |
| 6 | ok | tearing до 70% 1 core без DI нужен DI размытие движения | ok | дрожание | неверный fps сбои перемотки нужен DI | артефакты размытие движения нужен DI |
| 7 | ok | tearing до 70% 1 core без DI нужен DI размытие движения | ok | дрожание сбои перемотки | неверный fps сбои перемотки нужен DI | артефакты размытие движения нужен DI |
| 8 | ok | tearing пропадает перемотка нужен DI размытие движения | падает перемотка | показывает один кадр нет перемотки | неверный fps сбои перемотки нужен DI | артефакты размытие движения нужен DI |
| 9 | ok | tearing нужен DI | сбои перемотки | нет перемотки | нет звука нет перемотки неверный fps | нет изображения |
| 10 | ok | нет перемотки | ok | ok | нет перемотки | ok |
| 11 | ok | tearing нужен DI | ok (=mpc-hc) | ok | сбои перемотки нужен DI | ok |
| 12 | ok | tearing нужен DI | ok | ok | нет перемотки | ok |
| 13 | ok | tearing | ok (=mpc-hc) | ok | сбои перемотки | ok |
Tearing – это очень неприятный эффект ступеньки при просмотре видео, заметен при боковом движении камеры. У меня почему-то им болеет VLC, решить не пытался, но везде пометил, что он есть.
Нужен DI – это значит требуется дополнительно вручную включать deinterlace, причем обычно он программный и требует дополнительных ресурсов. Но есть и аппаратные реализации, см. ниже.
Выводы
По кодекам. DXVA ускорение гарантирует плавность воспроизведения, плюс необходим автоматический аппаратный деинтерлейсинг. На спортивных трансляциях особенно хорошо виден эффект от плохого деинтерлейсинга – например полет мяча смазывается. Автоматически и средствами GPU деинтерлейсинг делают кодеки powerdvd8 и ffdshow mpc-hc, они же имеют поддержку DXVA. ffdshow - оутсайдер.
По плеерам. Для ts потоков со спутников идеально подходит плеер powerdvd8, как возможная альтернатива - mpc-hc с подключенным кодеком powerdvd8. Остальные плееры несмотря на свою всеядность и практически 100% совместимость с различными HD фильмами, показали свою несостоятельность на таком материале. Причина как я думаю кроется в недостаточно корректной поддержке формата ts и плохой защищенности от сбоев в потоке, что является обычным делом в телевещании.
Ссылки
Использование кодеков H.264: ffmpeg, ffmpeg DXVA, PowerDVD8 H.264 DXVA, Divx7 H.264.Скорость воспроизведения HD видео. Ускорение DXVA в кодеках H.264. Кодеки ffmpeg, PowerDVD8, divx7.
February 20 2010, 03:49:12 UTC 2 years ago
Сейчас вроде есть уже PowerDVD 9. Не знаете, в нём есть дальнейшие улучшения?
February 20 2010, 05:56:59 UTC 2 years ago
В курсе, что есть powerdvd9, но не пробовал и пока нет смысла, т.к. его кодек h.264 от 8-ой версии прекрасно работает, но может посмотрю позднее.
February 21 2010, 01:17:24 UTC 2 years ago
По-моему, в GOM Player'е опция "Enable Quick Play Mode" - это не ухудшенное качество. :) Там написано, что эта опция (1) выключает internal video filter и (2) enables DXVA acceleration.
February 21 2010, 01:18:18 UTC 2 years ago
February 20 2010, 04:36:06 UTC 2 years ago
February 20 2010, 05:59:44 UTC 2 years ago
Т.е. некоторые с виду вроде как тормозят - я пометил, как неверный fps, процессорной мощности дофига, а вот воспроизведение идет криво. Но может и CPU в твоем случе не хватало.
February 21 2010, 01:36:16 UTC 2 years ago
Я пользуюсь двумя плеерами: GOM Player'ом и KMPlayer'ом - когда-то Голубицкий в Компьютерре их прорекламировал :), они мне понравились и теперь я ползуюсь только ими.
Теперь, похоже, оба смогут играть 720р и 1080i ts-потоки: GOM Player, как я написал выше, имеет простенькую галочку, которая включает DXVA, а в KMPlayer можно добавить кодек mpc-hc (и кодек от powerdvd тоже) и включить DXVA. Ура! :)
February 21 2010, 14:51:44 UTC 2 years ago
February 21 2010, 15:26:40 UTC 2 years ago
ffdshow с dxva вобщем изначально из mpc и не вижу смысла его пробовать еще в kmplayer
Согласен. Но, с другой стороны, кодек от powerdvd вы же пробуете с "неродным" ему mpc-hc. В общем, вам нравится mpc-hc, мне - GOM Player и KMPlayer, другим - ещё какие-нибудь VLC Player'ы и SMPlayer'ы. :)
Кстати, у KMPlayer'а, как я только что выяснил, тоже есть кнопочка для переключения аудио-дорожек - это кнопка слева от тайм-кода, на которой написан текущий кодек и количество каналов (вы про SMPlayer писали, что там такая удобная кнопка есть).
А про GOM Player - меня просто очень удивило наличие одной простой галочки, которая вроде бы включает DXVA. При том, что в других плеерах надо какие-то кодеки подключать и прочее. Может быть, проверите его - вдруг он ваши файлы будет тоже хорошо играть? Интересно было бы сравнить его с другими плеерами.
February 21 2010, 17:40:34 UTC 2 years ago
February 21 2010, 18:24:21 UTC 2 years ago
Anonymous
March 14 2010, 18:14:36 UTC 2 years ago
March 14 2010, 19:03:34 UTC 2 years ago
Кстати в начале ветки приведены результата теста - там результат работы core avc назван неприемлимым.