Ilya Matveev ([info]ilya_314) wrote,

Воспроизведение HD видео. Специфика телевизионных HD потоков (TS).

Я уже излагал свой опыт решения проблемы воспроизведения 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.

  • Post a new comment

    Error

  • 13 comments

[info]spartanus

February 20 2010, 03:49:12 UTC 2 years ago

Я сейчас смотрю 720р ts-потоки (с Олимпиады) при помощи GOM Player'а с включённой галочкой Preferences -> Filter -> Internal Filters -> Enable Quick Play Mode.

Сейчас вроде есть уже PowerDVD 9. Не знаете, в нём есть дальнейшие улучшения?

[info]ilya_314

February 20 2010, 05:56:59 UTC 2 years ago

Я в пост добавил строчки "Тестовое окружение:", указал там железо. Железо там не является узким местом. Т.е. если тормозит из-за CPU, то только на очень высоких битрейтах с деинтерлейсингом, здесь проблемы и без деинтерлейсинга, тем более на 720p. Загрузку CPU я отслеживал. Кроме того вариант fast декодирования с ухудшением качества мало интересен, а другие проблемы, которые совсем не связаны с производительностью эта опция думаю не решит. В любом случае 720p возможно должен иметь меньше проблем нежели 1080i, это и тест показывает.

В курсе, что есть powerdvd9, но не пробовал и пока нет смысла, т.к. его кодек h.264 от 8-ой версии прекрасно работает, но может посмотрю позднее.

[info]spartanus

February 21 2010, 01:17:24 UTC 2 years ago

вариант fast декодирования с ухудшением качества мало интересен

По-моему, в GOM Player'е опция "Enable Quick Play Mode" - это не ухудшенное качество. :) Там написано, что эта опция (1) выключает internal video filter и (2) enables DXVA acceleration.

[info]spartanus

February 21 2010, 01:18:18 UTC 2 years ago

Потом, у меня не очень сильный ноутбук - так что мои проблемы с 720р ts-потоком, скорее всего, аналогичны вашим проблемам с 1080i ts-потоком.

[info]zakhars

February 20 2010, 04:36:06 UTC 2 years ago

Насчет "Anna Netrebko & Rolando Villazon - Paris" - а я все думаю, чего у меня так тормозит эта запись :) Теперь понял. А смотрится действительно ооочень качественно.

[info]ilya_314

February 20 2010, 05:59:44 UTC 2 years ago

Я в тесте добавил конфигурацию железа. Тут ни один из тестов не упирался в CPU, только в комбинации с тяжелым программным deinterlace в некоторых роликах, но проблемы там были и без deinterlace.

Т.е. некоторые с виду вроде как тормозят - я пометил, как неверный fps, процессорной мощности дофига, а вот воспроизведение идет криво. Но может и CPU в твоем случе не хватало.

[info]spartanus

February 21 2010, 01:36:16 UTC 2 years ago

Про KMPlayer. Здесь (http://nunnally.ahmygoddess.net/configuring-kmplayer-to-play-h-264-videos-using-microsofts-directx-video-acceleration-dxva-and-nvidias-compute-unified-device-architecture-cuda/) и здесь (http://www.cos-soft.eu.pn/tutorialkmplayer.html) нашёл пошаговую инструкцию, как подключать кодек mpc-hc в KMPlayer'е и включать в нём DXVA.

Я пользуюсь двумя плеерами: GOM Player'ом и KMPlayer'ом - когда-то Голубицкий в Компьютерре их прорекламировал :), они мне понравились и теперь я ползуюсь только ими.

Теперь, похоже, оба смогут играть 720р и 1080i ts-потоки: GOM Player, как я написал выше, имеет простенькую галочку, которая включает DXVA, а в KMPlayer можно добавить кодек mpc-hc (и кодек от powerdvd тоже) и включить DXVA. Ура! :)

[info]ilya_314

February 21 2010, 14:51:44 UTC 2 years ago

Да, я в курсе, что в kmplayer можно кодеки присоединять, но я его оставил только как один из вариантов кодека ffdshow. ffdshow с dxva вобщем изначально из mpc и не вижу смысла его пробовать еще в kmplayer. kmplayer вещь конечно крутая, даже слишком, там можно такого намудрить, что мало не покажется. mpc со своей гибкостью кажется верхом интуитивности по сравнению с kmplayer. Но мне лично пока mpc достаточно, точнее mpc-hc.

[info]spartanus

February 21 2010, 15:26:40 UTC 2 years ago

Ну просто очень хорошо, что с KMPlayer'ом тоже всё работает, - я им давно пользуюсь, мне в нём нравится (1) красивый, неброский и удобный интерфейс (2) куча возможностей; понятно, что всеми не пользуешься, но когда что-то надо - оказывается, что оно там уже есть :). В общем, я рад, что не надо привычные плееры менять.

ffdshow с dxva вобщем изначально из mpc и не вижу смысла его пробовать еще в kmplayer

Согласен. Но, с другой стороны, кодек от powerdvd вы же пробуете с "неродным" ему mpc-hc. В общем, вам нравится mpc-hc, мне - GOM Player и KMPlayer, другим - ещё какие-нибудь VLC Player'ы и SMPlayer'ы. :)

Кстати, у KMPlayer'а, как я только что выяснил, тоже есть кнопочка для переключения аудио-дорожек - это кнопка слева от тайм-кода, на которой написан текущий кодек и количество каналов (вы про SMPlayer писали, что там такая удобная кнопка есть).


А про GOM Player - меня просто очень удивило наличие одной простой галочки, которая вроде бы включает DXVA. При том, что в других плеерах надо какие-то кодеки подключать и прочее. Может быть, проверите его - вдруг он ваши файлы будет тоже хорошо играть? Интересно было бы сравнить его с другими плеерами.

[info]ilya_314

February 21 2010, 17:40:34 UTC 2 years ago

C подключением powerdvd к mpc все довольно просто - сам powerdvd по многим показателем не подходит. Он не понимает mkv, не умеет переключать аудиодорожки и показывать титры, а вот кодек у него хороший. Хотя для спутниковых рипов он оказывается идеальным вариантом, т.к. там эти недостатки не имеют значения.

[info]spartanus

February 21 2010, 18:24:21 UTC 2 years ago

Да, сложно всё устроено в деле проигрывания HD-контента... Поэтому, действительно, моей маме проще купить железный плеер, чем со всеми этими кодеками разбираться. :)

Anonymous

March 14 2010, 18:14:36 UTC 2 years ago

На форуме IXBT- "Лучший декодер\вариант для проигрывания чересстрочного\интерлейсного видео формата AVC\H264\x264" выяснилось что CoreAVC кодек тоже типа "DXVA", использует сопроцессор Nvidia VP2 через CUVID (CUDA Video Decoder API).

[info]ilya_314

March 14 2010, 19:03:34 UTC 2 years ago

Я в начале заметки отметил, что Core AVC использует CUDA. У меня сложилось впечатление, что по отзывам у него качество декодирования не очень высокое. А что касается CUDA, то я где-то смотрел тест и видел, что CUDA версия Core AVC грузила CPU сильнее DXVA варианта уже не помню какого кодека.

Кстати в начале ветки приведены результата теста - там результат работы core avc назван неприемлимым.
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…