音视频开发基础入门知识整理

一、PCM是什么?

PCM:脉冲编码调制(Pulse Code Modulation,PCM) 是由模拟信号向数字信号转化的一种常用的编码格式,称为脉冲编码调制,PCM将模拟信号按照一定的间距划分为多段,然后通过二进制去量化每一个间距的强度。

PCM表示的是音频文件中随着时间的流逝的一段音频的振幅。Android在WAV文件中支持PCM的音频数据。

优点:最大程度的接近绝对保真。缺点:体积大。

二、录音的工作过程

录音是模拟信号到数字信号的编码。

AndioRecord 提供给应用层一种能力,让应用层可以用来收集声音相关硬件的数据。工作过程如下:

1、构造 AudioRecord 对象,通过getMinBufferSize方法得到需要的最小录音缓存buffer大小。

2、初始化一个buffer缓存,其大于等于第一步中 AudioRecord 用于写声音数据的buffer大小。

3、开始进入录音状态,让 AudioRecord#startRecording()

4、从 AudioRecord 中读取声音缓存数据到第二步初始化的buffer中,并创建一个文件数据写入流,将buffer中数据导入数据流并写入本地文件。这个过程可以对上层应用回调录音时长。

5、关闭数据流

6、停止录音,AudioRecord#stop()

那如何才能在播放器中播放我录制的内容呢?

PCM文件是原始文件,不能被播放器识别,WAR可以,是因为WAVE HEAD文件头。

AudioRecord 和 MediaRecord

都可以录音,但 MediaRecord 更加上层。

附:AudioRecord 构建参数

audioSource:音频硬件设备源 MediaRecorder.AudioSource.MIC

sampleRateInHz:采样频率,单位:赫兹,建议:44100Hz

channelConfig:单声道还是双声道

audioFormat:音频数据精度,例如:PCM8和PCM16

bufferSizeInBytes:AudioRecord所需的最小缓冲区大小,native方法,对应用层分配缓冲池大小具有重要指导意义。

public AudioRecord(int audioSource, # 音频硬件设备源
int sampleRateInHz,
int channelConfig,
int audioFormat,
int bufferSizeInBytes)

三、声音的播放

播放则是数字信号到模拟信号的解码。

Audi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值