【问题标题】:Unable to render remote video with WebRTC无法使用 WebRTC 渲染远程视频
【发布时间】:2020-06-30 15:11:46
【问题描述】:

我无法使用 WebRTC 渲染远程视频。对于上下文,我使用的是 Janus 的流插件。

到目前为止,我正在关注我一直在阅读的内容。每当在RTCPeerConnectionDelegate 上调用peerConnection(_ peerConnection:, didAdd stream:) 时,我都会创建一个远程渲染器并将其添加到代理提供给我的流的第一个videoTrack 中,如下所示:

#if arch(arm64)
let remoteRenderer = RTCMTLVideoView(frame: self.view.frame)
remoteRenderer.videoContentMode = .scaleAspectFill
#else
let remoteRenderer = RTCEAGLVideoView(frame: self.view.frame)
#endif
            
stream.videoTracks.first?.add(remoteRenderer)
self.view.addSubview(remoteRenderer)

但是视频不会显示,只有黑屏。

我的代表还调用了peerConnection(_ peerConnection:, didChange newState:),newState 为RTCIceConnectionState.connected,这让我认为连接正常。

【问题讨论】:

    标签: ios swift webrtc janus-gateway webrtc-ios


    【解决方案1】:

    在收到“didStartReceivingOnTransceiver”事件时尝试附加渲染器:

    func peerConnection(_ peerConnection: RTCPeerConnection, didStartReceivingOn transceiver: RTCRtpTransceiver) {
        switch transceiver.mediaType {
        case .video:
                DispatchQueue.main.async {[weak self] in
                    self?.remoteVideoTrack = transceiver.receiver.track as? RTCVideoTrack
                    if let renderer = self?.delegate?.viewForRemoteVideoTrack(){
                        self?.remoteVideoTrack?.add(renderer)
                    }
                }
        default:
            break
        }        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      相关资源
      最近更新 更多