没有合适的资源?快使用搜索试试~ 我知道了~
背景 因为我的公司需要设计到app与硬件的通信,所以去年深入的研究了一下音频各种格式的转换,曾写过一篇简书,现在搬过来丰富下自己的blog。 首先介绍一下常用的音频文件格式 .amr:体积很小,1秒到约为1kb,所以音质缩水也很厉害,一般用于手机铃声或彩信 .mp3:比较流行的,有损音频,某些部分失真,,音质随码率的提高,越高越好 .wav:为无损音频 .pcm:无损的wav文件中音频数据的一种编码方式 由于App是通过AVAudioRecorder录制音频,默认格式为pcm,文件比较大,所以不适合用于聊天通信的文件格式,所以最优的选择是转换成amr格式 音频格式转换方式
资源推荐
资源详情
资源评论
iOS的音频文件的格式转换示例的音频文件的格式转换示例
背景背景
因为我的公司需要设计到app与硬件的通信,所以去年深入的研究了一下音频各种格式的转换,曾写过一篇简书,现在搬过来
丰富下自己的blog。
首先介绍一下常用的音频文件格式首先介绍一下常用的音频文件格式
.amr:体积很小,1秒到约为1kb,所以音质缩水也很厉害,一般用于手机铃声或彩信
.mp3:比较流行的,有损音频,某些部分失真,,音质随码率的提高,越高越好
.wav:为无损音频
.pcm:无损的wav文件中音频数据的一种编码方式
由于App是通过AVAudioRecorder录制音频,默认格式为pcm,文件比较大,所以不适合用于聊天通信的文件格式,所以最优的
选择是转换成amr格式
音频格式转换方式音频格式转换方式
.pcm–>.wav–>.amr
a)将将pcm转成转成wav
什么是什么是WAV和和PCM??
WAV:wav是一种无损的音频文件格式,WAV符合 PIFF(Resource Interchange File Format)规范。所有的WAV都有一个文件
头,这个文件头音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码
都可以为WAV的音频流进行编码。
PCM:PCM(Pulse Code Modulation—-脉码调制录音)。所谓PCM录音就是将声音等模拟信号变成符号化的脉冲列,再予以记
录。PCM信号是由[1]、[0]等符号构成的数字信号,而未经过任何编码和压缩处理。与模拟信号比,它不易受传送系统的杂波
及失真的影响。动态范围宽,可得到音质相当好的影响效果。
简单来说:wav是一种无损的音频文件格式,pcm是没有压缩的编码方式。
WAV和和PCM的关系的关系
WAV可以使用多种音频编码来压缩其音频流,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用
PCM编码,MP3编码同样也可以运用在WAV中,和AVI一样,只要安装好了相应的Decode,就可以欣赏这些WAV了。在
Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,所有音频软件都能完美支持,由于本身可以达到较高的
音质的要求,因此,WAV也是音乐编辑创作的首选格式,适合保存音乐素材。因此,基于PCM编码的WAV被作为了一种中介
的格式,常常使用在其他编码的相互转换之中,例如MP3转换成WMA。
简单来说:pcm是无损wav文件中音频数据的一种编码方式,但wav还可以用其它方式编码。
这里详细写了pcm和wav的区别,我简单概括成pcm少了一个wav头描述信息。为此我从讯飞语音的sdk中移植出填写wav头的
函数并修改了一下
// 为pcm文件写入wav头
+ (NSData*) writeWavHead:(NSData *)audioData {
long sampleRate = [[self GetAudioRecorderSettingDict][AVSampleRateKey] longValue];
long numOfChannelsKey = [[self GetAudioRecorderSettingDict][AVNumberOfChannelsKey] longValue];
Byte waveHead[44];
waveHead[0] = 'R';
waveHead[1] = 'I';
waveHead[2] = 'F';
waveHead[3] = 'F';
long totalDatalength = [audioData length] + 44;
waveHead[4] = (Byte)(totalDatalength & 0xff);
waveHead[5] = (Byte)((totalDatalength >> 8) & 0xff);
waveHead[6] = (Byte)((totalDatalength >> 16) & 0xff);
waveHead[7] = (Byte)((totalDatalength >> 24) & 0xff);
waveHead[8] = 'W';
waveHead[9] = 'A';
waveHead[10] = 'V';
waveHead[11] = 'E';
waveHead[12] = 'f';
waveHead[13] = 'm';
资源评论
weixin_38599518
- 粉丝: 7
- 资源: 882
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功