
Android 包含 Stagefright,這是原生層級的媒體播放引擎,內建了適用於熱門媒體格式的軟體編碼器。
Stagefright 音訊和影片播放功能包括與 OpenMAX 轉碼器整合、工作階段管理、時間同步轉譯、傳輸控制和 DRM。
Stagefright 也支援與您提供的自訂硬體編解碼整合。如要設定硬體路徑來編碼及解碼媒體,您必須將以硬體為基礎的編碼器設為 OpenMax IL (整合層) 元件。
注意:Stagefright 更新可透過 Android 每月安全性更新程序,以及 Android 作業系統版本發布。
建築
媒體應用程式會根據下列架構與 Android 原生多媒體架構互動。

圖 1. 媒體架構
- 應用程式架構
- 應用程式架構層級是應用程式程式碼,可利用 android.media API 與多媒體硬體互動。
- Binder IPC
- Binder IPC 代理程式可協助處理序間通訊。這些檔案位於
frameworks/av/media/libmedia
目錄,並以字母「I」開頭。 - 原生多媒體架構
- 在原生層級,Android 提供多媒體架構,可利用 Stagefright 引擎錄製及播放音訊和視訊。Stagefright 提供支援的軟體編碼器預設清單,您可以使用 OpenMax 整合層標準實作自己的硬體編碼器。如需更多實作詳細資訊,請參閱
frameworks/av/media
中的 MediaPlayer 和 Stagefright 元件。 - OpenMAX 整合層 (IL)
- OpenMAX IL 提供標準化方式,讓 Stagefright 辨識及使用稱為元件的自訂硬體多媒體編解碼器。您必須以名為
libstagefrighthw.so
的共用程式庫形式提供 OpenMAX 外掛程式。這個外掛程式會將 Stagefright 連結至自訂編解碼元件,而這些元件必須根據 OpenMAX IL 元件標準實作。
實作自訂編解碼器
Stagefright 內建適用於常見媒體格式的軟體編碼器,但您也可以新增自訂硬體編碼器做為 OpenMAX 元件。為此,您必須建立 OMX 元件和 OMX 外掛程式,以便將自訂編解碼器與 Stagefright 架構連結在一起。如需元件的範例,請參閱 hardware/ti/omap4xxx/domx/
;如需 Galaxy Nexus 的範例外掛程式,請參閱 hardware/ti/omap4xx/libstagefrighthw
。
如要新增自己的編解碼:
- 請根據 OpenMAX IL 元件標準建立元件。元件介面位於
frameworks/native/include/media/OpenMAX/OMX_Component.h
檔案中。如要進一步瞭解 OpenMAX IL 規格,請參閱 OpenMAX 網站。 - 建立 OpenMAX 外掛程式,將元件連結至 Stagefright 服務。如要瞭解建立外掛程式的介面,請參閱
frameworks/native/include/media/hardware/OMXPluginBase.h
和HardwareAPI.h
標頭檔案。 - 在產品 Makefile 中,將外掛程式建構為名為
libstagefrighthw.so
的共用程式庫。例如:
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>/
目錄中建立這兩個檔案,並將其複製到裝置 Makefile 中的系統映像檔 system/etc
目錄。例如:
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>
元素。