Софт-Портал

декодирование видео

Рейтинг: 4.6/5.0 (635 проголосовавших)

Категория: Windows

Описание

Аппаратное декодирование видео c AMD open source driver - Desktop

Сижу на ubuntu 13.04. Поставил ядро 3.11rc4 и пересел на открытые дрова. Но вот запутался с тем что нужно сделать для аппаратного воспроизведения видео. Смотрел вот эту статью и убунтовскую вики .

Если я обновился с репозитория xorg-edgers, нужно ли пересобирать Mesa из Git-репозитория?

Нужно ли устанавливать vdpau-va-driver для использования VDPAU в VLC?

В убунтовской вики написано: «В последней версии плагина Adobe Flash, поставляемого в комплекте с браузером Google Chrome3), имеется поддержка VDPAU» Но в статье на опеннете в комментах написано, что бы все было с акселерацией (дэкодирование и рендеринг), нужен файл и параметр в нем: /etc/adobe/mms.cfg со строкой EnableLinuxHWVideoDecode=1
Нужно ли его создавать?

И еще пользуясь случаем вопрос по установке XBMC: Какой инструкцией лучше пользоваться - на вики xbmc или на вики убунты. В них указаны разные репозитории. А для АМД на убунтовской вики вообще третий репозиторий.

Поставить свежие прошивки и этот пакет. После перезагрузки декодирование через VDPAU должно заработать в mplayer и XBMC.

Нужно ли устанавливать vdpau-va-driver для использования VDPAU в VLC?

Кроме vdpau-va-driver нужно добавить LIBVA_DRIVER_NAME=vdpau в /etc/environment.

Какой инструкцией лучше пользоваться - на вики xbmc или на вики убунты ?

Не обязательно репозиторий, можно просто из репов поставить, но если нужен именно репозиторий - то первой.

А для АМД на убунтовской вики вообще третий репозиторий.

Это XBMC-XvBA для использования с блобом, вам оно не нужно.

Ответ на: комментарий от RussianNeuroMancer 09.08.2013 23:48:12

Спасибо за ответ!

Все поставил. VLC играет видео, но если стоит галочка «Использовать видеоускоритель», то безбожно тормозит и идет квадратиками. Без этой опции загрузка процессора 30

XBMC запускается но при попытке проиграть видео зависает.

Ответ на: комментарий от RussianNeuroMancer 09.08.2013 23:48:12

И вот еще скрин проигрывания в SMPlayer. Загрузка процессора аналогична VLC

С помощью ppa-purge?

На первом по прежнему виснет, второй нормально проигрывает.

Понятно, проблема оказалась не в разнице версий. А что за семплы вы используете для теста? Стандартный Planet_Earth_From_Pole_to_Pole_1080p_sample.mkv воспроизводится?

И еще в процессе написания этого комментария как будто упали иксы и меня в консоль вывалило, потом что-то подумало и перекинуло на экран входа. Я залогинился, снова появилась консоль, подумало и выкинуло на экран входа.

Скорее всего это последствия установки нестабильной версии драйвера из Oibaf PPA. Возвращайтесь на Xorg Edgers PPA (ppa-purge ppa:oibaf/graphics-drivers, после обновляетесь из xorg-edgers, ставите опять libg3dvl-mesa по ссылке из первого комментария).

VLC играет видео, но если стоит галочка «Использовать видеоускоритель», то безбожно тормозит и идет квадратиками.

Вероятно нужно ждать или поддержки декодирования через VA-API в драйвере, или поддержки VDPAU в VLC.

И вот еще скрин проигрывания в SMPlayer.

Лог mplayer в SMPlayer смотрели? Точно ли задействовано VDPAU? С каким набором опций воспроизводите видео?

декодирование видео:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    GPU-Ускоренные библиотеки: NVIDEA VIDEO CODEC SDK

    NVIDIA VIDEO CODEC SDK NVIDIA VIDEO CODEC SDK

    Этот набор высокопроизводительных видеокодеков NVIDIA для ОС Windows Vista/ Win7/ Win8 и Linux включает в себя инструменты, примеры и документацию для API NVENC (кодировка видео) и NVCUVID (декодирование видео). NVENC API поддерживает аппаратное кодирование видео на H.264 с графическими процессорами семейства NVIDIA Kepler и Maxwell (список поддерживаемых GPU смотрите ниже). SDK также содержит API декодирования видео NVCUVID для разработчиков ПО для ускорения производительности на (список поддерживаемых GPU смотрите ниже). NVCUVID CUDA API также доступен отдельно в составе GPU Computing SDK .

    Нажимая кнопку «Принять и скачать», вы подтверждаете, что прочли и согласны следовать ЛИЦЕНЗИОННОМУ СОГЛАШЕНИЮ NVIDIA VIDEO CODEC SDK .

    Обновление SDK: 7 августа, 2014

    ОБЗОР NVENC – аппаратно ускоренная кодировка видео на H.264

    API NVIDIA NVENC позволяет разработчикам ПО получать доступ к высокопроизводительному кодировщику видео H.264 на NVIDIA GPU поколения Kepler и Maxwell (список поддерживаемых GPU смотрите ниже) NVENC обеспечивает высококачественную кодировку видео, которая быстрее и энергоэффективнее по сравнению с аналогичными кодировщиками на базе CPU. Используя специальное аппаратное обеспечение для осуществления кодировки видео, ядра GPU с поддержкой CUDA и/или CPU свободны для выполнения других задач, требующих больших вычислительных ресурсов. NVENC на видеокартах GeForce может поддерживать не больше 2 одновременных потоков. NVENC на GRID GPU и Quadro K4000 и выше могут поддерживать столько потоков, сколько позволяет предел скорости кодировщика NVENC и свободная память.

    NVIDIA Video CODEC SDK содержит все необходимые примеры и документацию, включая указания по применению NVENC, справочное руководство API, руководство по программированию. Для работы SDK на вашем ПК должны быть установлены драйверы NVIDIA Windows или Linux, которые можно скачать на странице загрузки драйверов .

    NVCUVID – декодирование видео с поддержкой CUDA

    NVIDIA CUDA Video Decoder (NVCUVID) – это библиотека, которая предоставляет разработчикам доступ к аппаратным возможностям декодирования видео на NVIDIA GPU с поддержкой CUDA. Аппаратное декодирование осуществляется либо на видеопроцессоре (VP), либо на аппаратном обеспечении с поддержкой CUDA, в зависимости от аппаратных возможностей и кодеков. Библиотека поддерживает следующие форматы видеопотока для платформы Windows: MPEG-2, VC-1 и H.264 (AVCHD). NVCUVID API также доступен отдельно в составе GPU Computing SDK .

    Ресурсы

    Cжатие видео и декодирование: чем и на чём лучше

    Cжатие видео и декодирование: чем и на чём лучше

    Сжатие видео и декодирование | Введение

    Не так давно мы уже обсуждали качество картинки в обзоре первых мини-ITX Brazos. Если вычитали этот обзор, то помните, что там было несколько неожиданных результатов, полученных при анализе возможностей платформ по кодированию/декодированию видео. Большинство результатов были одинаковыми: качество видео на выходе было одинаковое для продуктов Intel и AMD. При этом результат, полученный при использованиии CUDA от nVidia сильно отличался от предыдущих. Любое видео, которое мы пропускали через него, содержало заметное количество блочных фрагментов в сценах с активным движением. Нас об этом предупреждали, но надо было это увидеть своими глазами, чтобы понять, как плохо обстоят дела.

    Все это и побудило нас провести тесты качества изображения, о которых пойдет речь в дальнейшем. После нашего исследования Brazos много вопросов осталось без ответа. Может быть они и не были уместны в предыдущей статье, но вполне заслуживают отдельного изучения.
    Сжатие видео и декодирование | Кодеки и декодеры

    Перед тем, как перейти к серьёзным тестам, надо прояснить несколько простых вещей. Важно различать кодеки и контейнеры файлов. Например, файлы Blu-ray часто появляются с расширением .m2ts. Но формат контейнера BDAV (blu-ray Disc Audio/Video) обычно выступает в качестве обёртки для хранения. При этом можно использовать три кодека – MPEG-2, H.264 и VC-1.

    Какая же всё-таки разница между кодеком и контейнером? Вспомните ваш последний отпуск. Ваш чемодан, в данном случае, это «контейнер». Багаж это контент (видео, аудио, субтитры и другая информация), а кодек – это способ, которым вы впихиваете всё (данные) в ваш чемодан, чтобы всё поместилось. Вы можете класть вещи в чемодан аккуратно сворачивая (один кодек), или прессовать их в рулоны и обматывать скотчем, чтобы побольше влезло (другой кодек). Это верно для любого мультимедиа контента. Например, формат Microsoft AVI (Audio Video Interleave) – это контейнер файлов, но видео в нём может кодироваться разными кодеками, от DivX до MPEG-2.

    Когда вы проигрываете что-нибудь на видеоплейере, обычно кодированное видео проходит через декодер, преобразуется в YUV-данные (цветовое пространство) и подаётся на экран. Декодер распознает формат и развёртывает сжатые данные в полезную информацию, которая может обрабатываться и просматриваться.

    Есть два типа декодеров: программные и аппаратные. До UVD, PureVideo и Intel GMA 4500MHD видео декодировалось с помощью программных декодеров, которые полагались на мощность процессоров. Поэтому многие компании старались что-либо сделать для проигрывания видео. Но сделать по-настоящему хорошо это удалось только двум из них – CyberLink и InterVideo (сейчас Corel), поэтому тогда ATI и лицензировала PowerDVD декодер для своего декодера ATI DVD. Естественно, программные декодеры съедают большое количество процессорного времени, что хоть и не влияет на производительность современных процессоров, но для мобильных устройств заметно сокращает время жизни аккумуляторов.

    Со временем этой проблемой занялись производители графических карт и стали разрабатывать декодеры с фиксированными функциями, которые представляли собой логические контуры в GPU, предназначенные для обработки видео. Сегодня их называют аппаратными ускорителями. Их преимущество было в том, что при работе графического процессора не расходовалось время основного процессора.

    Есть несколько интересных моментов. Поскольку декодер обрабатывает видео, достаточно сложно установить параметры качества его работы или эффективности. Вне зависимости от того, проходит ли видео аппаратный или программный конвейер преобразования, данные сильно меняются перед тем, как оказываются на вашем мониторе. Используя ПО, вы не должны сравнивать системы, используемые при декодировании. Хотя при использовании одной и той же системы различные декодеры могут выдавать различные картинки или изменять качество восприятия изображения. Большинство дисков Blu-ray, которые проигрываются на графических картах nVidia или AMD, будут выглядеть одинаково, если вы отключите ускорение в PowerDVD. В обоих случаях видео обрабатывается с помощью ПО на процессоре, выдавая одинаковый результат.

    Когда в процесс добавляется аппаратное декодирование, всё выглядит по-другому. Почему? В современных GPU есть специальный блок, занимающийся декодированием и обработкой видеоданных. Это именно та логика с фиксированной функцией, о которой шла речь чуть выше. Аппаратное ускорение декодирования на процессорах Sandy Bridge конструируется и программируется отлично от того, как это сделано на графических картах AMD и nVidia.

    Надо четко понимать: нет GPU-декодеров общего назначения. Нет декодеров, которые могут полностью работать на DirectCompute, APP или CUDA. Стремление реализовать такую поддержку заранее обречено на провал. GPGPU предназначен для обработки сырых данных с высокой степенью параллелизма. Но мы говорим о видео, а не о сырых данных. Для обработки картинок приходится делать многое, причём в последовательном исполнении. Декодеры с фиксированными функциями декодируют и обрабатывают видео; они не делают ничего другого. Перенесения этой функции на компьютерные ресурсы более общего профиля было бы шагом назад по сравнению с переносом их на процессор, поскольку в обоих случаях вам придётся работать с программным декодированием.

    Компания Elemental Technologies (которая известна своей разработкой Badaboom) уникальна тем, что разработала декодер MPEG-2 на базе CUDA. И это не чистый декодер GPGPU. Части его конвейера, такие как кодирование энтропии, кодирование синтаксиса, декодирование синтаксиса и декодирование энтропии должны исполняться последовательно. Другие части процесса могут быть сконструированы для параллельного исполнения, такие как оценка движения, компенсация движения, разбиение данных на подгруппы, дискретная косинусоидальная трансформация, фильтрация деблокирования, деблокирование конечных результатов. Именно поэтому декодер MPEG-2 Elemental – это половинчатое решение. Часть процесса выполняется на CPU, часть – на ядрах CUDA.

    Сжатие видео и декодирование | История форматов

    Декодирование видео на аппаратном уровне у многих экспертов вызывает определённые сомнения. Дело в том, что не каждое решение обеспечивает одинаковую обработку.

    Для компании Intel единственной функцией конвейера декодирования видео была компенсация движения, которая существовала в нескольких поколениях графических продуктов (GMA 900, 850, 3000 и 3100). Это означает, что для декодирования потока видео используется программный декодер перед тем, как логические контура Intel выполнят компенсацию движения. Этого не было до последней версии 3100, где мы впервые увидели полное декодирование MPEG-2 на аппаратном уровне. Поддержки VC-1 и Н.264 не было до 4500MHD. GMA 500 не учитывается, поскольку этот продукт для Intel создала компания Imagination Technologies.

    Тем временем компания AMD недавно выпустила UVD 3 со своими картами Radeon HD 6000 серии. Изначально UVD 1 поддерживала полное декодирование VC-1 и H.264, в UVD 2 добавлено преобразование частоты и компенсация движения для MPEG-2. В UVD 3 добавлена полная поддержка декодирования для MVC, MPEG-2 и MPEG-4/DivX/Xvid. Отметим, что UVD в картах AMD 5000 серии претерпел ревизию на уровне прошивки. Немало изменений было сделано и на аппаратном уровне, где компания AMD добавила двухпотоковую поддержку декодирования. В Radeon HD 4000-серии уже поддерживалось двухпотоковое декодирование и технология «картинка в картинке», но только в разрешении SD.

    nVidia в своих видеокартах GeForce FX начинала с декодирования MPEG-1/MPEG-2 на аппаратном уровне. Первое поколение PureVideo появилось, когда nVidia взяла эти устройства, улучшила деинтерлейсинг и изменение размеров (overlay resizing) и встроила эти технологии в свою серию GeForce 6000. Для большей части таких карт ускорение декодирования ограничено, поскольку исключается преобразование частоты декодирование с переменной длиной. Декодирование Н.264 на аппаратном уровне не было возможным до появления GeForce 6600. Сегодня мы готовы к приходу PureVideo четвертого поколения, где добавляется потоковое декодирование MPEG-4 (Advanced) Simple Profile в сочетании с MVC для контента Blu-ray.

    Сжатие видео и декодирование | Поддержка кодирования

    До появления технологии Quick Sync, в процессорах не было аппаратного кодирования (для настольных ПК). Практически всё сжатие производилось программно с использованием мощности процессора. Если у вас быстрый компьютер, то вы будете кодировать быстрее. Всё очень просто. В далеком прошлом были времена, когда программные кодеки могли работать только в однопоточном режиме, что очень ограничивало производительность. Времена изменились и теперь сжатие видео можно выполнять несколькими параллельными потоками.

    В большинстве случаев мы по-прежнему работаем с программной кодировкой. Отличие в том, что теперь у нас есть кодировщики, которые могут проделывать всю работу с помощью GPU с использованием библиотек GPGPU. В последнее время всё больше звучат голоса о том, что за вычислениями с помощью GPU будущее, из-за гораздо меньших возможностей по обработке параллельных потоков, который может предложить CPU; задачи, о которых мы сегодня говорим, просто не могут выполняться быстро и эффективно (в смысле использования электроэнергии) в процессорах общего назначения. Поэтому пока мы не будем сравнивать кодировщики на базе GPGPU, которые работают с использованием аппаратных возможностей графической карты, с решениями по аппаратному кодированию от Intel.

    При кодировании используются аппаратные блоки, которые работает вместе с программируемыми исполняющими элементами (EU – execution unit). Есть ещё один блок обработки медиа-информации, соединённый с EU (Intel называет его сопроцессором), который работает с оценкой движения, подкрепляя программируемую логику. Естественно, то же самое происходит и с задачами декодирования, которые проходят через тот же конвейер, так что дополнительная производительность имеется и там. Запускаем MPEG-2, VC-1 или AVC, а на выходе получаем MPEG-2 или AVC.

    В зависимости от используемого приложения каждая компания использует Quick Sync разными способами. Взять хотя бы CyberLink. PowerDVD 10 использует ускорение конвейера декодирования. Проект MediaEspresso вовлечён во всё это гораздо более активно: файл там будет читаться, декодироваться, кодироваться и возвращаться в выходной поток. Затем в PowerDirector, приложении для редактирования видео, вы сможете участвовать в пост-процессинге – накладывании эффектов и композиции кадра, которые делаются перед стадией кодирования.

    Сжатие видео и декодирование | Оптимизация транскодирования

    Конвейер транскодирования включает в себя чтение файла, декодирование, кодирование видео и вывод. Перед развитием кодирования на базе GPGPU, ПО для транскодирования использовало CPU для копирования данных из видеопамяти (где они находятся после аппаратного декодирования) и пересылки их обратно в системную память, где процессор мог провести стадию кодирования.

    Поскольку аппаратный декодер находится на том же чипе, что и GPU, ПО может пропустить копирование данных обратно в системную память (шаг четыре на первой диаграмме). Транскодирование на базе GPU общего профиля позволяет практически весь процесс осуществить на одном кристалле кремния. Но всё это – соображения, касающиеся производительности, а наш фокус сегодня – качество. Вот к нему и перейдём.

    Настройка аппаратного декодирования видеопотока

    Настройка аппаратного декодирования видеопотока

    Большинство современных видеокарт имеют встроенную поддержку аппаратного декодирования видеопотока. На данный момент, далеко не каждый знает о такой способности своей видеокарты, и мы сегодня попытаемся приподнять завесу над этим вопросом.

    Когда вы скачиваете фильм, или покупаете диск в магазине, весь видеоматериал содержится в сжатом виде. Процесс сжатия видео называется кодированием, а при просмотре происходит декодирование. Существует два способа декодирования: программное, это когда роль декодировщика берет на себя специальная программа, которая называется кодек, и аппаратный, при котором декодированием занимается специальный чип, установленный на видеокарте. Первый способ использует ресурсы центрального процессора, и не всегда справляется со своей задачей. Например, слабые процессоры, при просмотре видео высокой четкости, могут не справляться с этой задачей, в результате чего, видео будет „тормозить“.

    Одним из видеоплейеров, который поддерживает функцию аппаратного декодирования, является Media Player Classic — Home Cinema. Рассмотрим, как настроить его для использования этой функции под управлением операционной системы Windows 7. Для начала нам нужно загрузить программу со страницы разработчика. Можно выбрать в виде инсталлятора или в виде архива. После того, как мы успешно скачаем и установим программу, запустим ее и приступим к настройкам. Идем в пункт меню «View» и выбираем в пункте «Language» русский язык.

    Теперь там же находим «Настройки…». В левой части окна, переходим в раздел «Воспроизведение» ->«Вывод». а в правой части окна в разделе «DirectShow видео» отмечаем пункт «EVR (Vista / .Net3)». Нажимаем «ОК».

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

    Ниже мы приводим список видеокарт, которые на данный момент поддерживают опцию аппаратного декодирования видеопотока:

    • ATi Radeon HD 2xxx series
    • ATi Radeon HD 3xxx series
    • ATi Radeon HD 4xxx series
    • NVIDIA GeForce GTX 2xx series
    • NVIDIA GeForce 9xxx series
    • NVIDIA GeForce 8xxx series
    • NVIDIA GeForce 7xxx series

    Приглашаем посетить ФОРУМ . на котором можно получить ответы на любые вопросы, связанные с использованием операционной системы Windows 7.

    18 февраля 2010 - 01:35

    Хммм а долговечность карты не отразится?

    19 марта 2010 - 12:53

    Чтобы карта была долговечной, её нужно вытащить из системного блока, положить в коробочку и убрать в сейф.
    Как только через видеокарту начинает проходить электричество, начинается вырабатываться её ресурс. И ей пофиг, что в данный момент делать — обрабатывать 3D-графику, декодировать HD-видео или показывать «Рабочий стол».

    Аппаратное декодирование

    Аппаратное декодирование

    Для поддержки технологии аппаратной поддержки воспроизведения, DirectX Video Acceleration (DXVA), требуются специальные декодеры (например, NVIDIA PureVideo Decoder, CyberLink MPEG2 и H.264 video decoder), и проигрыватели с поддержкой DXVA. На данный момент существуют DXVA-декодеры для аппаратного ускорения MPEG2, WMV, VC-1 и H.264

    У разных видеочипов уровень поддержки аппаратного ускорения декодирования видео разный, он зависит от модели карты и установленного чипа. Ранее, некоторые low-end решения были ограничены в поддержке декодирования видео высоких разрешений, но складывается обратная ситуация — что у AMD, что у NVIDIA. Верхние чипы линеек, GeForce и RADEON, не поддерживают всех возможностей, которыми обладают решения среднего и низшего ценовых диапазонов.

    Аппаратное ускорение работает не всегда идеально, не со всеми декодерами и типами видеоданных. Так, изначально сразу несколько производителей плееров и декодеров H.264 объявили о поддержке ускорения в решениях. На деле это были, скорее, рекламные заявления, и ускорение H.264 или не работало вовсе или работало кое-как. Например, в своё время на рынке появилась версия PowerDVD 7.0 с поддержкой декодирования H.264, но не работающим аппаратным ускорением, версия того декодера была 1.6.0.1528. При использовании этого декодера ускорение включается, но на деле не работает.

    Кроме того, на разных моделях видеокарт одной и той же компании ускорение может работать, а может не работать. Особенно это относится к low-end и mid-end решениям прошлых поколений, таких как GeForce 6600 и RADEON X1300. Бывали случаи, когда при выполнении одинаковой последовательности действий, ускорение включалось на одной карте, но не включалось на другой. Это ещё не все проблемы аппаратного декодирования, так, H.264 декодер CyberLink в DXVA ускоренном режиме всегда отключает деблокинг (удаление артефактов блочности изображения), что хорошо заметно на плавных цветовых переходах. и стоит отметить, что некоторые версии декодеров могли работать в аппаратно ускоренном режиме на видеокартах одного производителя, и не работать на видеокартах другого, в зависимости от версий драйверов.

    Аппаратное декодирование Full HD-видео

    Аппаратное декодирование Full HD-видео

    У HD-видео есть один существенный недостаток – за великолепное качество изображения на экране монитора приходится расплачиваться высокими системными требованиями к процессору. И если 720р-рипы потянет даже ПК трехлетней давности, то для показа копий оригинальных Blu-ray или HD DVD понадобится топовый двухъядерный CPU. Но добиться комфортного просмотра Full HD-видео можно даже на среднем по нынешним меркам ПК, для чего нужно задействовать аппаратное декодирование HDTV силами видеокарты.

    Бесплатный кодек ffdshow не лучшим образом подходит для декодирования HD из-за неумения использовать многоядерные процессоры и недостаточно высокой производительности. Поэтому, чтобы добиться комфортного проигрывания HDTV, пользователю придется пойти на определенные финансовые затраты. Первый и наиболее доступный вариант – приобрести за $15 альтернативный видеодекодер CoreAVC Pro. который поддерживает многоядерные CPU, но обеспечивает немного худшую картинку, чем fddshow. Увы, декодирование видео силами GPU CoreAVC пока не подвластно – эту функцию разработчики планируют реализовать в следующей версии 1.7. Впрочем, при наличии двухъядерного процессора с частотой 2,4 ГГц или выше CoreAVC успешно справится со своей работой и без видеокарты.

    Второй, более функциональный, но зато и дорогостоящий вариант – приобретение HD-плеера СyberLink Power DVD Ultra 7.3 ($99). Разработчики PowerDVD создали замечательный декодер HD-видео в формате Н.264, который успешно «сотрудничает» как с многоядерными CPU, так и графическими процессорами новейших видеокарт от AMD и NVIDIA. Кстати, PowerDVD идет в комплекте со многими современными видеокартами, так что, возможно, вы уже получили его в качестве бесплатного бонуса при покупке нового ПК.

    Увы, при всей своей мощи у продукта CyberLink есть два досадных недостатка – он прекрасно справляется с дисками HD DVD и Blu-ray, но не «понимает» контейнер MKV и существенно проигрывает по удобству навигации привычным медиаплеерам вроде Media Player Classic или KMPlayer. Выход из этой ситуации элементарен – подключить декодер PowerDVD к вашему любимому медиаплееру.

    Скачайте и установите Matroska Combined Community Codec Pack – в нем уже содержится весь необходимый минимум фильтров для декодирования MKV, а также два популярных медиаплеера на выбор – Media Player Classic и ZoomPlayer.

    Инсталлируйте СoreAVC Pro или Cyberlink PowerDVD.

    Дальше все настройки будут произведены на примере Media Player Classic. Зайдите в Options→External Filters и в появившемся меню выберите CoreAVC Video Decoder или же Cyberlink H.264/AVC Video Decoder (PDVD7.x). Обязательно активируйте опцию Prefer в настройках плеера. Таким образом проигрывание аудио будет и дальше возложено на fddshow, зато декодированием видео займутся более «интеллектуальные» фильтры.

    Уже на этом этапе ваш медиаплеер научится использовать ресурсы многоядерного процессора. В нашем случае до подключения внешних фильтров fddshow обращался только к одному ядру Athlon X2 5600+ и загружал его по максимуму. В итоге смотреть фильм было невозможно – наблюдались рассинхронизация звука и видео, дерганье картинки и т. д. Но после подключения СoreAVC нагрузка на процессор более-менее равномерно распределяется по обоим ядрам CPU, не превышая 50–60%.

    Чтобы еще больше снизить нагрузку на системные ресурсы, надо включить декодирование видео силами графического чипа (только при условии, если вы добавили внешний H.264-декодер от Cyberlink). Данная технология применяется в видеокартах NVIDIA (PureVideo HD) и AMD (Avivo), начиная с GeForce 6xxx series и Radeon X1xxx. Однако полноценная поддержка кодеков H.264 и VC-1 (которые используются в Blu-ray и HD DVD) есть, к примеру, в GeForce 9xxx, 8800 GTS (G92), 8800 GT, 8600, 8500 и Radeon 3870/3850, 2600/2400. Чтобы активировать аппаратное декодирование силами видеокарты, зайдите в меню Options >Playback >Output и поставьте галочку напротив режима воспроизведения видео VMR 9 (Renderless ). В дополнительных настройках VMR 9 стоит выбрать Use texture surfaces and render video in 3D и Resizer Bicubic A=0,60 (Pixel Shaders 2.0). это позволит добиться чуть лучшего качества картинки исключительно за счет видеокарты.

    Готово! Даже видеокарта автора – GeForce 7900 GS, которая не обеспечивает полноценной поддержки проигрывания HD, взяла на себя часть забот, в результате чего загрузка процессора снизилась вполовину – до 25–30%. Еще большим будет эффект на видео-картах текущего поколения (вплоть до снижения нагрузки на CPU до нескольких процентов), так что для просмотра Full HD вовсе не обязательно тратить массу денег на дорогой Quad-Core.

    Читайте также:
    Выбираем медиаплеер для просмотра HD-видео
    Видео против железа: какой процессор выбрать?
    Выбор платформы для HD-видео

    Декодирование видео с помощью FFmpeg

    Введение

    Статья является переработанной версией предыдущей статьи о декодировании видео c помощью FFmpeg. Со времени написания первой статьи некоторые функции устарели и появились новые. В данной статье обновлён пример и исходных код. Также вы можете прочитать статью Запись видеофайла с помощью ffmpeg. в которой рассказывается как создать свой видеофайл с видео и аудио дорожками.

    При написании мультимедийных программ часто возникает необходимость декодирования (чтения) видеофайлов. Предположим, вам необходимо написать мультимедиа плеер или проиграть видеоролик в игре. Решение задачи должно быть максимально кроссплатформенным. Для решения данной задачи идеально подходит FFmpeg.

    О библиотеке FFmpeg

    FFmpeg - кроссплатформенная библиотека, созданная для декодирования и кодирования мультимедийных файлов. Библиотека имеет открытый исходный код и распространяется под лицензией GPL и LGPL. Следовательно, библиотеку можно использовать в коммерческих проектах.

    FFmpeg используется в таких проектах как: ffmpeg2theora, VLC, MPlayer, Handbrake, Blender, Google Chrome и многих других.

    Подготовка FFmpeg

    Для использования FFmpeg необходимо проделать подготовительные действия. Есть несколько путей подготовки FFmpeg:

    Первый из них - это скачивание исходных файлов ffmpeg-а и компиляцию их с помощью gcc. Компиляция может быть утомительной, но с другой стороны, вы можете точно знать с какими параметрами скомпилированы библиотеки.

    Второй путь, который выбрал автор этой статьи, это скачивание сторонних билдов, их можно найти на сайте: http://ffmpeg.zeranoe.com/. В нашей статье мы использовали следующие библиотеки FFmpeg: avcodec, avdevice, avformat, avutil, swscale.

    Lib файлы и h-файлы вы можете найти в Dev версии, а dll Shared в версии.

    Для подключения h-файлов ffmpeg необходимо их обернуть:

    Теперь для использования FFmpeg у нас есть все, перейдём к декодированию. Забегая вперёд скажу, что в конце статьи вы сможете найти пример, где все эти действия уже проделаны.

    Кратко о видеофайлах

    Видеофайлы могут иметь различные форматы, например avi, wmv, ogg. Формат - это контейнер, который определяет внутреннюю структуру файла. Видеофайл можно представить в следующем виде:

    Заголовок файла содержит информацию о разрешении картинки, о кодеках, которые используются для сжатия, о количестве потоков и многое другое.

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

    Индексы содержат информацию о ключевых кадрах. Для улучшения сжатия в видеофайлах пакеты могут содержать не весь кадр, а только изменившуюся часть. Ключевыми же кадрами являются те кадры, которые полностью содержатся в пакете.

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

    Декодирование видеофайлов с помощью FFmpeg

    Декодирование файла можно разбить на несколько шагов:

    • Шаг 0: Инициализация FFmpeg
    • Шаг 1: Открытие файла
    • Шаг 2: Поиск потоков и открытие декодеров
    • Шаг 3: Получение информации о потоках
    • Шаг 4: Декодирование информации
    • Шаг 5: Обработка кадра
    • Шаг 6: Закрытие файла

    Шаги 4 и 5 повторяются для каждого кадра. Теперь разберем каждый шаг отдельно:

    Шаг 0: Инициализация FFmpeg Шаг 1: Открытие файла

    Открываем файл и получаем его контекст. По имени файла мы открываем его и проверяем, что файл открылся успешно:

    Шаг 2: Поиск потоков и открытие декодеров

    Поиск потоков видео и звука, а также поиск декодеров для них. Если файл закодирован неизвестным декодером, то произойдет ошибка открытия декодера.

    Поиск видеопотока и открытие декодера:

    Поиск аудиопотока и открытие декодера отличается от поиска потока видео только константой CODEC_TYPE_AUDIO.

    Шаг 3: Получение информации о потоках

    Мы получаем информацию о потоках, такую как: разрешение, длина, количество кадров в секунду.

    Получение информации о видеопотоке:

    Получение информации о аудиопотоке очень похоже. Только высоты и ширины у него нет.

    Шаг 4: Декодирование информации

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

    Время ffmpeg представлено во внутренних единицах, так называемый BaseTime. Для преобразования времени в секунды необходимо время ffmepg-а умножить на BaseTime. Соответственно, для преобразования времени в секундах во время ffmpeg, необходимо разделить на BaseTime. Для каждого потока BaseTime индивидуально.

    Для чтения пакета используется функция:

    если функция вернула значение меньше нуля, то кадр не мог быть прочитан, скорее всего, конец файла.

    Принадлежит ли пакет к видеопотоку можно узнать следующим образом:

    где videoStreamIndex индекс видеопотока.

    если декодирование удачно завершилось, то значение переменной got_picture_ptr, должно быть больше нуля и функция должна вернуть значение больше нуля (количество декодируемых байт). Если же возвращаемое значение больше нуля, а got_picture_ptr меньше нуля или ноль, то это значит, что ошибки нет, но декодировать кадр не удалось.

    Для декодирования звука используется функция:

    Оцифрованный звук представляет собой точки дискретизации. Их формат можно узнать из структуры информации о звуковом потоке. Например, для формата AV_SAMPLE_FMT_FLTP, каждый семпл представляет из себя float со значениями от -1.0 до 1.0 и каждый поток находится в отбельной плоскости. Указатели на каждую плоскость находится в поле audioFrame->extended_data[i]. В примере вы сможете найти код как преобразовать звук из формата AV_SAMPLE_FMT_FLTP в формат AV_SAMPLE_FMT_S16.

    Шаг 5: Обработка кадра

    Видеокадры могут иметь разные форматы: RGB, YUV, YUVP. Чаще всего это YUV формат. Скорее всего, кадры буду обрабатываться в формате RGB, и необходимо преобразовать кадры в RGB формат. Для этого можно использовать библиотеку swscale, она входит в состав FFmpeg. Ниже приведён пример использования:

    Шаг 6: Закрытие файла

    При закрытии файла высвобождаются ресурсы. Ниже приведён код закрытия файла и высвобождение ресурсов:

    Заключение

    Из статьи вы могли узнать, как использовать FFmpeg. Стоит отметит, что FFmpeg поддерживает большое количество форматов и кодеков.

    Пример

    Да, без примера статья была бы не закончена. Вы можете скачать пример использования ffmpeg. Пример не имеет полную функциональность, а только демонстрирует основы работы с FFmpeg. Программа открывает файл и сохраняет на диск 50 первых кадров. Вы можете её настроить, изменив define-ы:

    Стоит отметить, чтобы проект работал в Release конфигурации, необходимо включить опцию: "References: Keep Unreferenced Data (/OPT:NOREF)" или прописать параметр /OPT:NOREF в командной строке.

    Ссылки

    http://ffmpeg.org/ - официальный сайт проекта FFmpeg.

    http://dranger.com/ffmpeg/ - видеоплеер на 1000 строк. Об использовании FFmpeg подробнее.

    Часто задаваемые вопросы о кодировании

    Драйверы интегрированного графического адаптера Intel®, часто задаваемые вопросы

    1. Почему вращение всегда снижает производительность?

    В существующих наборах микросхем не реализована аппаратная поддержка функции вращения. Для вращения дисплея драйвер должен заново выполнить рендеринг буфера кадров для отображения повернутого изображения, что требует использования двухмерного и трехмерного механизма рендеринга для каждого отображаемого кадра. В связи с этим возникают дополнительные системные издержки и ограничения. Для обеспечения оптимальной производительности следует использовать стандартную ориентацию дисплея.

    2. Поддерживается ли аппаратное ускорение видеоконтента высокой четкости (HD) VC-1 при использовании Microsoft Windows Media Player* и драйверов интегрированного графического адаптера Intel®?

    Да. Драйверы интегрированного графического адаптера Intel поддерживают аппаратное ускорение видео в формате HD при использовании проигрывателя Windows Media Player* в ОС Microsoft Windows XP* с начальной точкой VC-1 Motion Compensation (MC).

    Материалы VC-1 в разрешении 720p или ниже воспроизводятся с помощью проигрывателя Windows Media Player 11 (WMP11) со средней нагрузкой на процессор. Воспроизведение VC-1 в разрешении 1080p или 1080i может повысить нагрузку на процессор при использовании WMP11 до неприемлемого уровня, поскольку WMP11 использует аппаратное ускорение на базе MC.

    Примечание. Аппаратное ускорение VC-1 не поддерживается драйверами интегрированного графического адаптера Intel в Windows CE*.

    Различные версии проигрывателя CyberLink PowerDVD* также поддерживают декодирование материалов VC1 с использованием точки входа декодера полей переменной длины (VLD). Примеры: PDVD сборка 3204, сборка 3116.

    Метод с точкой входа VLD, используемый CyberLink PowerDVD для материалов VC-1, более эффективен, чем используемый в Windows Media Player 11, и поэтому при использовании PowerDVD для декодировки материалов VC-1 в разрешении HD нагрузка на процессор будет ниже.

    3. В чем заключаются основные различия между уровнями и профилями видеоматериалов?

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

    4. Какие приложения на базе Windows можно использовать для получения информации о видеофайле, в том числе о битовой скорости, кодеке, работе аппаратного ускорения блока системных контроллеров Intel® US15W и т. д.?

    Используйте коммерческие анализаторы для получения информации о битовой скорости и кодеке. В большинстве из них эта функция реализована. Этот проигрыватель предоставляет информацию о том, включено ли аппаратное ускорение.

    Проигрыватель CyberLink PowerDVD8* обычно использует функцию аппаратного ускорения набора микросхем Intel US15W для декодировки видео высокой четкости.

    5. Чем отличаются форматы видео 1080i и 1080p HD, и какой из них обеспечивает более высокое качество?

    Оба формата имеют 1080 строк на кадр. Формат 1080p обеспечивает более высокое качество изображения, чем 1080i, поскольку в формате 1080i используется чересстрочная развертка, а в формате 1080p — прогрессивная развертка. Драйверы интегрированного графического адаптера Intel поддерживают декодирование видео любого типа.

    6. Поддерживают ли драйверы интегрированного графического адаптера Intel и блок системных контроллеров Intel US15W аппаратное ускорение графики и видео H.264 в формате Adobe Flash*?

    Нет. В настоящее время поддержка не реализована.

    7. Какие основные точки входа в аппаратное ускорение блока системных контроллеров Intel US15W используются видеопроигрывателями?

    Компенсация движения (MC) и декодер полей переменной длины (VLD).

    8. Какая точка декодирования аппаратного ускорения блока системных контроллеров Intel US15W, используемая видеопроигрывателями, обеспечивает наименьшую нагрузку на процессор?

    VLD снижает нагрузку на процессор. При использовании компенсации движения выполняется больше программных операций, в результате чего нагрузка на процессор возрастает.

    9. Сколько слоев наложения поддерживают драйверы интегрированного графического адаптера Intel? Какие слои наложения используются для декодирования видео с помощью драйверов интегрированного графического адаптера Intel и блока системных контроллеров Intel US15W в ОС Windows?

    Драйверами интегрированного графического адаптера Intel поддерживаются два слоя наложения.

    В Windows интерфейс Microsoft DirectDraw* обеспечивает улучшенную производительность воспроизведения видео и поддержку первичных оверлеев. Поддержка вторичных оверлеев через любые интерфейсы реализована в конфигурациях с клонированием или двумя независимыми дисплеями (в расширенном режиме).

    10. Какие слои наложения используются для декодирования видео с помощью драйверов интегрированного графического адаптера Intel и блока системных контроллеров Intel US15W в Moblin*?

    Драйверами интегрированного графического адаптера Intel поддерживаются два слоя наложения.

    В Moblin интерфейс X11 Xv обеспечивает улучшенную производительность воспроизведения видео и поддержку первичных оверлеев. Поддержка вторичных оверлеев через любые интерфейсы реализована в конфигурациях с клонированием или двумя независимыми дисплеями (в расширенном режиме).

    11. Что следует делать с видеофильтрами тем клиентам, которым необходимо использовать драйверы интегрированного графического адаптера Intel непосредственно на производстве?

    Фильтры изображения входят в состав кодеков и проигрывателей видео. Для получения производственных лицензий пользователи должны связаться с разработчиками кодеков и проигрывателей.

    12. Какие видеопроигрыватели используют возможности аппаратного ускорения наборов микросхем GenX и блока системных контроллеров Intel US15W?

    Следующие проигрыватели поддерживают аппаратное ускорение контента MPEG2, MPEG4, H.264, VC-1 и WMVHD в формате HD: CyberLink PowerDVD, Corel WinDVD* и ArcSoft TotalMedia Theatre*. В таблице ниже содержится список поддерживаемых проигрывателей, отсортированный по операционным системам, и видеокодеков с аппаратным ускорением на базе наборов микросхем GenX и Intel US15W.

    13. Поддерживают ли драйверы интегрированного графического адаптера Intel интерфейсы VDPAU* или libVA?

    Драйверы интегрированного графического адаптера Intel не поддерживают VDPAU. VDPAU — прикладной интерфейс декодирования и вывода видео для UNIX*. VDPAU представляет собой библиотеку с открытым исходным кодом и прикладной интерфейс аппаратного ускорения декодировки видео, первоначально разработанный NVIDIA.

    Драйверы интегрированного графического адаптера Intel поддерживают API-интерфейс Intel® Video Analytics (Intel® VA API), представляющий собой эквивалентное VDPAU решение компании Intel для поддержки аппаратного ускорения декодирования видео. Поддержка Intel VA API уже интегрирована во многие популярные проигрыватели, в том числе MPlayer, RealPlayer, VideoLAN и другие.

    В драйверы интегрированного графического адаптера Intel по-прежнему добавляется поддержка новых версий API-интерфейсов ускорения видео (VA-API), что позволяет наборам микросхем для встраиваемых систем с интегрированным графическим процессором осуществлять возможности расширенного декодирования и вывода видео для пользователей драйверов интегрированного графического адаптера Intel, использующих ОС Linux.

    LibVA — единственная реализация интерфейса VA-API, поддерживаемая корпорацией Intel. Дополнительную информацию о VA-API можно найти на вики-сайте VA-API по адресу: http://www.freedesktop.org/wiki/Software/vaapi .

    Разъяснение: как интерфейс VDPAU, так и интерфейс VA-API являются достаточно общими, чтобы стать межплатформенными стандартами.

    14. Какая версия API-интерфейса Intel для анализа видео (Intel VA API) поддерживается драйверами интегрированного графического адаптера Intel?

    Драйверы интегрированного графического адаптера поддерживают только API-интерфейс Intel для анализа видео (Intel VA API) версии 0.29 и не поддерживают API-интерфейс Intel для анализа видео версии 0.31.

    15. Что означает строка DXVAOptions в файле .inf?

    Параметр конфигурации HKR, ALL\1\General. DxvaOptions, %REG_DWORD%, 1 должен иметь значение 1 для использования аппаратного ускорения. Драйвер мини-порта копирует эти настройки .inf при загрузке. Драйвер использует их в таких случаях, как декодировка с аппаратным ускорением.

    16. Могут ли драйверы интегрированного графического адаптера Intel в сочетании с платформой на базе процессора Intel Atom с блоком контроллеров Intel US15W обеспечить аппаратное ускорение видео в формате WMV или H.264 с помощью платформы веб-приложения Microsoft Silverlight*?

    Аналогично надстройке Adobe 10.1* argo, драйверы интегрированного графического адаптера Intel в сочетании с платформой на базе процессора Intel Atom и блока контроллеров US15W с подходящим проигрывателем могут выполнять аппаратное ускорение видео в формате WMV или H.264. Однако в настоящее время драйверы интегрированного графического адаптера Intel не содержат выделенного кода для поддержки целевого ускорения графики и анимаций Microsoft Silverlight. Функции Microsoft Silverlight реализуются на интегрированных платформах с драйверами интегрированного графического адаптера Intel за счет возможностей веб-браузера и операционной системы Microsoft и не связаны с драйверами интегрированного графического адаптера Intel.