Что такое подключить аппаратный кодек

Обновлено: 06.07.2024

В нашем современном мире, наверное практически каждый человек, у которого есть ПК и выход в интернет сталкивался с просмотром видео на компьютере. Почему "практически каждый" , потому что хоть и в двадцать первом веке мы живем, компьютер есть далеко не в каждой семье, но не в этом суть. Я хочу сегодня поговорить о КОДЕКАХ . Что это и с чем их "едят" .

Если вы помните друзья, я пишу статьи для неопытных пользователей, тех кто с компьютером не на "короткой ноге" . Кто в силу своего возраста очень поздно познакомился с этим "чудом технического прогресса" и очень трудно его осваивает.

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

Причина ошибки

А происходит подобное "недоразумение" по одной простой причине. На компьютере отсутствует набор КОДЕКОВ . Они представляют собой небольшие программы (настройки), которые кодируют и декодируют медиа файлы.

Кодирование

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

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

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

А декодировка , это когда файл готовиться к использованию, например, просмотру или, если это звуковой файл, то к прослушиванию.

В том случае, когда кодеков нет, плеер не может открыть файл, не имея кодека для раскодировки видео. И для просмотра этого файла плееру будет нужен тот кодек в формате которого " сжато " видео .

Если встроенный в Windows плеер не может воспроизвести видео, то зачем тогда он нужен? Лучше скачать кодеки с интернета, установить и они откроют видео для просмотра. Нет друзья, так не получится. Воспроизводит файлы, будь то музыка или видео сам плеер, а вот кодеки являются "вспомогательным инструментом" с помощью которого плеер определяет в каком формате тот или иной файл находится и с помощью какого кодека его нужно открыть.

Самый популярный среди пользователей пакет кодеков, это K-Lite Codec Pack . Этот пакет делиться на четыре версии (набора кодеков):

Базовый набор

Этот пакет имеет ограниченное количество кодеков, но в состоянии открыть самые популярные форматы.

Стандартный набор

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

Полный набор

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

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

Плееры сторонних разработчиков

Но пользоваться можно не только встроенным в систему плеером. Существует большое многообразие плееров от сторонних разработчиков, например, вот этот KMPlayer . В нем уже есть встроенные пакеты кодеков, так что дополнительно их ставить будет не нужно. И к тому же этот плеер совершенно бесплатный.

Я привел лишь один плеер в пример, на самом деле их много и каким пользоваться решать лишь вам. А может вы установите на свой компьютер пакет кодеков и будете использовать стандартный :-)

Спасибо за прочтение данной статьи. Не стесняйтесь комментировать и ставьте палец вверх.




Далее вам предложат директорию установки пакета кодеков, не изменяйте путь. Нажмите Next.



Какие фильтры использовать в K-Lite Mega Codec Pack

Теперь перейдем к рассмотрению предложенных фильтров для воспроизведения медиа файлов. Чтобы вам было понятнее:

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

Я сторонник LAV Filters и перечислю их преимущества, но и недостатки:

Недостатки:

  • Уступает ffdshow отсутствием фильтров постпроцесса.
  • Желательно применять для не слишком тяжёлых видеофайлов, для FullHD видео используйте DXVA декодеры.
В разделе DirectShow audio decoding filters представлены наборы фильтров отвечающих за декодирование аудио. Советую использовать LAV или ffdshow.

Утилита для переключения звуковых дорожек

Все остальные параметры можете оставить по умолчанию. Нажмите Next, появится окно с выбором папки для расположения, снова нажмите Next. В следующем окне Select Additional Tasks (Выбор дополнительных задач) будут отображены опции выбранных вами компонентов, поэтому их полный состав может различаться.


Важные пункты окна дополнительных задач:

ffdshow configuration (Настройки фильтра ffdshow)

Haali Media Splitter configuration (настройки сплиттера Haali)

Media Player Classic configuration (настройки Media Player Classic)

DirectX Video Acceleration (сокращённо DXVA) — интерфейс, предназначенный для декодирования видео процессором видеокарты.

Tweaks


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


Нажмите Next, проставьте галочки напротив необходимого формата мультимедиа для каждого выбранного в предыдущем окне плеера. Снова нажмите Next и выберите конфигурацию ваших динамиков.


Еще раз нажмите Next, в окне будет отображена конфигурация, которую вы выбрали для установки. Нажмите Install, дождитесь установки пакета. После инсталляции вам будет предложено поставить галочки перед теми фильтрами, которые вы можете настроить по своему усмотрению. Нажмите Finish.

Привет! Эта статья продолжение моей статьи FFmpeg начало работы Visual Studio. Здесь мы приступим к аппаратному декодированию RTSP-потока FULL HD. Заранее скажу, что с данной задачей легко справится даже Intel ATOM Z8350.

Задача: аппаратное декодирование и запись до 4-х кадров в оперативную память для последующей параллельной обработки (четырьмя ядрами процессора) с IP-камеры RTSP h.264. Обработанные кадры отображаю с помощью функций WinAPI. Как итог мы получим быстродействующую систему для компьютерной обработки RTSP-потока в параллельном режиме. Далее можно подключать алгоритмы Компьютерного зрения для обработки кадров Real Time.

image

Вступление

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

DirectX Video Acceleration (DXVA) — это API для использования аппаратного ускорения для ускорения обработки видео силами графических процессоров (GPU). DXVA 2.0 позволяет перенаправлять на GPU большее количество операций, включая захват видео и операции обработки видео.

После написания предыдущей статьи мне было задано не мало вопросов: «почему использован именно FFmpeg?» Начну с проблематики. Основная сложность аппаратного декодирования состоит в записи раскодированного кадра в ОЗУ. Для Full HD это 1920 х 1080 х 3 = 6 220 800 байт. Даже с учетом того что кадр хранится в формате NV12 – это тоже немало 1920 x 1080 x 1.5 = 3 110 400 байт. Перезаписывать 75 Мбайт в секунду серьезная задача для любого процессора. Для решения этой задачи Intel добавила команды SSE 4, которые позволяют переписывать данные без участия процессора. К сожалению, не во всех библиотеках это реализовано. Мной были опробованы следующие библиотеки:

OpenCV – для работы с потоком RTSP использует FFmpeg, поэтому решено работать без посредников, т.е. использовать библиотеку FFmpeg. К тому же FFmpeg, который установлен по умолчанию, в OpenCV собран без аппаратного декодирования.

FFmpeg – показала хорошие, на мой взгляд результаты, работает стабильно. Единственный недостаток не реализована работа с WEB-камерами для версии X86 (X64 вроде позволяет работать) в Windows.

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

На самом деле аппаратное декодирование с помощью библиотеки FFmpeg — не сложнее программного. Настройки проекта такие же, как и для программной реализации, блок-схема осталась без изменений.

Вывести на экран список поддерживаемых FFmpeg методов аппаратного декодирования можно


Первое, что нам нужно сделать — это сообщить FFmpeg с помощью какого аппаратного декодера Вы хотите декодировать видео. В моем случае Windows10 + Intel Atom Z8350 оставляют только DXVA2:


Вы же в качестве аппаратного декодера можете выбрать CUDA, D3D11VA, QSV или VAAPI (только Linux). Соответственно у вас должно быть данное аппаратное решение и FFmpeg должен быть собран с его поддержкой.


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


Данная функция переписывает декодированный файл в ОЗУ:

Немного о формате NV12

Итак, мы получили кадр в структуру sw_frame. Полученный кадр хранится в формате NV12. Данный формат был придуман Microsoft. Он позволяет хранить информацию о пикселе в 12 бит. Где 8 бит интенсивность, а 4 битами описывается цветность (вернее цветность сразу описывается для 4-х рядом стоящих пикселей 2х2). Причем, sw_frame.data[0] – хранится интенсивность, а в sw_frame.data[1] – хранится цветность. Для перевода из NV-12 в RGB можете воспользоваться следующей функцией:

Хотя работа с NV12 позволяет ускорить выполнение таких процедур, как размывка, Retinex и получение изображения в оттенках серого (просто отбросив цветность). В моих задачах я не перевожу формат NV12 в RGB, так как это занимает дополнительное время.

И так мы научились аппаратно декодировать видеофайлы и выводить их в окно. Познакомились в форматом NV12 и как его преобразовывать в привычный RGB.

Dll аппаратного декодирования

Кадры FFmpeg выдает через 40 мс (при 25 кадрах в секунду). Как правило, обработка кадра Full HD занимает значительно больше времени. Для этого требуется организовать многопоточность, для максимальной загрузки всех 4-х ядер процессора. Я на практике один раз запускаю 6 потоков и больше их не снимаю, что значительно упрощает работу и увеличивает надежность работы программы. Схема работы приведена на рис. 1

image


рис.1 Схема построения многопоточной программы с FFmpeg

Я написал свой декодер в виде *.dll (FFmpegD.DLL) для включения в свои проекты. Это позволяет сократить код-проекта, что повышает понимание кода и включать в любые языки программирования, вплоть до Ассемблера (проверено:) ). С помощью нее мы напишем свой проигрыватель RTSP-потока с IP-камеры.

Для начала работы с DLL нужно передать указатель массив int[13], HANDLE события поступления нового кадра, HANDLE начала обработки нового пакета данных с камеры и массив char адрес камеры.

Структура массива дана в таблице 1.

image

Перед вызовом необходимо обнулить номера кадров 1-4.

DLL выполнит все необходимые действия по инициализации FFmpeg и будет записывать указатели и номера кадров. После установит событие «Поступление нового кадра». Нужно только обрабатывать поступающие кадры и вместо номера кадра записывать 0 (это значит кадр обработан и больше не используется).

Ниже Вы найдете пример проигрывателя с исходным кодом. За основу взят пример ShowDib3 Charles Petzold.

ИТОГ: аппаратный детектор движения FFmpeg даже на Intel Atom Z8350 декодирует h264 Full HD в реальном времени с загрузкой процессора до 20% с подключенный детектором движения.

Пример работы детектора движения на Intel ATOM Z8350. Первые 30 сек идет подсчет фона. После работает детектор движения по методу вычитания фона.

Разбираемся с форматами и кодеками видео

Современные медийные платформы позволяют пользователям наслаждаться высокодетализированным видео и потрясающими аудиоэффектами в режиме онлайн.

Однако создание подобного контента было бы невозможно без существования кодеков и контейнеров.

Чем кодеки отличаются от контейнера — их часто путают

Для ответа на вопрос, чем кодеки отличаются от контейнеров, необходимо понять, что такое кодеки.

Смысл понятия «кодек» лежит прямо в его названии:

Фактически кодек — это цифровой инструмент компрессии и декомпрессии данных. Компрессия (сжатие данных) необходима для экономии занимаемого файлом места. Например, несжатое видео высокой четкости в raw-формате, при 60 кадрах в секунду способно достигать размеров в полтерабайта на каждый час записи.

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


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

Если разобрать стандартное видео со звуком на кодеки и контейнеры, в результате получится три составные части:

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

В случае если в видео нет звука, аудиокодек не нужен.

Популярные и прогрессивные кодеки


Большинство создаваемого видеоконтента обрабатывается кодеками XviD, MPEG-1\2, H.264, MPEG-4, DivX, WMV, MJPEG, RealVideo, Bink Video и их вариациями. Для аудиоформатов в основном используют AAC, Opus и MP3-кодеки. Из новинок стоит отметить кодек H.266/VVC, разрабатываемый для потоковой передачи видео в 4K и 8K.

Новый кодек позволяет вдвое сократить объем файла относительно H.265 кодека за счет более сложных алгоритмов. Сложные вычисления потребляют больше ресурсов, до 1000 % от потребления H.265 при кодировании, и до 200% при декодировании.

Какие кодеки в основном поддерживаются современными ТВ и обновляются ли они с прошивкой

Современные системы поддерживают большинство существующих кодеков.

Поддержка кодеков MPEG от первого до четвертого, вариации H.264 для воспроизведения Blu-Ray, а также XviD и DivX, входят в базовый пакет любого современного телевизора.

Ведущие производители всегда следят за ошибками и актуальностью своего программного обеспечения.

Обновление кодеков в процессе прошивки регулируется разработчиками индивидуально под каждую модель SmartTV.

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

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

Какие кодеки используются при проигрывании онлайн-видео (современные кодеки youtube)

В настоящее время стандартом большинства видеосервисов стали кодеки H.264 и MPEG-4, значительно реже встречаются кодеки FFDshow, XviD и DivX.


Одним из самых перспективных кодеков является бесплатный AV1-кодек. Разработан сообществом AOMedia, включающим в себя таких гигантов как AMD, Google, Netflix, Mozilla, Nvidia, Intel, ARM и Cisco. Исходный код кодека открыт и свободно распространяется без каких-либо лицензионных отчислений.

Что даст конечному пользователю переход ютуба на современный AV1


Кодек AV1 разрабатывался для воспроизведения видео онлайн, в браузерах Safari, Firefox, Edge и Chrome. Степень сжатия видео кодеком AV1 превосходит кодеки VP8 и H.264 от 30% до 50%, а кодек HEVC до 30–43 % на высоких битрейтах.

Полный переход видео платформы YouTube на AV1-кодек не только ускорит загрузку всех видеороликов от 20% до 50%, но и позволит стримить в разрешении 4K.

Для минимизации потерь качества, при сохранении и конвертации файла рекомендуется использовать кодеки AV1 для видео и Opus для аудио, обернутые в MP4-контейнер.

Читайте также: