如何检测Android WebRTC曲目结尾

时间:2019-02-12 08:11:39

标签: android webrtc

WebRTC浏览器版本的

MediaStreamTrack具有onended处理程序,该处理程序允许在曲目结束时接收通知,即(from MDN docs):

  

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

在Android版本的WebRTC中有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

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

然后我检查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 staff
    }
}