多媒体应用开发 - 录制音频

录制音频

1、AndroidMediaRecorder架构详解

在android中录制音频有两种方式,MediaRecorder和AudioRecord。两者的区别如下:

(1) MediaRecorder

录制的音频文件是经过压缩后的,需要设置编码器,并且录制的音频文件可以用系统自带的Music播放器播放。MediaRecorder已经集成了录音、编码、压缩等,并支持少量的录音音频格式,但是这也是他的缺点,支持的格式过少并且无法实时处理音频数据。

(2) AudioRecorder

主要实现对音频实时处理以及边录边播功能,相对MediaRecorder比较专业,在声音录制过程中,可以处理采集的声音数据,如降噪、合成等。过程为一段一段进行录制然后得到数据分别进行处理。录制的是PCM格式的音频文件,如果保存成音频文件,是不能够被播放器播放的,需要用AudioTrack来播放,所以必须先写代码实现数据编码以及压缩。

2、MediaRecorder状态图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eetZVJVX-1598595416228)(E:\StudyNotes\TyporaNotes\移动终端高级开发####图片\wps4.png)]

⭐️ Initial:初始状态,当使用new()方法创建一个MediaRecorder对象或者调用了reset()方法时,该MediaRecorder对象处于Initial状态。在设定视频源或者音频源之后将转换为Initialized状态。另外,在除Released状态外的其它状态通过调用reset()方法都可以使MediaRecorder进入该状态。

⭐️ Initialized:已初始化状态,可以通过在Initial状态调用setAudioSource()或setVideoSource()方法进入该状态。在这个状态可以通过setOutputFormat()方法设置输出格式,此时MediaRecorder转换为DataSourceConfigured状态。另外,通过reset()方法进入Initial状态。

⭐️ DataSourceConfigured:数据源配置状态,这期间可以设定编码方式、输出文件、屏幕旋转、预览显示等等。可以在Initialized状态通过setOutputFormat()方法进入该状态。另外,可以通过reset()方法回到Initial状态,或者通过prepare()方法到达Prepared状态。

⭐️ Prepared:就绪状态,在DataSourceConfigured状态通过prepare()方法进入该状态。在这个状态可以通过start()进入录制状态。另外,可以通过reset()方法回到Initialized状态。

⭐️ Recording:录制状态,可以在Prepared状态通过调用start()方法进入该状态。另外,它可以通过stop()方法或reset()方法回到Initial状态。

⭐️ Released:释放状态(官方文档给出的词叫做Idle state 空闲状态),可以通过在Initial状态调用release()方法来进入这个状态,这时将会释放所有和MediaRecorder对象绑定的资源。

⭐️ Error:错误状态,当错误发生的时候进入这个状态,它可以通过reset()方法进入Initial状态。

3、 使用MediaRecorder类录制视频基本步骤如下:

3.1.调用new MediaRecorder()创建Media
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值