Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Medien

Android Media HAL-Symbol

Android enthält Stagefright, eine Medienwiedergabe-Engine auf nativer Ebene, die integrierte softwarebasierte Codecs für beliebte Medienformate enthält.

Zu den Audio- und Videowiedergabefunktionen von Stagefright gehören die Integration in OpenMAX-Codecs, Sitzungsverwaltung, zeitsynchronisiertes Rendern, Transportsteuerung und DRM.

Stagefright unterstützt auch die Integration in von Ihnen bereitgestellte benutzerdefinierte Hardware-Codecs. Um einen Hardwarepfad zum Codieren und Decodieren von Medien festzulegen, müssen Sie einen hardwarebasierten Codec als OpenMax IL-Komponente (Integration Layer) implementieren.

Hinweis: Stagefright-Updates können über den monatlichen Sicherheitsupdateprozess für Android und als Teil einer Android-Betriebssystemversion erfolgen.

Die Architektur

Medienanwendungen interagieren mit dem nativen Android-Multimedia-Framework gemäß der folgenden Architektur.

Android-Medienarchitektur

Abbildung 1. Medienarchitektur

Anwendungsframework
Auf der Ebene des Anwendungsframeworks befindet sich Anwendungscode, der android.media- APIs verwendet, um mit der Multimedia-Hardware zu interagieren.
Binder IPC
Die Binder IPC-Proxys erleichtern die Kommunikation über Prozessgrenzen hinweg. Sie befinden sich im Verzeichnis frameworks/av/media/libmedia und beginnen mit dem Buchstaben "I".
Native Multimedia Framework
Auf nativer Ebene bietet Android ein Multimedia-Framework, das die Stagefright-Engine für Audio- und Videoaufzeichnung und -wiedergabe verwendet. Stagefright enthält eine Standardliste der unterstützten Software-Codecs. Sie können Ihren eigenen Hardware-Codec mithilfe des OpenMax-Integrationsschichtstandards implementieren. Weitere Implementierungsdetails finden Sie in den MediaPlayer- und Stagefright-Komponenten in frameworks/av/media .
OpenMAX Integration Layer (IL)
OpenMAX IL bietet Stagefright eine standardisierte Möglichkeit, benutzerdefinierte hardwarebasierte Multimedia-Codecs, sogenannte Komponenten, zu erkennen und zu verwenden. Sie müssen ein OpenMAX-Plugin in Form einer gemeinsam genutzten Bibliothek namens libstagefrighthw.so . Dieses Plugin verknüpft Stagefright mit Ihren benutzerdefinierten Codec-Komponenten, die gemäß dem OpenMAX IL-Komponentenstandard implementiert werden müssen.

Implementieren von benutzerdefinierten Codecs

Stagefright enthält integrierte Software-Codecs für gängige Medienformate. Sie können jedoch auch Ihre eigenen benutzerdefinierten Hardware-Codecs als OpenMAX-Komponenten hinzufügen. Dazu müssen Sie die OMX-Komponenten und ein OMX-Plugin erstellen, das Ihre benutzerdefinierten Codecs mit dem Stagefright-Framework verbindet. Beispiele für Komponenten finden Sie in der hardware/ti/omap4xxx/domx/ ; Ein Beispiel-Plugin für das Galaxy Nexus finden Sie unter hardware/ti/omap4xx/libstagefrighthw .

So fügen Sie Ihre eigenen Codecs hinzu:

  1. Erstellen Sie Ihre Komponenten gemäß dem OpenMAX IL-Komponentenstandard. Die Komponentenschnittstelle befindet sich in der Datei frameworks/native/include/media/OpenMAX/OMX_Component.h . Weitere Informationen zur OpenMAX IL-Spezifikation finden Sie auf der OpenMAX-Website .
  2. Erstellen Sie ein OpenMAX-Plugin, das Ihre Komponenten mit dem Stagefright-Dienst verbindet. frameworks/native/include/media/hardware/OMXPluginBase.h den Schnittstellen zum Erstellen des Plugins finden Sie unter den Header-Dateien frameworks/native/include/media/hardware/OMXPluginBase.h und HardwareAPI.h .
  3. Erstellen Sie Ihr Plugin als gemeinsam genutzte Bibliothek mit dem Namen libstagefrighthw.so in Ihrem Produkt-Makefile. Beispielsweise:
    LOCAL_MODULE := libstagefrighthw
    

    Stellen Sie im Makefile Ihres Geräts sicher, dass Sie das Modul als Produktpaket deklarieren:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Codecs dem Framework zugänglich machen

Der Stagefright-Dienst analysiert die system/etc/media_codecs.xml und system/etc/media_profiles.xml , um die unterstützten Codecs und Profile auf dem Gerät über die Klassen android.media.MediaCodecList und android.media.CamcorderProfile für App-Entwickler android.media.MediaCodecList android.media.CamcorderProfile . Sie müssen beide Dateien im Verzeichnis device/<company>/<device>/ erstellen und diese in das system/etc Verzeichnis des system/etc im Makefile Ihres Geräts kopieren. Beispielsweise:

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 \

Vollständige Beispiele finden Sie unter device/samsung/tuna/media_codecs.xml und device/samsung/tuna/media_profiles.xml .

Hinweis: Ab Android 4.1 wird das <Quirk> -Element für Mediencodecs nicht mehr unterstützt.