2017-11-10 11 views
0

위젯 'webRTC'을 내 앱에 넣으세요. 비디오를 열기 전에 헤드폰을 연결하고 헤드폰에 소리가 들리지 않으며 스피커에서 소리가 나옵니다. 그러나 비디오를 연 후에 헤드폰을 연결하면 헤드폰에서 소리가 나옵니다. 나는 그물에 오랜 시간을 찾고 있습니다. 그러나 사용하지 마십시오.동영상을 열 때 헤드폰에 소리가 들리지 않습니다.

BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord mode:AVAudioSessionModeVideoChat options:AVAudioSessionCategoryOptionDefaultToSpeaker error:&error]; 

답변

1

당신은 다음과 같습니다 나는 다음과 같은 코드하려고 할 때 그것은 작동하지 않습니다,

[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; 

그리고 : 도움 또는 어떻게 이걸를 달성하는 몇 가지 아이디어를 제공하기 위해 시도하십시오 나의 코드 overrideSpeaker를 기본값으로 사용합니다. 당신은 단지 overrideOutputAudioPort로 재생해야합니다. 내가 직면하는 스피커와 보조 스피커를 사용할 때 몇 가지 핵심 사항이 있습니다.

  1. 당신은 스피커 사용자의 경로 오디오를 할 때

    [[AVAudioSession sharedInstance] overrideOutputAudioPort : AVAudioSessionPortOverrideSpeaker 오류 : 무기 호]

    보조 스피커 또는 외부 주변 장치를 사용하려는 경우.

    [AVAudioSession sharedInstance] overrideOutputAudioPort : AVAudioSessionPortOverrideNone 오류 : nil];

  2. 신호 처리가 작동하는 동안 (제공 및 응답 생성/수락) 기본 스피커 경로는 AVAudioSessionPortOverrideNone에 있어야합니다. 또는 AVAudioSessionPortOverrideNone으로 자동 변경됩니다.
  3. 응용 프로그램 내에서 overrideOutputAudioPort 메서드를 사용하여 오디오 경로를 변경할 수 있습니다.

    희망이 있으면 도움이 될 것입니다.

+0

감사합니다. 진심으로 감사드립니다. 실수로 생각합니다. 다음과 같이 코드를 변경하면 작동합니다.'- (void) enableSpeaker { [[AVAudioSession sharedInstance] overrideOutputAudioPort : AVAudioSessionPortOverrideSpeaker error : nil]; [[AVAudioSession sharedInstance] setCategory : AVAudioSessionCategoryPlayAndRecord 모드 : AVAudioSessionModeVideoChat 옵션 : AVAudioSessionCategoryOptionDefaultToSpeaker 오류 : nil]; _isSpeakerEnabled = YES; }' – weizhao