Невозможно отобразить удаленное видео с помощью WebRTC

Мне не удается отрисовать удаленное видео с помощью WebRTC. Для контекста я использую плагин потоковой передачи Janus.

Я слежу за тем, что читал до сих пор. Всякий раз, когдаpeerConnection(_ peerConnection:, didAdd stream:) Называется на RTCPeerConnectionDelegate, Я создаю удаленное средство визуализации и добавляю его к первому 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:) с новым состоянием RTCIceConnectionState.connected что заставляет меня думать, что соединение в порядке.

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
    }        
}
Другие вопросы по тегам