2014-11-14 3 views
1

이렇게해야합니다. 내 앱이 AVCapturesession을 사용하여 녹음을 수행하지만 내가 연주 한 배경 음악이 포함 된 라이브 피드를 스트리밍 할 수 있어야합니다.배경 음악 만있는 AVCaptureSession

AVCapturesession으로 배경 음악을 재생할 수 있지만 주변 환경의 소리가 들리는 것이 문제라는 점을 기억하십시오. 여기

내가 카테고리의 거의 모든 조합을 시도 내가

 AudioSessionInitialize(NULL, NULL, NULL, self); 

    // //set the audio category 
    UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord; 
    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(audioCategory), &audioCategory); 

    // mix with others!! this allows using AVCaptureSession and AusioSession simultaniously 
    UInt32 doSetProperty = 1; 
    AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(doSetProperty), &doSetProperty); 

    AudioSessionSetActive(YES); 

사용하고있는 audiosession 카테고리입니다하지만 난 SoloAmbient 및 주위 전혀 소리를 재생하지 않습니다, 출력을 요구받을 수 없습니다입니다.

나는 또한 AVCapturesession의 오디오 입력을 비활성화하려고했지만 도움이되지 않습니다.

+0

이 답변을 확인해보십시오. http://stackoverflow.com/a/28026142/1381708 –

답변

1

마이크를 나타내는 AVCaptureInput 장치를 제거해야합니다. 이 같은 무언가로 지금 오디오 설정을

AVCaptureSession *currentSession = self.currentSession; 
for(AVCaptureInput *input in currentSession.inputs) { 

    for (AVCaptureInputPort *port in input.ports) { 
     if ([[port mediaType] isEqual:AVMediaTypeAudio]) { 
      [currentSession removeInput:input]; 
      break; 
     } 
    } 
} 

: 당신은 AVCaptureSession 인스턴스 반복이 같은 일을하여이 작업을 수행 할 수 있습니다

AVAudioSession *session = [AVAudioSession sharedInstance]; 
[session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker error:nil]; 
NSError *activationError = nil; 
BOOL success = [session setActive: YES error: &activationError]; 

SWIFT 3

let currentSession = self.currentSession 

for input in currentSession.inputs as! [AVCaptureInput] { 
    for port in input.ports as! [AVCaptureInputPort] { 
    if port.mediaType == AVMediaTypeAudio { 
     currentSession.removeInput(input) 
     break 
    } 
    } 
} 

do { 
    let session = AVAudioSession.sharedInstance() 
    try session.setCategory(AVAudioSessionCategoryPlayAndRecord, with: [AVAudioSessionCategoryOptions.mixWithOthers, AVAudioSessionCategoryOptions.defaultToSpeaker]) 
    try session.setActive(true) 
} catch { 

}