MediaStreamTrack.id使用addTracks()时更改

问题描述 投票:3回答:2

我正在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已更改。这是正常行为吗?

javascript html5 webrtc
2个回答
0
投票

不,不是。 webrtc.com上的API描述显示addStream函数的mediastream参数只是一个常量引用。因此ID不应更改。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.