天天看點

android多媒體架構簡介

Android多媒體架構簡介

一 主要内容

    1 Android Media

    2 mediaCodec

    3 mediaCodec 流程

    4 NuPlayer

    //5 MediaRecorder

    //6 MediaRecorder 流程

二   Android Media

    2.1 android多媒體架構曆史回顧

        Android 1.0 ->Packet video - Open core

        Android 1.6 ->Open core 2.0

        Android 2.0 ->StageFright

        Android 2.1 ->StageFright

        Android 3.0 ->增強版StageFright

        Android 4.1 ->支援編解碼功能

        Android 5.0->增加MediaSession 和MediaController功能

   2.2 android多媒體體系結構

android多媒體架構簡介

    Stagefright 是本地的媒體播放引擎,支援多種的媒體格式的軟解碼,功能包括音頻視訊播放,會話管理,時間同步,傳輸控制等等,還支援內建自定義硬體編解碼。

    2.3 Stagefright進階别調用流程

android多媒體架構簡介

    android的終端應用調用framework層的AudioManager,MediaPlayer,Ringtone等接口擷取媒體相關的服務。本地媒體播放系統由Stagefright架構支撐,媒體播放器服務系統,主要包含位于frameworks/av/media/libmediaplayerservice目錄下的C++類,處理本地Media Player誇程序的請求,Stagefright系統位于frameworks/av/media/libstagefright目錄下,實作先關的算法邏輯。

    二   MediaCodec

    MediaCodec主要為應用程式和播放器服務,提供解析器和資料對象,支援編解碼,支援DRM加密内容的解密。MediaCodec類在Java和C++源碼中都有存在,隻有位于java中的接口是公開的,MediaCodec功能是在Android 4.1中引進的。mediaCodec體系結構如下圖

android多媒體架構簡介

     三   MediaCodec流程

android多媒體架構簡介

    四   NuPlayer播放器

        4.1 nuplayer簡介

android多媒體架構簡介

    Nuplayer内置于Stagefright架構中,利用消息循環/消息處理機制,處理各種異步請求,從消息隊列中擷取消息進而降低死鎖現象,Nuplayer::Source接口(屬于parser module)是由MediaExtractor和MediaSource組合而成,可精準定位資料源,Nuplayer::Decoder連接配接到ACodec,可為AVC提供解碼功能,為AAC解碼提供解碼包裝,ACodec在Stagefright架構中是一個功能類似于OMXCodec的解碼器,但不具有應用的狀态模式和圍繞消息模式傳送的資料的功能。NuPlayer::Render負責渲染音頻,負責音視訊同步,在合适的時間将視訊資料傳送到本地視窗。OMXCodec和ACodec都是底層OMX元件的高度抽象,提供音頻視訊的編解碼功能。

        4.1 nuplayer類圖

android多媒體架構簡介