2017-12-26 7 views
0

私は、ichswiftプロジェクトでsinchビデオコーリングを実装しました。私はシンチ実装文書https://www.sinch.com/docs/video/ios/#callingに示されているすべてのプロセスに従っています。そして、私は首尾よく実装することができますが、フロントスピーカーからの私のビデオサウンドを問題にしています。どうすればこの問題を解決できますか?私のコードの下には:Sinchビデオコーリングサウンドがフロントスピーカーから来ています

var client: SINClient? 
var sinCall : SINCall? 

設定sinch

//MARK: Configuring Sinch Delegate 
func configuringSinch(){ 
    //Configuring Client Key 
    client = Sinch.client(withApplicationKey: Constants.SINCH_APP_KEY, applicationSecret: Constants.SINCH_PRIVATE_KEY, environmentHost: Constants.SANDBOX_ENVIRONMENT, userId: Utility().getUserId()) 

    client?.call().delegate = self 
    client?.setSupportCalling(true) 
    client?.enableManagedPushNotifications() 
    client?.start() 
    client?.startListeningOnActiveConnection() 

    let vcCont = client?.videoController() 
    self.vwLocalView.addSubview((vcCont?.localView())!) 

    self.sinCall?.delegate = self 

} 

//MARK: Sinch Video Call Delegate 
func clientDidStart(_ client: SINClient!) { 
    print("Client Did Start") 
} 

func clientDidFail(_ client: SINClient!, error: Error!) { 
    print("Client failed : \(error)") 
    player?.stop() 
} 
func clientDidStop(_ client: SINClient!) { 
    print("Client Did Stop") 
    player?.stop() 
} 

    //MARK: Video Call Did Recieve 
func client(_ client: SINCallClient!, didReceiveIncomingCall call: SINCall!) { 
    print("Did Recieve Incoming Call") 

    playRingtoneSound() // Playing Audio 
    call.delegate = self; 
    self.sinCall = call 
} 

//MARK: Call Did Add Video Track 
func callDidAddVideoTrack(_ call: SINCall!) { 
    let videoCont = client?.videoController() 
    vwRemoteView.addSubview((videoCont?.remoteView())!) 
} 

func callDidEnd(_ call: SINCall!) { 
    sinCall?.hangup() 

} 

答えて

1

これは、オーディオ出力を管理するためにSINAudioControllerを管理する方法です。

func audioController() -> SINAudioController { 
     return (client?.audioController())! 
    } 

//MARK: Video Call Did Recieve 
func client(_ client: SINCallClient!, didReceiveIncomingCall call: SINCall!) { 
    audioController().enableSpeaker() 

    playRingtoneSound() // Playing Audio 
    call.delegate = self; 
    self.sinCall = call 
} 

// In SINCallDelegate 
func callDidEstablish(_ call: SINCall!) { 

    //to disableSpeaker 
    audioController().disableSpeaker() 
} 

これは私のための仕事です

func callDidEstablish(_ call: SINCall!) { 

    let audio = APPDELEGATE.client?.audioController() 
    audio?.disableSpeaker() 

    // self.startCallDurationTimerWithSelector() 
    appDelegate.client?.audioController().stopPlayingSoundFile() 

} 

この機能を使用して手動で

// MARK: AudioOutput Session 

// to enable front speaker manually 
func setSessionPlayerOn() 
{ 
    do { 
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord) 
    } catch _ { 
    } 
    do { 
     try AVAudioSession.sharedInstance().setActive(true) 
    } catch _ { 
    } 
    do { 
     try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.none) 
    } catch _ { 
    } 
} 

// to enable speaker manually 
func setSessionPlayerSpeaker() 
{ 
    do { 
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord) 
    } catch _ { 
    } 
    do { 
     try AVAudioSession.sharedInstance().setActive(true) 
    } catch _ { 
    } 
    do { 
     try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker) 
    } catch _ { 
    } 
} 

// to turnoff AudioOutput Session manually 
func setSessionPlayerOff() 
{ 
    do { 
     try AVAudioSession.sharedInstance().setActive(false) 
    } catch _ { 
    } 
} 
+0

着信音ではなく、私たちがビデオ通話をしているときに撮影しています。 –

+0

okですが、フロントスピーカーからビデオを録音すると、スピーカーから出力されます。コントローラのaudioController()。enableSpeaker()のどこにでも使用できます。それが助けになるかどうか教えてください –

+0

audioController()。enableSpeaker –

0

AudioOutputセッションを管理するために、これを試してみてください。

関連する問題