Android多媒體框架中幾個重要的類

weixin_34370347發表於2017-12-16

與iOS中強大的AVFoundation框架相比,Android framework中提供的有關多媒體處理的類可謂屈指可數,但總比沒有好吧。今天我們就來談談這幾個類。

說明 這裡提到的多媒體處理主要是指音視訊處理。包括音視訊的裁剪、合併;視訊畫面的各種變換,旋轉、縮放、翻轉;視訊濾鏡;音視訊的播放,快速、慢速、倒序播放等等。

主要涉及到的類有:

  1. MediaExtractor:媒體提取器
  2. MediaCodec:編解碼器
  3. MediaMuxer:媒體混合器
  4. MediaMetadataRetriever: 獲取音視訊資訊的類
  5. MediaFormat: 包含音視訊幀資訊的類
  6. GLSurfaceView: 展示openGL渲染的View
  7. OpenGL相關的類

MediaExtractor 在Android4.1(API16)加入。可以從一段音視訊中提取出一幀一幀的資料,與MediaMuxer配合使用可以完成視訊的裁剪和合並,與MediaCodec、GLSurfaceView配合使用可以完成視訊的播放。

MediaCodec 在Android4.1(API16)加入。在Android4.3(API18)提供輸入可以為Surface。在Android5.0(API21)又增加了非同步處理模式。它是一個低等級的媒體編解碼器,可以作為編碼器,也可以作為解碼器。可攻可受,嘿嘿嘿。是音視訊處理中最為核心的類。

由於相關文件在以前不是很完善,來自Android媒體團隊的fadden(現已不在)維護了一個網站 http://bigflake.com/mediacodec/ 。上面有大量的相關資源。此外在stackoverflow上面只要是MeidaCodec相關的問題隨處可見fadden的身影。感謝fadden。現在官方文件已經相當詳細了,不過都是英文的,對於閱讀困難的人,國內也有人進行了翻譯。地址在這裡

MediaMuxer 在Android4.3(API18)。可以合成MP4格式的視訊,輸入源通常為從MediaExtractor或者MediaCodec提供的已編碼的資料。

MediaMetadataRetriever 主要用來獲取視訊的方向資訊。在合成視訊時,可糾正視訊方向。此外還可以獲取視訊某一幀畫面的bitmap,前提必須是android支援的視訊格式。

MediaFormat 內部持有一個包含音視訊幀資訊的map。

GLSurfaceView 可與MediaPlayer配合,完成視訊變換的各種效果實時預覽。

OpenGL是一門單獨的技術,然而關於其在Android中使用的文件和列子實在太少。唯一的一本書《OpenGL ES應用開發實踐指南 Android卷》在網上也買不到,只能去淘寶買影印版。。。

相關文章