5

AVAudioEngine を使用してオーディオを録音し、サウンド ファイルとして保存しています。

ユーザーは音声ファイルのインポートを選択でき、必要に応じてこのファイルの最後に録音を続けることができます。インポートしたファイルからオーディオ データを取得して AVAudioPCMBuffer に読み込み、それを録音先のファイルに書き込みます。インポートされたファイルがステレオの場合、これはうまく機能します (書き込んでいるファイルもステレオであるため)。しかし、インポートされたファイルがモノラルの場合、AVAudioPCMBuffer をファイルに書き込もうとすると、単にチャンネル数が一致しないためにコードがクラッシュします。

processingFormat をステレオに設定して、モノ AVAudioPCMBuffer を av AVAudioFile に読み込むことは可能ですか? バッファをステレオに変換できますか?

インポートしたファイルからオーディオ バッファを取得する方法の例を次に示します。

let existingAudioFile = try AVAudioFile(forReading: existingFileUrl)
var audioFrameCount = AVAudioFrameCount(existingAudioFile.length)
let audioBuffer = AVAudioPCMBuffer(PCMFormat: existingAudioFile.processingFormat, frameCapacity: audioFrameCount) //Mono
try existingAudioFile.readIntoBuffer(audioBuffer)

そして、これは私が AVAudioEngine を使用して書き込んでいる AVAudioFile を作成する場所です:

self.audioFile = try AVAudioFile(forWriting: self.audioRecordURL, settings: self.engine.mainMixerNode.outputFormatForBus(0).settings) //This is in stereo

最後に、オーディオ バッファをファイルに書き込む方法は次のとおりです。

try self.audioFile.writeFromBuffer(audioBuffer)

オーディオをステレオに変換すると、すべてが機能します。

4

0 に答える 0