2012-02-15 2 views
2

마이크에서 AudioQueue를 사용하여 오디오 샘플을 수집하는 동안 MPMoviePlayerController를 사용하여 URL에서 비디오를 재생해야하는 앱을 개발 중입니다.AudioQueue로 녹음하는 동안 MPMoviePlayerController로 비디오 재생

문제는 동영상 재생이 시작될 때 (또한 완료 될 때) 녹화 할 수 없다는 것입니다. 간단히 오디오 샘플링이 중지됩니다. 대신, 비디오 재생을 비활성화하면 오디오 녹음이 잘됩니다. kAudioSessionProperty_OverrideCategoryMixWithOthers 속성을 사용하여 AudioSession을 설정하려했지만 성공하지 못했습니다 (오류를 반환 함). 게다가 AudioQueue를 사용할 때 AudioSession에서 속성을 설정하는 것은 쓸데없는 일이라고 생각합니다. MPMoviePlayerController에 대해 useApplicationAudioSession = NO로 설정해도 도움이되지 않습니다. 이로써

플레이어가 만든 핵심 코드 : 당신은 올바른 방법에있어

audioManager = [[AudioController alloc] init]; 
    //setting AudioQueue: audio buffer, sample rate, format ID (PCM), bits per channel 
    audioManager.delegate = self; 
    [audioManager startAudioRecording]; //starts recording with AudioQueue 
    self.playerVC = [[[MPMoviePlayerController alloc] init] autorelease]; 
    layerVC.view.frame = self.viewPlayer.bounds; 
    [self.viewPlayer addSubview:playerVC.view]; 
    playerVC.useApplicationAudioSession = YES; //if NO nothing changes 
    [playerVC setContentURL:[NSURL URLWithString:@"http://www......."]]; 
    [playerVC prepareToPlay]; 
    [playerVC play]; 

답변

2

. 먼저 kAudioSessionProperty_OverrideCategoryMixWithOther를 true로 설정하십시오. 이렇게하면 앱의 사운드가 다른 앱의 사운드와 믹스됩니다.

UInt32 allowMixing = true; 
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixing), &allowMixing); 

그 후, 당신은 앱의 AudioSession를 사용하지 MPMoviePlayerController를 설정할 필요가 없습니다 :

[yourMPMoviePlayerControllerInstance setUseApplicationAudioSession:NO]; 
+0

[yourMPMoviePlayerControllerInstance setUseApplicationAudioSession : NO]; 이 줄을 사용하면 레코더가 재생되지 않습니다. – Jitendra

관련 문제