Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

СМИ

Значок Android Media HAL

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

Функции воспроизведения аудио и видео Stagefright включают интеграцию с кодеками OpenMAX, управление сеансом, синхронизированный по времени рендеринг, управление транспортом и DRM.

Stagefright также поддерживает интеграцию с пользовательскими аппаратными кодеками, предоставленными вами. Чтобы установить аппаратный путь для кодирования и декодирования мультимедиа, вы должны реализовать аппаратный кодек как компонент OpenMax IL (уровень интеграции).

Примечание. Обновления Stagefright могут происходить в процессе ежемесячного обновления системы безопасности Android и как часть выпуска ОС Android.

Архитектура

Медиа-приложения взаимодействуют с собственной мультимедийной платформой Android в соответствии со следующей архитектурой.

Медиа-архитектура Android

Рисунок 1. Медиа-архитектура

Платформа приложения
На уровне структуры приложения - это код приложения, который использует API android.media для взаимодействия с мультимедийным оборудованием.
Связующее МПК
Прокси-серверы Binder IPC упрощают обмен данными через границы процессов. Они расположены в каталоге frameworks/av/media/libmedia и начинаются с буквы «I».
Родной мультимедийный фреймворк
На собственном уровне Android предоставляет мультимедийную среду, которая использует движок Stagefright для записи и воспроизведения аудио и видео. Stagefright поставляется со списком поддерживаемых программных кодеков по умолчанию, и вы можете реализовать свой собственный аппаратный кодек, используя стандарт уровня интеграции OpenMax. Для получения дополнительных сведений о реализации см. Компоненты MediaPlayer и Stagefright, расположенные в frameworks/av/media .
Уровень интеграции OpenMAX (IL)
OpenMAX IL предоставляет Stagefright стандартизированный способ распознавания и использования пользовательских аппаратных мультимедийных кодеков, называемых компонентами. Вы должны предоставить подключаемый модуль OpenMAX в виде общей библиотеки с именем libstagefrighthw.so . Этот плагин связывает Stagefright с вашими пользовательскими компонентами кодека, которые должны быть реализованы в соответствии со стандартом компонентов OpenMAX IL.

Реализация пользовательских кодеков

Stagefright поставляется со встроенными программными кодеками для распространенных форматов мультимедиа, но вы также можете добавить свои собственные аппаратные кодеки в качестве компонентов OpenMAX. Для этого вы должны создать компоненты OMX и плагин OMX, который объединяет ваши пользовательские кодеки с платформой Stagefright. Например, компоненты, см. hardware/ti/omap4xxx/domx/ ; в качестве примера плагина для Galaxy Nexus см. hardware/ti/omap4xx/libstagefrighthw .

Чтобы добавить свои собственные кодеки:

  1. Создавайте свои компоненты в соответствии со стандартом компонентов OpenMAX IL. Интерфейс компонента находится в файле frameworks/native/include/media/OpenMAX/OMX_Component.h . Чтобы узнать больше о спецификации OpenMAX IL, посетите веб-сайт OpenMAX .
  2. Создайте плагин OpenMAX, который связывает ваши компоненты со службой Stagefright. Интерфейсы для создания плагина см. В заголовочных файлах frameworks/native/include/media/hardware/OMXPluginBase.h и HardwareAPI.h .
  3. Создайте свой плагин как общую библиотеку с именем libstagefrighthw.so в Makefile вашего продукта. Например:
    LOCAL_MODULE := libstagefrighthw
    

    Убедитесь, что в Makefile вашего устройства вы объявили модуль как пакет продукта:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Предоставление кодеков фреймворку

Служба Stagefright анализирует system/etc/media_codecs.xml и system/etc/media_profiles.xml чтобы предоставить разработчикам приложений поддерживаемые кодеки и профили на устройстве через классы android.media.MediaCodecList и android.media.CamcorderProfile . Вы должны создать оба файла в каталоге device/<company>/<device>/ и скопировать их в каталог system/etc образа system/etc в Makefile вашего устройства. Например:

PRODUCT_COPY_FILES += \
  device/samsung/tuna/media_profiles.xml:system/etc/media_profiles.xml \
  device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \

Для полных примеров см. device/samsung/tuna/media_codecs.xml и device/samsung/tuna/media_profiles.xml .

Примечание. Начиная с Android 4.1, элемент <Quirk> для медиакодеков больше не поддерживается.