Android多媒体框架中几个重要的类

1,471 阅读2分钟

与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卷》在网上也买不到,只能去淘宝买复印版。。。