간단한 질문입니다. AVAudioEngine을 사용하여 멀티 채널 오디오 파일 (> 2 채널)을 재생하여 기본 2 채널 출력 (헤드폰/스피커)에서 모든 채널을들을 수 있도록하는 방법 (제시 검사 오류 제거) 다음 코드는 파일의 처음 두 채널을한다하지만 헤드폰을 연결하면 나는 단지 그것을들을 수 있습니다.AVAudioEngine 멀티 채널 오디오 재생
AVAudioFile *file = [[AVAudioFile alloc] initForReading:[[NSBundle mainBundle] URLForResource:@"nums6ch" withExtension:@"wav"] error:nil];
AVAudioEngine *engine = [[AVAudioEngine alloc] init];
AVAudioPlayerNode *player = [[AVAudioPlayerNode alloc] init];
AVAudioMixerNode *mixer = [[AVAudioMixerNode alloc] init];
[engine attachNode:player];
[engine attachNode:mixer];
AVAudioFormat *processingFormat = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatFloat32 sampleRate:file.processingFormat.streamDescription->mSampleRate channels:2 interleaved:false];
[engine connect:player to:mixer format:processingFormat];
[engine connect:mixer to:engine.outputNode format:processingFormat];
[engine startAndReturnError:nil];
[player scheduleFile:file atTime:nil completionHandler:nil];
[player play];
나는 두 플레이어 -> 믹서의 형식과 함께 조합을 많이 시도 mixer-> 출력 연결하지만, 하나는 동일한 하나에 위의 코드 또는 가능성 충돌로 일에 결과 :
ERROR: [0x19c392310] AVAudioNode.mm:495: AUGetFormat: required condition is false: nil != channelLayout && channelLayout.channelCount == asbd.mChannelsPerFrame
*** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'required condition is false: nil != channelLayout && channelLayout.channelCount == asbd.mChannelsPerFrame'
나 (I 틀리지 않는 경우 형식은 지원되지 않음) AUSetFormat OSStatus 코드 -10868. 모든 연결에 file.processingFormat을 사용하면 위의 첫 번째 오류로 인해 응용 프로그램이 충돌합니다. 또한 충돌이 발생합니다 [player play];
AVAudioEngine이 포함시켜야하는 기능을 제공하므로 AUGraph를 사용하여 문제없이 할 수 있기 때문에 원하는 방식으로 재생해야합니다. 그걸로 붙어. 내 코드를 확인하는 데 사용
멀티 채널 오디오 파일은 아마 내 테스트 응용 프로그램에 적극적으로 오디오 세션을 설정 잊고 때문 헤드폰 here
UPDATE에게 좋아, 그래서 듣는 오디오를 찾을 수 있습니다. 하지만 여전히 처음 두 개의 채널 만 듣고 있습니다 ...
언급 한 버그를 자세히 설명해주십시오. 'AVAudioPlayerNode'의'scheduleBuffer : atTime : options : completionHandler'를 사용하여 세 노드 모두에 대해 동일한'AVAudioTIme'을 지정할 수 있습니까? – Mark
이 질문과 답변을 작성할 때 세 노드 모두에 대해 동일한 AVAudioTime을 넣더라도 사운드간에 약간의 지연이 여전히 남아 있습니다. 그들이 그것을 고칠 지 모르겠다 던노. – Kegluneq