要使用立体声源,您可以将其左右声道视为两个独立的单声道声源,然后将立体声流的每一侧馈送到自己的输入总线。
https://developer.apple.com/library/ios/qa/qa1695/_index.html
但是,我无法弄清楚如何将立体声音频单元的每个声道发送到3D混音器。如何做到这一点?
答案 0 :(得分:0)
基本上,你需要做一些像
这样的事情@interface AudioEngine () {
AVAudioEngine *_engine;
AVAudioEnvironmentNode *_environment;
AVAudioPCMBuffer *_ouputBuffer;
NSMutableArray <AVAudioPlayerNode*> *_PlayerArray;
AVAudioPlayerNode *_soundPlayer;
AVAudioPCMBuffer *_soundBuffer;
bool _multichannelOutputEnabled
加载文件并从缓冲区中获取。 要将立体声分成多声道,你需要像
这样的东西outputLayoutTag = kAudioChannelLayoutTag_AudioUnit_2;
_multichannelOutputEnabled = true;
这&#39; _multichannelOutputEnabled = true;&#39;通常设置为false
然后设置算法以对您的频道执行某些操作
AVAudio3DMixingRenderingAlgorithm renderingTHIS = _multichannelOutputEnabled ?
AVAudio3DMixingRenderingAlgorithmSoundField : AVAudio3DMixingRenderingAlgorithmEqualPowerPanning;
newPlayer.renderingAlgorithm = renderingTHIS;
在视图控制器的某个地方,您可能会将此类内容与游戏中的对象绑定
[self.epicAudioEngine.updateListenerOrientation:AVAudioMake3DAngularOrientation([ang.x,ang.y,ang.z])
[self updateEulerAnglesAndListenerFromDeltaX:dX DeltaY:dY]
查看libavformat的ffmpeg源代码,了解如何处理音频的libavutil