MediaStreamTrack
具有onended
处理程序,该处理程序允许在曲目结束时接收通知,即(from MDN docs):
当轨道出于任何原因不再向流提供数据时,包括到达媒体输入的末尾,用户撤消所需的权限,删除源设备或远程对等端终止连接时,都会发生此事件
在Android版本的WebRTC中有没有办法做到这一点?
答案 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
}
}