2017-11-28 2 views
2

最新のもののためにwebrtcフレームワークを更新した後、リポジトリの "iOS"フォルダにサンプルがないユーザ原因メソドロジが変更されました。古いコードで WEBRTCの最新のフレームワーク<Anakros/WebRTC>のvideoviewにローカルストリームを表示する方法は? - webrtcフレームワーク(iOS)

...

RTCVideoCapturer *capturer = [RTCVideoCapturer capturerWithDeviceName:cameraID]; 
    RTCMediaConstraints *mediaConstraints = [self defaultMediaStreamConstraints]; 
    RTCVideoSource *videoSource = [_factory videoSourceWithCapturer:capturer constraints:mediaConstraints]; 
    localVideoTrack = [_factory videoTrackWithID:@"ARDAMSv0" source:videoSource]; 

RTCVideoCapturerオブジェクトとRTCVideoSourceオブジェクトが相互にここにリンクされました。

しかし、新しいコードで...

RTCVideoSource *source = [_factory videoSource]; 
    RTCCameraVideoCapturer *capturer = [[RTCCameraVideoCapturer alloc] initWithDelegate:source]; 
    [_delegate appClient:self didCreateLocalCapturer:capturer]; 
    localVideoTrack = [_factory videoTrackWithSource:source 
              trackId:kARDVideoTrackId]; 

相互に接続できません。 したがって、デリゲートメソッドは何をしますか? [_delegate appClient:self didCreateLocalCapturer:capturer]; 私はそれを取得していません。 [ヘルプ必須!]

+0

こんにちは、この問題を解決しましたか?私は同じことにこだわりました – WorieN

+0

はい@WorieN私はこれを解決しました....しばらくのうちにこの質問の投稿回答... – Prasanna

+0

@WorieNは答えを掲載しました!あなたがこれを助けてくれたら、アップしてください。 – Prasanna

答えて

2

ビデオ通話・ビュー・コントローラで、このデリゲートメソッドを実装します....

- (void)appClient:(ARDAppClient *)client didCreateLocalCapturer:(RTCCameraVideoCapturer *)localCapturer{ 

    NSLog(@"%s %@",__PRETTY_FUNCTION__ ,localCapturer); 

    _captureController = [[ARDCaptureController alloc] initWithCapturer:localCapturer 
                   settings:[[ARDSettingsModel alloc] init]]; 
    [_captureController startCapture]; 
} 

を次に....このメソッドは同じを作成するためにそれを呼び出す...

- (RTCVideoTrack *)createLocalVideoTrack { 
     RTCVideoTrack* localVideoTrack = nil; 
     // The iOS simulator doesn't provide any sort of camera capture 
     // trying to open a local stream. 
    #if !TARGET_IPHONE_SIMULATOR 
     if (![_settings currentAudioOnlySettingFromStore]) { 
      RTCVideoSource *source = [_factory videoSource]; 
      RTCCameraVideoCapturer *capturer = [[RTCCameraVideoCapturer alloc] initWithDelegate:source]; 
      [_delegate appClient:self didCreateLocalCapturer:capturer]; 
      localVideoTrack = [_factory videoTrackWithSource:source 
                trackId:kARDVideoTrackId]; 

      [_delegate appClient:self didReceiveLocalVideoTrack:localVideoTrack]; 

     } 
は、

次に呼び出す...あなたのinitメソッドで

_localVideoTrack = [self createLocalVideoTrack]; 

...

- (void)initCall { 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
    if (!_isTurnComplete) { 
     return; 
    } 
    self.state = kARDAppClientStateConnected; 
    _localVideoTrack = [self createLocalVideoTrack]; 
    // Create peer connection. 
    _constraints = [self defaultPeerConnectionConstraints]; 

} 

このコードではこれを達成できますか?

+0

RTCEAGLVideoViewにビデオトラックをレンダリングするのに役立つコードを教えてください。なぜか分からないけど、そこにビデオはありません。 RTCEAGLVideoViewをレンダリングするのに役立つVideoViewに保存することはできますか? – WorieN

+0

ビデオビューをRTCEAGLVideoViewでサブクラス化し、呼び出し元のユーザーIDでそれぞれを識別し、デリゲートを自己として割り当てる必要があります。あなたが直面している問題はまったく分かりません...私はあなたのコメントを理解できると多くの人に話しました。 @WorieN – Prasanna

関連する問題