【问题标题】:How to detect Android WebRTC track ending如何检测 Android WebRTC 曲目结束
【发布时间】:2021-08-05 09:11:59
【问题描述】:

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

当轨道出于任何原因不再向流提供数据时会发生此事件,包括到达媒体输入的末尾、用户撤销所需的权限、源设备被移除或远程对等端结束连接.

有没有办法在 Android 版本的 WebRTC 中做同样的事情?

【问题讨论】:

    标签: android webrtc


    【解决方案1】:

    最近,我遇到了这个问题。 我尝试检测轨道的状态,我假设,如果它已结束,则它已被删除。 轨道.State() 但无论远程轨道是否被移除,状态始终为 Live。

    然后我检查 RtpTransceiver 的 getCurrentDirection。有用 RtpTransceiver.RtpTransceiverDirection 方向 = 收发器.getCurrentDirection() 当删除轨道被删除时,方向可能设置为 INACTIVE 或 SEND_ONLY。 这意味着远程侧轨已被移除,不再发送数据。

    在重新协商 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 stuff
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-06
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      相关资源
      最近更新 更多