【问题标题】:WebRTC Swift RemoteStream not RenderingWebRTC Swift RemoteStream 不渲染
【发布时间】:2020-06-16 10:12:57
【问题描述】:

我已经通过 Outlet 创建了 RCMTLVideoView。

@IBOutlet weak var otherEndVideoHolderView : RTCMTLVideoView!

并从 RTCPeerConnectionDelegate Delegate 收集 RTCMediaStream

    func peerConnection(_ peerConnection: RTCPeerConnection, didAdd stream: RTCMediaStream) {
    debugPrint("peerConnection did add stream")

    if let video = stream.videoTracks.first{
        self.remoteVideoTrack = video
        self.delegate?.webRTCClient(self, didReceiveRemoteRender: video)
    }
}

Offer -> Answer -> 和对等状态已连接。只有本地视频正在渲染。远程视频未呈现。

【问题讨论】:

    标签: ios swift webrtc rendering


    【解决方案1】:

    我最近在 Webrtc 上工作并在 collectionview 单元上添加远程流。你可以使用我的代码。如果您有任何其他问题,请告诉我,我也会提供帮助。

    let stream = VideoCallViewController.arrRemoteStreams[indexPath.row]
    
    
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "RmoteVideoCollectionViewCell", for: indexPath) as! RmoteVideoCollectionViewCell
    
        cell.contentView.subviews.forEach({ $0.removeFromSuperview() })
    
        #if arch(arm64)
        // Using metal (arm64 only)
        let remoteRenderer = RTCMTLVideoView(frame:  CGRect.init(x: 0, y: 0, width: 150, height: 150))
        remoteRenderer.videoContentMode = .scaleAspectFit
    
        #else
        // Using OpenGLES for the rest
        let remoteRenderer = RTCEAGLVideoView(frame:  CGRect.init(x: 0, y: 0, width: 150, height: 150))
        #endif
    
    
    
         //set stream to cell
        stream.videoTracks.first?.add(remoteRenderer)
    
        //adding stream to cellview
        cell.contentView.addSubview(remoteRenderer)
    

    【讨论】:

    • 您好 Vinod Kumar,感谢您的回答。但是我已经完成了您提到的上述步骤。您能否指导我解决导致此问题的任何原因或情况。正如您在给出的屏幕截图中看到的那样。我已共享候选人并处于“已连接”状态。然而,远程视频没有呈现。我不知道我做错了什么。
    • 我认为流中有问题。你能分享你的代码@AlbinMrngStar
    • 我已使用 firebase 分享候选人、SDP 报价和答案。 ViewController(bitbucket.org/AlbinMrngStar/workspace/snippets/aLj5M8)、WebRTCClient(bitbucket.org/AlbinMrngStar/workspace/snippets/znp5BR)、IceServer("stun:stun1.l.google.com:19302")。感谢您的支持。
    • self.delegate?.webRTCClient(self, didReceiveRemoteRender: video) 请确认此委托是否被调用
    • 收到报价时调用此委托。 if let video = stream.videoTracks.first{ self.remoteVideoTrack = video self.delegate?.webRTCClient(self, didReceiveRemoteRender: video) } 我用它在 RemoteView func webRTCClient(_ client: WebRTCClient, didReceiveRemoteRender remoteRenderer 上渲染视频: RTCVideoTrack) { remoteRenderer.add(self.otherEndVideoHolderView) }
    【解决方案2】:

    我认为 iPhone X 和 11s 的 WEBRTC 存在问题。我已经提交了错误报告here。如果错误报告描述了您的问题,请确保启动它,以便 Google 可以处理它。谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多