音频基本知识三

前2节我们基本上把音频相关的基本知识说了一些,可能有些朋友还是不清楚,没关系,后面我们慢慢就会明白了,上面一节我们最后说到如何判断音频是CBR和VBR的,用到了可能,其实是当时我自己也不太确定,哈哈哈,比较坑把!现在在这里明确的说:如果一个package中mBytesPerPacket==0 或者

mFramesPerPacket==0时,就可以定义为为VBR(动态比特率)。因为只有动态比特率的package里面的数据不是固定的,因此处理的时候是以0来处理的。只有这种情况下才会AudioStreamPacketDescription(描述package的情况)存在,如果一个CBR,每个package都是固定的,就不需要AudioStreamPacketDescription来描述package的存在了,看到这里的朋友又会说怎么又引入了一个新的东西,没办法,这就是音视频的基本关系。

另外前面我们说了音频的文件格式和编码格式的区别:但是对于WAVE、mp3、caf等的到底对于关系是怎么样的没有说清楚:

data_formats:音频内容格式编码

'WAVE' = WAVE (.wav)

data_formats: UI8 LEI16 LEI24 LEI32 LEF32 LEF64 'ulaw'

'alaw'

'MPG3' = MPEG Layer 3 (.mp3, .mpeg, .mpa)

data_formats: '.mp3'

'caff' = Apple CAF (.caf)

data_formats:'.mp1' '.mp2' '.mp3' 'QDM2' 'QDMC' 'Qclp' 'Qclq' 'aac ' 'aach' 'aacl' 'alac' 'alaw' 'dvi8' 'ilbc' 'ima4' I8 BEI16 BEI24 BEI32 BEF32 BEF64 LEI16 LEI24 LEI32 LEF32 LEF64 'ms\x00\x02' 'ms\x00\x11' 'ms\x001' 'samr' 'ulaw'

通过上面可以看出mp3是一种特殊的,caff可以支持core audio支持的所有的格式,是iphone平台首先使用

上面的每一种我们也应该大概知道是什么意思:比如:

UI8 表示的是无符号8位采样

LEI32 小端对齐ints 16位采样

LEF32 小端对齐float 32位采样

ulaw和alaw是非常古老的μ律和α律编码(这个大家了解了解就行)

其中小端指的是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址。与之对应的是大端对齐。这个在聊天的数据编解码中也是。一般情况下iphone等客户端采用的都是小端对齐,而在mac上采用的是大端对齐,这个了解下就可以了,对这个感兴趣的同学可以自己查询相关的信息。

现在明白了我们经常说的mp3,音频文件格式和音频编码格式分别是什么了。

ps:如果还有什么问题可以私信后台我,因为微信公众号对于未达到一定原创活跃度的暂时不开通评论功能,但是可以直接在微信公众号发信息给我或者直接留言评论,我会看到,可能会有延时,毕竟工作还是比较忙的。如果对你有帮助的话,请持续关注。帮忙推广下!对于什么时候开始编写代码,应该下篇就可以开始了吧!我一直想在开始编写代码之前给大家说清楚所有的,但是发现好像怎么也都说不完,还是在代码上再说吧!另外,本人不善于言谈,文笔也不咋的,各位还是多多担待。后面附上我的微信公众号二维码图:

音频基本知识三_第1张图片

你可能感兴趣的:(音频基本知识三)