在WebRTC对等通信中,我正在尝试实现可以使用收发器的Unified Plan
。触发ontrack
时,流作为undefined
传递。但是,我可以从transceiver.receiver.track
访问曲目。
->问题是,对于视频,我需要流而不是单独的音轨(音频,视频)。如何将此单独的曲目转换为单个流?它是预期功能还是我是否需要设置一些命令才能获取流本身。
答案 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。