unity3D学习之音频基础原理-audio菜鸟笔记3

  • Post author:
  • Post category:其他



当在做录音、变声、保存等功能时,那些代码看得我一头雾水,所以总觉得要懂一点基本原理和算法才行。



计算机保存音频之采样率




1、某些音频可以用数学数学公式合成。



2、采样频率–>每隔一段时间在波形上取一个点(采样频率越高,还远度越高)。



3、100Hz–>每秒取样100次。



4、声音的频率–>震动幅度的空间坐标(-1.0f-1.0f),100Hz–>1秒震动了100次(有100个波形)–>采样率=2*声音频率(至少2个点才能记录1个波形)–>香农采样定理。



压缩算法




1、(wav格式)5分钟的音乐20多M(音乐文件一般都经过压缩,wav是无损压缩)。



2、MPEG Lager3是MP3的压缩算法。



3、有大神把各种音色打包记录下来(可以利用生成音频文件)。



4、wav文件用ADPCM或PCM压缩算法格式。






关于WAV文件格式






我们从度娘那复制一段






偏移地址 字节数 类型 内容




00H~03H 4 字符 资源交换文件标志(RIFF)




04H~07H 4 长整数 从下个地址开始到文件尾的总字节数




08H~0BH 4 字符 WAV文件标志(WAVE)




0CH~0FH 4 字符 波形格式标志(FMT)




10H~13H 4 整数 过滤字节(一般为00000010H)




14H~15H 2 整数 格式种类(值为1时,表示数据为线性PCM编码)




16H~17H 2 整数 通道数,单声道为1,双声音为2




18H~1BH 4 长整数 采样频率




1CH~1FH 4 长整数 波形数据传输速率(每秒平均字节数)




20H~21H 2 整数 数据的调整数(按字节计算)




22H~23H 2 整数 样本数据位数



AAC




音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率(单位为s)



一帧 1024个 sample。采样率 Samplerate 44100KHz,每秒44100个sample,



所以 根据公式



音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率



(NOTE:该时间可作解码时间的参考,解码时间应偏差确保在该时间的一定范围,异常的话,做一定的异常处理)



如,当前AAC一帧的播放时间是= 1024*1000000/44100= 22.32ms(单位为ms)







当前AAC一帧的播放时间是= 1024/44100 = 0.02232 s(单位为秒)=22.32ms(单位为ms)



反过来,如当想通过音频缓冲多少ms来计算实际应缓冲多少个音频帧时,可下计算:



比如对48K缓冲300ms需要多少个buffer,


buffer = 一秒内能产生多少个音频帧(48000/1024) 乘以 时间比例(300/1000) = (48000*300)/(1024*1000) = 14.0625个。




我这里的知识点不完整,只挑了自己看懂的来记,要看完整的可以打开以下链接:


原文链接:

http://blog.sina.com.cn/s/blog_6b87c7eb010182hs.html



链接2:

http://tieba.baidu.com/p/1868393695