新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Android多媒體框架初步分析

        Android多媒體框架初步分析

        作者: 時間:2016-10-08 來源:網絡 收藏

        Android 系統整體架構:

        本文引用地址:http://www.104case.com/article/201610/305852.htm

        我們先看一下多媒體框架在整個Android系統所處的位置

        從框架圖可以看出Media Framework處于Libraries這一層,這層的Library不是用Java實現,一般是C/C++實現,它們通過Java的JNI方式調用。

        多媒體架構:

        基于第三方PacketVideo 公司的OpenCORE platform來實現

        支持所有通用的音頻,視頻,靜態圖像格式

        CODEC(編解碼器)使用OpenMAX 1L interface 接口進行擴展,可以方便得支持hardware / software codec plug-ins

        支持的格式包括:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等。

        l Open Core多媒體框架有一套通用可擴展的接口針對第三方的多媒體遍解碼器,輸入,輸出設備等等 。

        l 多媒體文件的播放,下載,包括3GPP, MPEG-4,AAC and MP3 containers

        l 流媒體文件的下載,實時播放,包括:3GPP, HTTP and RTSP/RTP

        l 動態視頻和靜態圖像的編碼,解碼,例如:MPEG-4, H.263 and AVC (H.264), JPEG

        l 語音編碼格式: AMR-NB and AMR-WB

        l 音樂編碼格式: MP3, AAC, AAC+

        l 視頻和圖像格式: 3GPP, MPEG-4 and JPEG

        l 視頻會議:基于H324-M standard

        圖中用黃線圈出的是Media Framework

        Open Core介紹:

        Open Core是Android 多媒體框架的核心,所有Android平臺的音視頻采集,播放的操作都是通過它來實現。它也被稱為PV(Packet Video), Packet Video是一家專門提供多媒體解決方案的公司。

        通過Open Core程序員可以方便快速的開發出想要的多媒體應用程序,例如:音視頻的采集,回放,視頻會議,實時的流媒體播放等等應用。

        Open Core 框架

        代碼結構:

        Open Core的代碼在Android代碼的External/Opencore目錄中。這個目錄是OpenCore的根目錄,其中包含的子目錄如下所示:

        android:這里面是一個上層的庫,它實現了一個為Android使用的音視頻采集,播放的接口,和DRM數字版權管理的接口實現。

        baselibs:包含數據結構和線程安全等內容的底層庫

        codecs_v2:音視頻的編解碼器,基于OpenMAX實現

        engines:核心部分,多媒體引擎的實現

        extern_libs_v2:包含了khronos的OpenMAX的頭文件

        fileformats:文件格式的解析(parser)工具

        nodes:提供一些PVMF的NODE,主要是編解碼和文件解析方面的。

        oscl:操作系統兼容庫

        pvmi: 輸入輸出控制的抽象接口

        protocols:主要是與網絡相關的RTSP、RTP、HTTP等協議的相關內容

        pvcommon:pvcommon庫文件的Android.mk文件,沒有源文件。

        pvplayer:pvplayer庫文件的Android.mk文件,沒有源文件。

        pvauthor:pvauthor庫文件的Android.mk文件,沒有源文件。

        tools_v2:編譯工具以及一些可注冊的模塊。

        Open Core 上層代碼結構

        在實際開發中我們并不會過多的研究Open Core的實現,Android提供了上層的Media API給開發人員使用,MediaPlayer和MediaRecorder

        Android Media APIs

        l The Android platform is capable of playing both audio and video media. It is also capable of playing media contained in the resources for an application, or a standalone file in the filesystem, or even streaming media over a data connection. Playback is achieved through the android.media.MediaPlayer class.

        l The Android platform can also record audio. Video recording capabilities are coming in the future. This is achieved through the android.media.MediaRecorder class.

        Media Player

        提供的基本接口如下:

        Public Methods

        static MediaPlayer create(Context context, Uri uri)

        Convenience method to create a MediaPlayer for a given Uri.

        int getCurrentPosition()

        Gets the current playback position.

        int getDuration()

        Gets the duration of the file.

        int getVideoHeight()

        Returns the height of the video.

        int getVideoWidth()

        Returns the width of the video.

        boolean isPlaying()

        Checks whether the MediaPlayer is playing.

        void pause()

        Pauses playback.

        void prepare()

        Prepares the player for playback, synchronously.

        void prepareAsync()

        Prepares the player for playback, asynchronously.

        void release()

        Releases resources associated with this MediaPlayer object.

        void reset()

        Resets the MediaPlayer to its uninitialized state.

        void seekTo(int msec)

        Seeks to specified time position.

        void setAudioStreamType(int streamtype)

        Sets the audio stream type for this MediaPlayer.

        void setDataSource(String path)

        Sets the data source (file-path or http/rtsp URL) to use.

        void setDisplay(SurfaceHolder sh)

        Sets the SurfaceHolder to use for displaying the video portion of the media.

        void setVolume(float leftVolume, float rightVolume)

        Sets the volume on this player.

        void start()

        Starts or resumes playback.


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 小金县| 凤山市| 沂源县| 祁东县| 宜章县| 通渭县| 桐城市| 岑巩县| 黄山市| 婺源县| 肇庆市| 玉树县| 梁河县| 阿拉尔市| 建水县| 旺苍县| 竹北市| 镇康县| 陕西省| 曲麻莱县| 丁青县| 昌乐县| 海宁市| 柏乡县| 陇西县| 开封县| 昔阳县| 清新县| 凉城县| 邵阳县| 通渭县| 繁昌县| 长顺县| 阿巴嘎旗| 大邑县| 黄陵县| 玉龙| 湾仔区| 大城县| 青阳县| 新建县|