代码之家  ›  专栏  ›  技术社区  ›  Ostap Maliuvanchuk

如何检测Android WebRTC跟踪结束

  •  0
  • Ostap Maliuvanchuk  · 技术社区  · 6 年前

    MediaStreamTrack 来自浏览器版本的WebRTC具有 onended 处理程序,允许在跟踪结束时接收通知,即( from MDN docs

    当磁道因任何原因不再向流提供数据时,会发生此事件,包括到达的媒体输入结束、用户取消所需权限、源设备被删除或远程对等端结束连接。

    在Android版本的WebRTC中有没有一种方法可以做到这一点?

    0 回复  |  直到 6 年前
        1
  •  0
  •   Jian Zhong    4 年前

    最近,我遇到了这个问题。 我试图检测一个轨迹的状态,我假设,如果它结束了,它就会被移除。 轨道。状态()

    然后检查RTP收发器的getCurrentDirection。它起作用了 rtptTransceiver.rtptTransceiver方向方向=收发器getCurrentDirection() 这意味着远程侧轨被删除,不再发送数据。

    在重新协商webrtc之后,请始终检查此项,然后处理您的员工(在删除跟踪之后)。

    List<RtpTransceiver> list = _peerConnection.getTransceivers();
    Iterator var1 = list.iterator();
    while(var1.hasNext()) {
        RtpTransceiver transceiver = (RtpTransceiver)var1.next();
    
        RtpTransceiver.RtpTransceiverDirection direction = transceiver.getCurrentDirection();
        if(direction == RtpTransceiver.RtpTransceiverDirection.INACTIVE) {
            // remote track removed, do your staff
        }
    }