ite*_*ter 6 iphone audio core-audio avaudioplayer
我想以编程方式生成声波并与AVAudioPlayer一起播放.我有代码将我的波形编码为线性PCM,44100Hz,单声道,每个样本8位.
我不清楚我需要在这个缓冲区周围包裹什么类型的信封,以便AVAudioPlayer将其识别为PCM.
PCM只是模拟音频信号的数字表示.不幸的是,它没有封装任何有关音频信道,比特深度或采样率的元数据 - 所有这些都是正确读取所述PCM数据所必需的.我假设AVAudioPlayer会接受包含在NSData对象中的PCM数据,只要您能够在AVAudioPlayer对象中手动设置这些变量即可.不幸的是,这些变量是只读的,所以即使文档说AVAudioPlayer可以处理Core Audio可以处理的任何内容,它也无法处理原始LPCM数据.
正如zoul所说,我认为最简单的方法就是抛出一个WAV标题,因为标题会告诉AVPlayer上述必要的变量.它是44个字节,很容易被模拟,并且很好地定义 - 我使用上面给出的相同定义来实现wav头编码和解码.此外,它只是在您未经修改的 LPCM数据之前.