在WebRTC的ontrack事件中未定义stream。

时间:2019-01-19 05:09:01

标签: javascript webrtc

在WebRTC对等通信中,我正在尝试实现可以​​使用收发器的Unified Plan。触发ontrack时,流作为undefined传递。但是,我可以从transceiver.receiver.track访问曲目。

->问题是,对于视频,我需要流而不是单独的音轨(音频,视频)。如何将此单独的曲目转换为单个流?它是预期功能还是我是否需要设置一些命令才能获取流本身。

1 个答案:

答案 0 :(得分:1)

track事件具有一个streams(复数)参数。如果您知道有一个流,请使用:

pc.ontrack = event => video.srcObject = event.streams[0];

这是因为统一计划基于轨道,并且轨道可能与多个流相关联,或者根本没有流。

远程轨道的流关联来自 addTrack addTransceiver 的参数:

pc.addTrack(track, streamMyTrackIsIn, optional2ndStreamMyTrackIsIn);

仅发送曲目。使用与上面传递的流匹配的ID重新创建远程流。

RTCPeerConnection 为您自动管理event.streams中的流,以响应transceiver.direction的更改或错误的 removeTrack 之类的情况。

或创建自己的远程流,以您喜欢的任何方式放置曲目:

pc.ontrack = event => video.srcObject = new MediaStream([event.track]);

仅当您要手动管理流关联时才使用后者,因为后者可以获取complicated