【问题标题】:WebRTC - iOS Swift - Remove video stream and set uiview to blackWebRTC - iOS Swift - 删除视频流并将 uiview 设置为黑色
【发布时间】:2018-04-26 11:22:07
【问题描述】:

我正在实现一个使用 WebRTC(libjingle_peerconnection 库)检索视频流的应用。在某个时刻,可以删除流 (RTCVideoTrack)。当这种情况发生在 UIView (RTCEAGLVideoView) 中时,仍然显示流的最后一帧。我想将该视图设置为黑色。我该怎么做?

现在我正在使用以下代码删除流,但正如我所说,最后一帧继续显示在视图上。

remoteVideoTrack.setEnabled(false) // RTCVideoTrack object
remoteVideoTrack.remove(videoView) // videoView is the RTCEAGLVideoView UI object
remotePeerConnection.close()

【问题讨论】:

  • 创建一个黑色背景的视图,然后将其添加到uiview中,最初是隐藏的。当您要删除视频时使其可见。简单
  • 另一方面,在删除 videoView 的同时将代码添加到主线程中。
  • 我已经想到了。这是一个不错的选择,但我想知道是否还有其他选项可以删除最后一帧。
  • 最后我用另一个 UIView 解决了,就像@aBilal17 说的那样隐藏了它。
  • 仍然可以通过其他方式解决。

标签: ios swift webrtc libjingle


【解决方案1】:

我遇到了类似的问题。但是,在某些情况下,黑色视图是不可接受的,我需要渲染器视图变得完全透明。

由于我的视频聊天视图控制器显示在容器中,因此我能够通过完全重新加载容器使渲染器最后一帧消失。

这是相关代码:

        // Kill renderer
    vcWebRtc?.willMove(toParent: nil)
    vcWebRtc?.view.removeFromSuperview()
    vcWebRtc?.removeFromParent()
    
    vcWebRtc = UIStoryboard.instance(from: .WebRTC).instantiateInitialViewController() as? WebRtcVC
    if vcWebRtc != nil{
        addChild(vcWebRtc!)
        viewWebRtcContainer.addSubview(vcWebRtc!.view)
        vcWebRtc!.view.frame = viewWebRtcContainer.bounds
        vcWebRtc?.didMove(toParent: self)
        vcWebRtc?.delegate = self}
        
    

【讨论】:

  • 我认为从删除此视图到添加新视图的代码需要一些时间,可能某些视图需要在这段时间内渲染到此视图,然后导致崩溃...
猜你喜欢
  • 1970-01-01
  • 2013-09-25
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多