我在 swift 中有一个 Data 对象,它是一个 Int16 对象的数组。由于某种原因,使用“.pcmFormatInt16”不适用于我的 AVAudioPCMBuffer 格式,并且没有产生声音或内存错误。最终,通过将 Int16 转换为浮点数并将其放到我的 AVAudioPCMBuffer 的两个通道上,我能够从扬声器播放白噪声/静电。我有一种接近答案的感觉,因为每当我对着麦克风说话时,我都会听到不同频率的静电声。我认为问题在于我没有将转换后的 Int16 转换为缓冲区 floatChannelData。
这是我的代码:
for ch in 0..<2 {
for i in 0..<audio.count {
var val = Float( Int16(audio[i]) ) / Float(Int16.max)
if( val > 1 ){
val = 1;
}
if( val < -1 ){
val = -1;
}
self.buffer.floatChannelData![ch][i+self.bufferCount] = val
self.bufferCount+=1
}
}
self.audioFilePlayer.scheduleBuffer(self.buffer, at:nil, options: .interruptsAtLoop, completionHandler: {
print("played sum")
self.bufferCount=0
})