在使用 AVAudioConverter 时,如果出现损坏数据的问题,可以尝试以下方法进行解决:
let inputFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: 44100, channels: 2, interleaved: false)
converter?.inputFormat = inputFormat
let outputFormat = AVAudioFormat(commonFormat: .pcmFormatInt16, sampleRate: 44100, channels: 2, interleaved: false)
converter?.outputFormat = outputFormat
let inputBuffer = AVAudioPCMBuffer(pcmFormat: inputFormat, frameCapacity: AVAudioFrameCount(inputData.count))
inputBuffer.frameLength = AVAudioFrameCount(inputData.count)
let outputBuffer = AVAudioPCMBuffer(pcmFormat: outputFormat, frameCapacity: AVAudioFrameCount(outputData.count))
outputBuffer.frameLength = AVAudioFrameCount(outputData.count)
检查输入数据的来源:确保输入数据的来源正确。如果从文件中读取输入数据,可以使用 AVAudioFile 来读取数据。如果从麦克风或其他实时音频源中获取输入数据,则需要设置正确的输入源。
检查输出数据的目的地:确认输出数据的目的地正确。如果要将输出数据写入文件,可以使用 AVAudioFile 来写入数据。如果要将输出数据传递给播放器或其他目的地,则需要设置正确的输出源。
通过以上步骤,可以确保 AVAudioConverter 正确处理输入和输出数据,从而解决损坏数据的问题。
上一篇:AVAudioConverter的channelMap结果导致音调降低。
下一篇:AVAudioConverter在DispatchQueue.concurrentPerform上下文中过于保留。