#Android 多媒体应用的主要业务
- Music Player
- Video Player
- Camera
- Sound Recorder
- VideoCamera
- Media Metadate
#媒体播放器结构 媒体播放器是多媒体中最重要的一个环节,媒体播放器涉及以下内容:
- 本地媒体框架中的媒体播放器部分
- PVPlayer(实现的核心代码)
- 音频、视频编解码模块(可选)
- 音频输出环节
- 视频输出环节(Surface系统或者Overlay)
- android.media.MediaPlayer类
- android.view.Surface类
- android.widget.VideoView类
- Music应用程序包和Camera应用程序包(视频播放的MovieView类)
典型的数据流在Android媒体播放器中的运行情况是:上层的Java应用程序将媒体的URI(可以是媒体文件和流媒体)作为输入设置到媒体播放器中,经过Java框架、JNI和本地框架,一直设置到由PVPlayer中。在这个过程中,只是传递了媒体URI路径,并无数据流传递。由PVPlayer进行解析后,将媒体分成音频流(MP3、AMR、AAC等)和视频流(H263、H264、MPEG4等),经过编解码器的处理和同步(AVSync),转换成原始数据(音频一般是PCM,视频一般是YUV或者RGB格式)。音视频原始数据将被送入音频和视频的输出环节中。
在实现的过程中,媒体播放器可能有一些变化:仅有音频数据时,只需要进行音频解码,且不需要做音视频的同步工作:硬件的解码环节可以作为PVPlayer的插件完成编解码工作;标准的实现是解码环节解码后,音视频的原始数据从用户控件传递到音视频输出环节中,但是如果使用硬件解码器,音视频的原始数据也可以不经过用户控件,直接输入到硬件设备上;作为视频的输出设备,可以基于Android中的通用的Surface接口或者Overlay系统。
#照相机系统结构
照相机是多媒体中比较独立的环节,照相机涉及的内容如下:
- 本地的Camera的框架;
- 图像编码模块(可选);
- 视频输出环节(Surface系统或者Overlay);
- android.hardware.Camera类;
- android.view.Surface类;
- Camera应用程序包。
Android的照相机系统主要有两种业务:取景器(ViewFinder)和拍摄照片。取景器实现了预览(Preview)功能,拍摄照片的输出是照片文件,取景器预览的输出是Android的Surface。照相机一般只需要实现JPEG数据的编码,不需要视频流编码,因此通常不经过PacketVideo。
#录音机系统结构
录音机系统只设计音频部分,其结构比较简单。录音机涉及的内容如下:
- 本地媒体框架中的媒体记录器部分
- PVAuthor(实现的核心部分)
- 音频编码模块(可选)
- 音频输入环节
- android. media.MediaRecorder类
- SoundRecorder包
Android的录音机功能比较单一,其数据流的运转情况通常是从音频的输入环节中获得PCM数据,经过PVAuthor进行编码,编码后加入媒体的头信息形成音频媒体文件。录音的编码也可以使用硬件的编码环节。
录音机的Java应用SoundRecorder具有录音完成后播放功能,因此既需要调用Java框架的媒体记录器部分,也需要调用媒体播放器部分。
#摄像机系统结构
摄像机是多媒体中比较复杂的一个部分,摄像机涉及的内容如下:
- 本地媒体框架中的媒体记录器部分;
- PVAuthor(实现的核心部分);
- 音频/视频编码模块(可选);
- 音频输入环节;
- Camera的本地接口(作为视频输入环节);
- 视频输出环节(Surface系统或者Overlay);
- android.media.MediaRecorder类;
- android.view.Surface类;
- android.widget.VideoView类;
- Music包和Camera包。
Android的摄像机系统有3个方面的业务:视频预览、视频录制、音频录制。摄像机系统单纯的视频预览功能和照相机的预览基本一致。在录制的过程中,实际上是视频预览和录制、音频录制三者同时进行的,视频原始数据从Camera的硬件硬件抽象层送上后,将同时被送到视频输出系统和PVAuthor中;音频原始数据从音频的输入设备中得到,也被送入打牌PVAuthor中,PVAuthor对音频数据进行同步和编码之后,增加媒体文件的头信息,写入到媒体文件上。在这个过程中,编码环节也可以使用硬件实现的插件模块,以提高系统的性能。
媒体录制和媒体播放的过程基本相反,但是多了视频预览的环节。
- 摄像机的Java应用是Camera包中的VideoCamera,视频播放的应用也被包含在Camera包中,基于VideoView实现。
《Android系统原理及开发要点详解》笔记 by2015.2.23晚
★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。
见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓