2017-11-28 13 views
2

webrtc 프레임 워크를 최신으로 업데이트 한 후 사용자 스트림에 사용자 스트림 방법을 표시하는 방법이 변경되지 않았습니다. 저장소의 "iOS"폴더에 샘플이 없습니다. 이전 코드에서 WEBRTC 최신 프레임 워크 <Anakros/WebRTC>에서 비디오 뷰에 로컬 스트림을 표시하는 방법은 어떻게 사용합니까? - 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이 답변을 게시했다! 이 정보가 도움이된다면 upvote하십시오. – 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