2016-06-01 2 views
1

Apple 3D-Mixer Audio Unit Führungszustände:iOS Audio Unit, Ausgang jeder Stereo-Kanal von Stereoquelle zu 3D Mixer

Um eine Stereoquelle verwenden, können Sie seinen linken und rechten Kanäle als zwei unabhängige Ein- behandeln Kanalquellen und dann jede Seite des Stereo-Streams an seinen eigenen Eingangsbus.

https://developer.apple.com/library/ios/qa/qa1695/_index.html

Allerdings kann ich nicht herausfinden, wie jeder Kanal meines Stereo-Audio-Unit in den 3D-Mixer zu senden. Wie macht man das?

Antwort

1

bascially, müssen Sie so etwas wie

@interface AudioEngine() { 
    AVAudioEngine      *_engine; 
    AVAudioEnvironmentNode    *_environment; 
    AVAudioPCMBuffer     *_ouputBuffer; 
    NSMutableArray <AVAudioPlayerNode*> *_PlayerArray; 
    AVAudioPlayerNode     *_soundPlayer; 
    AVAudioPCMBuffer     *_soundBuffer; 
    bool        _multichannelOutputEnabled 

tun;

laden Sie eine Datei und greifen Sie sie aus dem Puffer. die Stereo in mehrkanaligen aufteilen, müssen Sie so etwas wie

outputLayoutTag = kAudioChannelLayoutTag_AudioUnit_2; 
_multichannelOutputEnabled = true; 

dieses '_multichannelOutputEnabled = true;'

AVAudio3DMixingRenderingAlgorithm renderingTHIS = _multichannelOutputEnabled ? 
AVAudio3DMixingRenderingAlgorithmSoundField : AVAudio3DMixingRenderingAlgorithmEqualPowerPanning; 
     newPlayer.renderingAlgorithm = renderingTHIS; 

irgendwo in einem View-Controller ist in der Regel um den Algorithmus zu falschem

dann Setup etwas zu tun mit Ihren Kanälen

stellen Sie so etwas wie dies zu einem Objekt gebunden haben könnten in einem Spiel

[self.epicAudioEngine.updateListenerOrientation:AVAudioMake3DAngularOrientation([ang.x,ang.y,ang.z]) 

[self updateEulerAnglesAndListenerFromDeltaX:dX DeltaY:dY] 

Durchsehen ffmpeg Quellcode für libavformat, libavutil, um eine Idee zu bekommen, wie man Audio verarbeitet