我正在Web应用程序中使用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
已更改。这是正常行为吗?
不,不是。 webrtc.com上的API描述显示addStream函数的mediastream参数只是一个常量引用。因此ID不应更改。
在调用addTrack
函数时添加到流的新曲目。例如,如果流中有两个轨道(视频轨道和音频轨道),则在调用addTrack
函数后,您将拥有3个轨道,并且任何轨道都被新的轨道替换。因此,您将获得与以前不同的最新曲目属性。