1.概述
Android平台内置了常用类型媒体的编解码,可以在应用中方便地集成他们。访问平台的媒体能力是很直观简单的—可以使用相同的Intent和Activity机制。
Android能够从多个数据来源播放音视频:存在应用的资源目录中(raw resources)、文件系统中或者来自网络。通过android.media.MediaPlayer来播放。
平台同时也允许通过android.media.MediaRecorder录音视频,当然要硬件支持(模拟器可不行~要在真机上)。
Android1.5支持如下的媒体类型:
类型 | 格式 | 编码 | 解码 | 详情 | 文件类型 |
Audio | AAC LC/LTP |
| Y | 单/ 双声道160Kpbs 的码率,采样4-48KHz
| 3GPP(.3gp) MPEG-4(.mp4,.m4a) 不支持raw AAC(.aac) |
HE-AACv1 (AAC+) |
| Y | |||
HE-AACv2 ( 增强AAC+) |
| Y | |||
AMR-NB | Y | Y | 4.75 to 12.2 kbps sampled @ 8kHz | 3GPP (.3gp) | |
AMR-WB |
| Y | 9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16kHz | 3GPP (.3gp) | |
MP3 |
| Y | Mono/Stereo 8-320Kbps constant (CBR) or variable bit-rate (VBR) | MP3 (.mp3) | |
MIDI |
| Y | MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for ringtone formats RTTTL/RTX, OTA, and iMelody | Type 0 and 1 (.mid, .xmf, .mxmf). Also RTTTL/RTX (.rtttl, .rtx), OTA (.ota), and iMelody (.imy) | |
Ogg Vorbis |
| Y |
| Ogg (.ogg) | |
PCM/WAVE |
| Y | 8- and 16-bit linear PCM (rates up to limit of hardware) | WAVE (.wav) | |
Image | JPEG | Y | Y | Base+progressive | JPEG(.jpg) |
GIF |
| Y |
| GIF(.gif) | |
PNG |
| Y |
| PNG(.png) | |
BMP |
| Y |
| BMP(.bmp) | |
Video | H.263 | Y | Y |
| 3GPP (.3gp) |
| H.264 AVC |
| Y |
| 3GPP (.3gp) and MPEG-4 (.mp4) |
| MPEG-4 SP |
| Y |
| 3GPP (.3gp) |
T1还 额外支持了:Audio 的WMA ,Video 的WMV类型。
2.播放
播放很简单,但从资源中播放和从文件/网络中播放还是有些区别,先说从资源中播放:
开始播放:MediaPlayer mp=MediaPlayer.create(context,R.raw.xxx);-->mp.start();
停止/播放:mp.stop()-->mp.reset();mp.prepare()-->mp.start();
暂停/播放:mp.pause()-->mp.start();
从文件/网络中播放:
开始播放:
MediaPlayer mp=new MediaPlayer.create();
mp.setDataSource(PATH_TO_FILE);
mp.prepare();
mp.start();
停止/播放和暂停/播放和上面一样。
3.录制
录制要稍微复杂一些,按照步骤:
- 实例化MediaRecorder:mr=new MediaRecorder();
- 初始化mr:mr.setAudioSource(MIC)/setVideoSource(CAMERA);必须在配置DataSource之前调用。
- 配置DataSource:设置输出文件格式(参见上表)/路径,编码器(参见上表)等
- 准备录制:mr.prepare();
- 开始录制:mr.start();
- 停止录制:mr.stop();
- 释放资源:mr.release();
学习这部分内容的时候,就想到对电话录音是个不错的主意。一google,发现早就有这个软件了,但有一个问题就是声音只能从MIC中录入(录音的效果不是很好),受限于基带处理器,不能直接获取通话的声音记录,以后会不会开放这个功能接口?
http://groups.google.com/group/android-developers/browse_thread/thread/355254941f17aa17