3

AVAudioEnvironmentNodeを使用して、作業中のゲームの 3D 空間化サウンドを生成しようとしています。ドキュメントには、 「AVAudioEnvironmentNode環境ノードへのモノ チャネル接続形式の入力のみが空間化されることに注意することが重要です。入力がステレオの場合、オーディオは空間化されずに通過します。現在、2 つ以上の接続形式の入力チャネルはサポートされていません。」私は確かにこれが事実であることを発見しました。2 つのチャネルを持つオーディオ バッファを にロードしAudioPlayerNode、ノードを に接続するとAVAudioEnvironmentNode、出力サウンドが空間化されません。私の質問は、どうすればモノデータを に送信できますAVAudioEnvironmentNodeか?

プログラムで正弦波データをロードするだけでなく、モノラル.wavファイルを作成しようとしました。どちらの方法でも、単一チャネルのオーディオ バッファを作成し、そのバッファを にロードしようとすると、プログラムが次のエラーでクラッシュすることがわかりました。AudacityAVAudioPCMBufferAudioPlayerNode

2016-02-17 06:36:07.695 テスト シーン[1577:751557] 06:36:07.694 エラー:
[0x1a1691000] AVAudioPlayerNode.mm:423: ScheduleBuffer: 必要な条件が false: _outputFormat.channelCount == buffer.format.channelCount 2016-02-17 06:36:07.698 テスト シーン[1577:751557] *** キャッチされない例外 'com.apple.coreaudio.avfaudio' が原因でアプリを終了します。理由: '必要な条件が false: _outputFormat.channelCount == バッファー.format.channelCount'

出力バスを確認すると、AVAudioPlayerNode実際に 2 チャンネルが必要であることがわかります。これをどのように変更できるか、または変更する必要があるかどうかはわかりません。

AVFoundation私は、一般的に、またはオーディオデータを扱った経験がほとんどないと規定しています。あなたが提供できるどんな助けも大歓迎です。

4

1 に答える 1

4

あなたがこれをすでに解決していることを願っていますが、他の人のために:

AVAudioPlayerNode を AVAudioMixerNode または接続可能なその他のノードに接続するときは、そこでチャンネル数を指定する必要があります。

audioEngine.connect(playerNode, to: audioEngine.mainMixerNode, format: AVAudioFormat.init(standardFormatWithSampleRate: 96000, channels: 1))

ファイルのサンプル レートが 96000 であるかどうかは、Audacity または Finder の「情報を見る」で確認できます。

于 2016-11-02T18:49:12.363 に答える