4

我在一个网络应用程序中使用 MediaStream API,它允许多个用户基于 webrtc 进行 à conf 调用。当我使用 MediaStream.addTracks() 时,我的轨道 (MediaStreamTrack) 的 id 会发生变化。

这是一个具体的例子:

getUserMedia.call(navigator, {audio:true,video:false}, function(stream) {
    console.log(stream.getAudioTracks());                //(1)
    rtc.streams[0].addTrack(stream.getAudioTracks()[0]); //rtc object managed by webrtc.io
    console.log(rtc.streams[0].getAudioTracks());        //(2)
}, function() {
    console.log("Could not connect stream.");
    onFail();
});

(1):此时我的音轨是

enabled: true
id: "0eKd3T3arsIgrnLsIplvfA69feDzxvwEnu8ga0"
kind: "audio"
label: "0eKd3T3arsIgrnLsIplvfA69feDzxvwEnu8ga0"
onended: null
onmute: null
onunmute: null
readyState: "live"

(2):此时我的音轨是

enabled: true
id: "bd3ba276-8804-4c6e-8dd7-f1bd316150e8"
kind: "audio"
label: "0eKd3T3arsIgrnLsIplvfA69feDzxvwEnu8ga0"
onended: null
onmute: null
onunmute: null
readyState: "live"

正如你所看到的id已经改变了。这是正常行为吗?

4

2 回答 2

0

不,不是。webrtc.com上的 API 描述显示addStream函数的 mediastream 参数只是一个常量引用。所以id不应该改变。

于 2013-09-09T11:15:13.243 回答
0

addTrack调用函数时添加到流中的新轨道。例如,如果您在一个流上有两个轨道(一个视频轨道和一个音频轨道),在调用addTrack函数之后,您有 3 个轨道,并且任何轨道都被新的轨道替换。因此,您将获得与以前不同的最新轨道属性。

于 2019-10-10T10:37:11.930 回答