MediaCodec или понимаем как хотим
С выходом Android 4.3 (API 18), Google привнесла долгожданный компонент под названием MediaCodec. Класс был открыт публике с выходом API 16, но для нормального использования и поддержки в Android системе требуется минимальный уровень API 18.
Материал рассчитан на опытного Android разработчика. Я попробую объяснить и показать примеры кодирования видео на лету с использованием Surface как входа и выхода потока данных. Если интересно, прошу под кат.
Что такое MediaCodec?
MediaCodec class can be used to access low-level media codec, i.e. encoder/decoder components.
MediaCodec класс может быть использован для доступа к низко-уровневому медиа кодеку, т.е. кодеру/декодеру
В принципе это кодер или декодер который манипулирует буферами данных. Если мы будем смотреть на формат H264, он же video/avc, то по сути буфер будет хранить NAL кадры и т.д.
Зачем нужен MediaCodec?
В большинстве случаев Android разработчики будут использовать VideoView, MediaPlayer с SurfaceView и этого вполне достаточно. Но как только речь зайдет о создании видео потока для дальнейшей передачи куда-либо, у нас не так много вариантов. Тут нам поможет MediaCodec.
Как кодировать?
MediaCodec дает возможность создать Surface объект для принятия данных для кодера. Я разделил логику кодирвоания на три этапа: подготовка, цикл кодирования, освобождение ресурсов.
Так как процесс кодирования по сути простой цикл обработки буферов данных, нам потребуется создать отдельный поток, который будет представлять непосредственно видео кодер.
Подготовка
Прежде чем приступить к кодированию нам потребуется описать формат и конфигурацию видео на выходе, создать сам кодер и получить Surface объект для ввода данных кодеру.
Цикл кодирования
mBufferInfo и data хранят данные о кадре(ах) который по сути может быть передан по сети или записаны в файл и др. Эти же данные могут быть декодированы h264 кодеком, чтобы получить изображение.
Важно заметить, что BufferInfo класс имеет поле flags. По сути может содержать три флага: BUFFER_FLAG_CODEC_CONFIG, BUFFER_FLAG_END_OF_STREAM и BUFFER_FLAG_SYNC_FRAME.
Давайте рассмотрим каждый из флагов:
Освобождение ресурсов
Тут все просто, останавливаем кодер и освобождаем системные ресурсы.
Что дальше?
Имея Surface возможны как минимум три пути ввода данных: MediaPlayer (Camera?), OpenGL, Canvas. По примеру использования рендера в SurfaceView возможно создать подобный цикл на основе нашего Surface:
Вариантов использования может быть несколько. Еще интересный момент, Surface является Parcelable, что дает возможность передачи через Binder в другие процессы, таким образом ваш кодер может находиться в одном процессе, когда рендер в другом.
Как декодировать?
Процесс декодирования схожий на процесс кодирования. Мы так же манипулируем буферами данных. Данный процесс я разделил на четыре части: конфигурация, декодирование сэмпла, цикл декодирования, освобождение ресурсов.
Я опущу детали создания класса потока, архитектура схожа на ту, которую я использовал в процессе кодирования.
Конфигурация
Процесс конфигурации критичен, иначе кодек невозможно создать и использовать для декодирования поступающих данных.
Важно заметить, мы обязаны знать на какой Surface нужно выводить изображение, так же ширину и высоту изображения. csd-0 так же важен на этом этапе, как было описанно ранее в процессе кодирования, первый буфер данных должен иметь флаг BUFFER_FLAG_CODEC_CONFIG, этот буфер и является csd-0 который необходимо передать на этапе конфигурации декодера.
Декодирование сэмпла
Как только кодированные данные доступны их необходимо передавать декодеру. Мы запрашиваем буфер декодера, как только он доступен, передаем наши данные.
Если данные были переданы по сети, к примеру RTP протокол, необходимо учесть, что сэмплы передаются последовательно, иначе возможны артифакты при выводе изображения. На данном этапе, само изображение не готово для вывода на Surface, мы просто передаем известные данные декодеру.
Цикл декодирования
Цикл декодирования включает в себя запрос буфера данных который доступен на выходе, если доступен, можно его необходимо вернуть системе и сообщить если мы желаем рендерить данный кадр на Surface.
Лучшие кодеки для видео и аудио (Windows 11, 10, 7). Как выбрать кодеки, чтобы ВСЁ открывалось

Каждый раз при открытии какого-нибудь мультимедиа файла (музыка, фильмы и т.д.) — в работу вступают кодеки (специальное ПО, преобразующее данные, сигнал).
От выбора набора кодеков зависит многое: будет ли у вас открываться только часть видео-файлов или все без исключения; будет ли тормозить видео; как будет конвертироваться и сжиматься аудио и видео и т.д.
Сейчас можно найти десятки наборов кодеков, но далеко не все из них заслуживают внимания (на мой взгляд ☝). В этой статье порекомендую несколько наборов, которые не раз меня выручали в повседневной работе.
📌 Ремарка!
Сейчас популярны видеопроигрыватели, которым не нужны кодеки в системе (всё, что нужно — уже встроено в них!).
K-Lite Codec Pack
Один из лучших (если не самый!) наборов кодеков для работы с аудио- и видео-файлами. Набор отличается своей универсальностью: подойдет, как начинающим пользователям, так и более опытным.
K-Lite Codec Pack поддерживает все самые распространенные форматы видео: AVI, MKV, MP4, FLV, MPEG, MOV, TS, M2TS, WMV, RM, RMVB, OGM, WebM и т.д. То же самое относится и к аудио форматам: MP3, FLAC, M4A, AAC, OGG, 3GP, AMR, APE, MKA, Opus, Wavpack и пр.
Всего есть 4 варианта набора кодеков:
Есть версии кодеков абсолютно для всех ОС Windows:
👉 Важно!
При установке MEGA-пака — выберите в настройках вариант «Lots of stuff» — таким образом у вас будут в системе все необходимые кодеки для просмотра ЛЮБЫХ видео файлов..
📌 Примечание!
Кстати, в набор кодеков включен отличный проигрыватель видео-файлов — Media Player Classic (рекомендую к использованию!). Он может быть весьма полезен, если столкнетесь с тормозами ПК при воспроизведении определенных видеофайлов.
Media Player Codec Pack
Бесплатный и достаточно большой пакет кодеков, предназначенный для обычных домашних ПК (ноутбуков). После установки, как правило, пользователю ничего более ставить не нужно: все видео- и аудио-файлы будут открываться и проигрываться без проблем.
Так же стоит отметить его простую установку: от пользователя потребуется минимум действий! Кодек распространяется в трех вариантах: минимальный набор (Lite), стандартный (Standart) и расширенный (Plus).
Поддерживаемые видео-файлы: DivX, XviD, x264, h.264, AVI, MKV, OGM, MP4, 3GPP, MPEG, VOB, DAT, FLV, PS, TS и др.
Поддерживаемые аудио-файлы: AC3, DTS, AAC, APE, FLAC, TTA, WV, OGG, Vorbis, MO3, ЭТО, XM, S3M, MTM, MOD, UMX и др.
Список кодеков Media Player Codec Pack
ADVANCED Codecs for Windows 11/10/8.1/7
Знаменитые кодеки от Шарки, более известны и популярны за рубежом, нежели в нашей стране. Набор кодеков просто отличный, как видно из названия, он будет работать в ОС Windows 7, 8, 10 (32/64 bits).
Про то, что ADVANCED Codecs поддерживает все популярные (и не очень) форматы видео и аудио, наверное, говорить смысла нет.
А вот о некоторых существенных преимуществах сказать стоит (такого больше нет ни в одном наборе кодеков):
StarCodec
Еще один бесплатный пакет кодеков (разработан корейцами) для качественного воспроизведения аудио и видео файлов. Основное его достоинство: в уникальности, в том, что в этом пакете есть все, что нужно для работы с видео, так сказать, «всё в одном»!
Поддерживает огромное разнообразие видео файлов : DivX, XviD, H.264/AVC, MPEG-4, MPEG-1, MPEG-2, MJPEG, WebM, AVI, MP4, MKV, MOV, FLV, RM, FourCC Changer, MediaInfo и др.
Поддерживает огромное разнообразие аудио файлов : MP3, OGG, AC3, DTS, AAC, FLAC и др.
Стоит добавить, что все необходимые кодеки для 64-битных систем, так же присутствуют в наборе. Поддерживаются ОС Windows: 7, 8, 10. Набор кодеков постоянно обновляется и пополняется.
Примечание! Чем еще хорош данный набор — так это своими более низкими требованиями, по сравнению с аналогами. Т.е. его вполне можно попробовать установить и использовать на старых ПК (ноутбуках).
CCCP: Combined Community Codec Pack
Специфический набор кодеков. Создан, по большей части, для воспроизведения аниме (+ поддержка субтитров, в этих роликах далеко не все проигрыватели способны прочитать субтитры).
Основные особенности набора:
Популярные форматы, которые не поддерживаются:
XP Codec Pack
Хорошая альтернатива пакетам кодеков K-Lite Codec Pack и Media Player Codec Pack. Несмотря на название (прим.: присутствует XP) — пакет кодеков поддерживает все самые новые ОС Windows: XP, 7, 8, 10 (32/64 bits).
В наборе неплохо реализован установщик: вам предложат выбрать видео-фильтры для установки (DVD, msdVR, LAV Filters, Real, xy-VSFilter, xySubFilter); попросят указать аудио-кодеки: AC3 Filter, LAV Audio, FLAC, Monkey Audio, MusePack, OptimFROG, TTA.
В принципе, если не знаете, что выбрать — можете оставить все по умолчанию и нажимать кнопку «далее» — программа сконфигурирована таким образом, что в этом случае у вас все будет работать из «коробки».
Так же рекомендую включить в список установки проигрыватель Media Player Classic Home Cinema (отличается своими низкими системными требованиями, поддержкой большого числа видео-файлов).
XP Codec Pack: окно установки
Примечание! В перечне инструментов, устанавливаемых вместе с пакетом кодеков, есть утилита Codec Detective, которая призвана показать вам все, установленные кодеки в Windows, а так же подсказать, какие из них работают неверно и конфликтуют.
Matroska Pack Full
Добротный универсальный набор кодеков. Особое внимание в нем удалено двум форматам: MKA и MKV (многие современные высококачественные фильмы, на сегодняшний день, распространяются именно в этом формате!).
Так же в Matroska очень хорошо дело обстоит с субтитрами: сможете просмотреть даже «заковыристые» корейские ролики с субтитрами (в том числе, можно подгружать внешние субтитры).
Кодеки: вопросы и ответы
проигрыватель Windows Media некоторые из самых популярных кодеков, например MP3, Windows Мультимедиа Audio и Windows Media Video. Однако он не содержит кодеки, необходимые для файлов Blu-ray, FLAC и FLV. Если что-то не работает в проигрывателе Windows Media, возможно, на вашем компьютере не установлены нужные кодеки. Самый простой способ устранить эту проблему — перейти в Интернет и найти нужный кодек.
Примечание: Не все проблемы с воспроизведением в проигрывателе Windows Media связаны с кодеками. Если проблема связана с кодеком, вы, вероятно, получите сообщение «Для воспроизведения этого файла необходим кодек» «В проигрывателе Windows Media произошла ошибка». В этом случае выполните действия, чтобы узнать больше о недостающих кодеках. Если оказалось, что это проблема не связана с кодеком, изучите раздел Устранение проблем со звуком в Windows Media Center для получения справки по проблемам со звуком и общим проблемам с воспроизведением.
Далее приведены ответы на некоторые распространенные вопросы о кодеках.
Что такое кодек?
Кодек сжимает или разжимает файлы мультимедиа, например композиции или видео. Проигрыватель Windows Media и другие приложения используют кодеки для воспроизведения и создания файлов мультимедиа.
Кодек может состоять из двух частей: кодера, который сжимает файл мультимедиа (кодировки) и декодера, который декомpressирует файл (декод). Некоторые кодеки включают обе части, а другие — только одну из них.
В меню Справка в проигрыватель Windows Media выберите пункт О проигрыватель Windows Media. Если вы не видите меню Справка, выберите пункт Упорядотка > Макет > Показать меню.
В диалоговом окне О программе нажмите ссылку Служба технической поддержки. В веб-браузере откроется страница, содержащая информацию о связанных двоичных файлах, кодеках, фильтрах, подключаемых модулях и службах, установленных на вашем компьютере. Эти сведения помогут вам устранить неполадки.
В настоящее время используются сотни аудио- и видео кодеков. Некоторые из них разработаны корпорацией Майкрософт, но большая часть кодеков создана сторонними компаниями, организациями или отдельными разработчиками. По умолчанию в операционной Windows и player есть ряд популярных кодеков, например Windows Media Audio, Windows Media Video и MP3.
Однако иногда может потребоваться воспроизведения содержимого, сжатого с помощью кодека, который Windows или player не включается по умолчанию. Чаще всего необходимый кодек можно скачать в Интернете (платно или бесплатно) В некоторых случаях player может автоматически использовать кодеки, установленные другими программами воспроизведения и создания цифровых мультимедиа на компьютере.
В этой ситуации вы, вероятно, пытаетесь воспроизвести, записать или синхронизировать файл, сжатый с помощью кодека, не содержащегося по умолчанию в Windows или проигрывателе.
Если вы знаете имя кодека или его идентификатор ( идентификатор FourCC для видеокодеков или идентификатор WaveFormat для аудиокодеков), выполните поиск в Интернете. В большинстве случаев скачать последнюю версию кодека можно на веб-сайте производителя кодека. Если вы не знаете название или идентификатор недостающего кодека, см. раздел Как определить, какой кодек использовался для сжатия файла и в каком формате файл?
Используйте осторожность при установке кодеков, которые находятся в Интернете( в частности, некоторые бесплатные пакеты кодеков, включающие кодеки из разных компаний или организаций). Некоторые компоненты этих пакетов кодеков могут вызвать серьезные проблемы с воспроизведением в проигрыватель Windows Media и других игроков, привести к повреждениям системы и затруднить диагностику и устранение проблем с воспроизведением в службе поддержки Майкрософт.
Поэтому мы настоятельно не рекомендуем устанавливать эти пакеты кодеков, а если они установлены — советуем удалить их, если возникают проблемы при использовании проигрывателя. Устанавливайте только кодеки, фильтры и подключаемые модули из надежных источников, например с веб-сайта официального поставщика. Но даже в этом случае будьте осторожны: некоторые поставщики кодеков практически не предоставляют поддержку пользователям. Перед установкой любых цифровых мультимедийных компонентов создавайте точку восстановления системы. В случае необходимости она позволит вернуться к исходной конфигурации системы.
Совершенно точно определить, какой кодек использовался для сжатия файла, невозможно. Тем не менее доступны следующие способы:
Чтобы определить, какой кодек использовался для определенного файла, по возможности воспроизведения файла в player. Во время воспроизведения файла щелкните его в библиотеке правой кнопкой мыши, а затем выберите пункт Свойства. На вкладке Файл просмотрите разделы Аудиокодек и Видеокодек.
Используйте средство идентификации, не относяцие к кодеку Майкрософт. Чтобы найти такое средство, выполните поиск «средством идентификации кодеков» в Интернете. Вы найдете несколько инструментов, а также полезные сведения.
Декоддер DVD — это еще одно имя для декодера MPEG-2. Содержимое дисков DVD-Video, как и файлов DVR-MS (записи телепередач Майкрософт) и некоторых файлов AVI, закодировано в формате MPEG-2. Для воспроизведения этих элементов в проигрывале на компьютере должен быть установлен совместимый dvd-декод.
Если на компьютере есть DVD-диск, вероятно, на нем уже установлен декодод DVD. Однако если вы получили сообщение об отсутствии совместимого декодера DVD, нажмите кнопку Веб-справка в диалоговом окне сообщения об ошибке, чтобы узнать, как можно получить этот декодер.
Возможно, на рабочем компьютере нет кодеков, которые установлены на домашнем компьютере.
Например, вы не сможете воспроизвести диск DVD-Video или файл DVR-MS на рабочем компьютере, если на нем не установлен совместимый DVD-декодер.
Обратите внимание, что системный администратор в вашей организации может использовать групповую политику, чтобы блокировать установку новых кодеков.
Кодеки можно писать в 32- или 64-битных операционных системах. Если вы используете 64-разрядную версию Windows, необходимо устанавливать 64-разрядные кодеки. Например, если вы устанавливаете 32-битный кодек в 64-битной операционной системе, у игрока может не быть возможности воспроизведения файлов, для которые требуется этот кодек.
Обратите внимание, что многие более старые кодеки доступны только в 32-битных версиях. Если поставщик не указал версию кодека, вероятно, он 32-разрядный. Для получения дополнительных сведений обратитесь к поставщику кодека.
Вы можете попробовать приложение «Кино и ТВ» (Майкрософт) в качестве альтернативы проигрывателю Windows Media. Чтобы скачать его, введите Microsoft Store в поле поиска на панели задач, выполните поиск Кино и ТВ и прокрутите список результатов поиска вниз до раздела приложений.
Что такое кодеки, для чего они нужны, где можно скачать и как удалить
Порою при прослушивании музыки и/или просмотре видео файлов пользователи сталкиваются с неполадками.
К примеру, изображение показывается нормально при просмотре видео, а вот звук почему-то не воспроизводится или же наоборот. Такие проблемы могут быть вызваны отсутствием специальных кодеков. Их наличие обеспечивает полноценное воспроизведение тех или иных медиа файлов.
Что такое кодеки
Кодеком принято называть специальную программу, которая необходима для воспроизведения медиа файлов.
Так как медиа файлы отличаются по форматам, то для воспроизведения каждого из них существует свой отдельный кодек. Без кодеков аудио и видео форматы файлов остаются всего лишь просто файлам без какой-либо возможности их услышать или просмотреть.
Например, на CD-диск были записаны музыкальные треки. И каждый трек при этом имел объем 60 мб. Файлы можно конвертировать в mp3 формат, и для такого кодирования понадобится кодек. В итоге размер каждого трека будет уменьшен в 10 раз, то есть будет иметь величину каждый по 6 мб. Теперь, чтобы воспроизвести данные треки, снова потребуется специальный кодек, который способен считывать и воспроизводить mp3 формат.
Аналогичным образом обстоит ситуация и с видео файлами, например, которые конвертируют из DVD-video формата в формат AVI.
Формат файла можно определить по его расширению. Например, в имени файла после последней точки (если точек несколько) могут быть такие расширения WMA, WMV, MP3, MP4 или AVI. Это часто используемые форматы.
Для чего нужны кодеки?
Одной из главных функций кодеков является способность сжимать медиа файлы, существенно уменьшать их размеры, и при этом сохранять качество видео и аудио на максимальном уровне.
Кодеки можно разделить на два вида по способу уменьшения объема файлов. Первый вид производит сжатие файлов практически без потери качества. А второй вид подразумевает сжатие с потерей качества.
В зависимости от того, какой был использован способ сжатия, происходит либо сохранение объема файла («тяжелый» файл таким же и остается), либо уменьшение объема (он меньше «весит»). В итоге, если объем файла сохраняется, практически без изменений, то улучшается качество как самого изображения, так и звука. А при уменьшении объема файла, увы, теряется его качество, но зато его размер становится гораздо меньше.
Здесь как обычно в вычислительной технике – соблюдается принцип: чем больше размер, тем выше качество. И, наоборот, уменьшение размера файла приводит к снижению качества его воспроизведения. Понять почему так происходит не трудно: чем меньше размер файла, тем меньше информации в нем содержится. Значит для воспроизведения качественного видео и аудио в файле явно не будет хватать необходимых данных.
Наоборот, при больших размерах файла в нем будет много данных для качественного воспроизведения видео контента. Фактически, хорошему качеству требуется и хорошее количество – одно другому не противоречит, а наоборот, дополняет! Кодеки лишь следуют этому принципу, позволяя разворачивать и демонстрировать на экране качественно видео, записанное в файлах большого размер.
Существуют ли базовые кодеки
Возникают очевидные вопросы. Эти самые кодеки уже есть в компьютере? Или их обязательно нужно где-то искать и дополнительно устанавливать на компьютер? Без них ведь невозможно будет посмотреть ни видео, ни послушать аудио файлы.
Ответ на эти вопросы один и тот же – Да. В стандартной обычно поставляемой операционной системе всегда присутствуют базовые кодеки. Однако они не в состоянии обеспечить 100% функциональность даже стандартных проигрывателей, включенных в состав операционной системы.
Например, в Windows имеется бесплатный стандартный проигрыватель звуковых и видеофайлов Windows Media Player, сокращённо WMP. Но это отнюдь не означает, что с помощью данного плейера можно будет открыть и просмотреть абсолютно любой видео файл. Да, многие файлы откроются. Но некоторые, требующие для своей работы другие кодеки, не смогут открыться, видеоплеер откажется их воспроизводить.
Кстати, подобные отказы от воспроизведения видео файлов, порой, вводят в ступор пользователей компьютеров. Ведь кажется очевидным: вчера плейер открывал и показывал какие-то видео, а сегодня почему-то отказывается это делать для других видео! Причем даже расширения файлов, что были вчера, и что появились сегодня, тоже одинаковые. Но не показывает плейер сегодняшние файлы. Вот тут как раз кроется проблема: необходимость установки дополнительных кодеков.
Где можно скачать кодеки
При возникновении проблем с воспроизведением тех или иных медиа файлов, рекомендуется производить установку дополнительных кодеков.
Самыми качественными и многофункциональными кодеками, например, считаются кодеки «K-Lite Codec Pack».
Другие кодеки также можно бесплатно скачать в интернете. Для этого достаточно воспользоваться любым поисковиком и в качестве запроса ввести название необходимого кодека.
Желательно для скачивания использовать официальные сайты во избежание дальнейших проблем и установки дополнительного нежелательного софта. К тому же именно на официальном сайте выкладывается для скачивания свежая, последняя версия кодеков, с внесенными правками. Выше приведен именно официальный сайт для скачивания кодеков.
Так как кодеки скачиваются бесплатно, их производители могут «зашивать» в программы выбора кодеков ряд дополнительных опций. Например, вместе с кодеками можно скачать другой антивирус, вместо того, который уже установлен на компьютере пользователя. Могут быть предложены и другие варианты скачивания чего-либо «заодно» с кодеками.
Поэтому перед скачиванием кодеков, рекомендуется проверить все «галочки» в полях выбора дополнительных опций. Лишние галочки нужно снимать, чтобы кроме кодеков не закачать что-то ненужное и, порой, даже вредное. Ведь, скажем, не стоит скачивать и устанавливать второй антивирус на компьютер – два антивируса на одном компьютере не могут спокойно «уживаться», и будут мешать работе друг друга.
Кодеки: вопросы и ответы
По этой ссылке можно перейти на официальный сайт компании Microsoft, где для Windows 10 и Win 8.1 приведены ответы на распространенные вопросы пользователей: что такое кодек, как определить, какие именно кодеки установлены на компьютере, как найти кодек и другие.
Как удалить кодеки в Windows 10
Порой бывает необходимо не только устанавливать кодеки, но и «сносить» их с компьютера. Например, если кодеков уже установлено много настолько, что они мешают друг другу. Или для удаления тех кодеков, которые были установлены, но так и не понадобились. Могут быть варианты удаления устаревших кодеков, чтобы взамен поставить новые кодеки. В общем, причины для удаления кодеков могут быть самые разные.
Кликаем на значок с лупой (цифра 1 на рис. 2) для поиска стандартной программы, с помощью которой можно удалить кодеки. В строку поиска вводим без кавычек «удаление программ» (2 на рис. 2). Кликаем по найденной программе «Установка и удаление программ» (3 на рис. 2).
Откроется окно «Приложения и возможности» (рис. 3).
Ищем строку, содержащую название «Codec Pack». Кликаем по найденным кодекам. Появится кнопка «Удалить», по которой следует нажать.
Удаленные кодеки можно заново скачать и установить, как только они понадобятся, как только пользователю потребуется открыть новые видео или аудио файлы на своем компьютере.












