android的混音是通过AudioMixer来实现的,最近遇到了一个混音的问题,该是好好看看音频的基本知识了。
音频的基本知识
很早之前就知道音频存储是通过采样来实现的,就是所谓的A/D(Analog-to-Digital Converter与D/A(Digital Analog Converter)
音轨有很多属性如
- 采样率(sampleRate)
- 编码格式(format)
- 通道(channelCount)
- 总帧数(frameCount) ?
- 音量(volume) ?
- 播放速率(playbackRate) ?
前三个比较重要,具体去了解一下
采样率
看到知乎上有一个回答,感觉挺形象的什么是音频的采样率?采样率和音质有没有关系?
一般的采样率固定在44100HZ(- -就是一秒记44100次),理由是因为人耳听觉范围在20HZ~20KHZ,这样记录能还原最高22.05KHZ的声音。
还有一个采样率48000HZ也比较常见
编码格式
指每次采样所用的bit数,比如8bit,16bit
从命名来看,android好像用来8bit,16bit跟32bit
- AUDIO_FORMAT_PCM_16_BIT
- AUDIO_FORMAT_PCM_8_BIT
- AUDIO_FORMAT_PCM_32_BIT
- AUDIO_FORMAT_PCM_8_24_BIT
- AUDIO_FORMAT_PCM_FLOAT
- AUDIO_FORMAT_PCM_16_BIT_OFFLOAD ?
- AUDIO_FORMAT_PCM_16_BIT_OFFLOAD ?
通道
就是两个耳机有不同的声音??
一般有单通道(mono) 双通道(stereo)
AudioMixer混音过程
参考博客园上的一篇博客