Javascript 如何修复WebRTC发送方跟踪属性返回null以存储localMedia

Javascript 如何修复WebRTC发送方跟踪属性返回null以存储localMedia,javascript,angular,webrtc,sipjs,Javascript,Angular,Webrtc,Sipjs,我正在用Angular和SIPjs实现WebRTC。远程媒体工作正常,但我在添加本地媒体时遇到问题,因为发送方的track属性返回null,而不是假定正确存储的MediaStreamTrack对象 我使用的是SIPjs 0.13.6,问题至少出现在Chrome版本73.0.3683.86(官方版本)(64位)和Firefox 65.0.2(64位)中。SIP服务器是Docker中的星号 var localStream = new MediaStream(); pc.getSenders().f

我正在用Angular和SIPjs实现WebRTC。远程媒体工作正常,但我在添加本地媒体时遇到问题,因为发送方的track属性返回null,而不是假定正确存储的MediaStreamTrack对象

我使用的是SIPjs 0.13.6,问题至少出现在Chrome版本73.0.3683.86(官方版本)(64位)和Firefox 65.0.2(64位)中。SIP服务器是Docker中的星号

var localStream = new MediaStream();

pc.getSenders().forEach(function(sender) {
   localStream.addTrack(sender.track); //throws error because it says is null
});

我用以下结果做了这些测试,问题是轨道应该在那里,但当我尝试访问时,它是空的


 console.log("peer connection array og sender objects:");
 console.log(pc.getSenders());

结果,它似乎是getSenders()方法返回的数组的第一个元素中的一个mediaStreamTrack:

我不能上传照片,因为我需要更多的声誉,所以我必须这样做:

[RTCRtpSender]
    0: RTCRtpSender
        dtmf: RTCDTMFSender {ontonechange: null, canInsertDTMF: false, toneBuffer: ""}
        track: MediaStreamTrack {kind: "audio", id: "26f1da43-56f3-48d8-882f- 
        03f9b4dad7d5", label: "Default - External Microphone (Conexant ISST 
        Audio)", enabled: true, muted: false, …}
    __proto__: RTCRtpSender
length: 1
__proto__: Array(0)

接下来,我访问该数组的第一个对象:

console.log("first element of the array sender objects");
console.log(pc.getSenders()[0]);

结果,正如你所看到的,这里开始奇怪的事情(对我来说)。该对象似乎有一个空轨迹,但当您显示该对象时,MediaStreamTrack对象似乎就在那里


RTCRtpSender {track: null, dtmf: RTCDTMFSender}
    dtmf: RTCDTMFSender {ontonechange: null, canInsertDTMF: false, 
        toneBuffer: ""}
    track: MediaStreamTrack {kind: "audio", id: "26f1da43-56f3-48d8-882f- 
        03f9b4dad7d5", label: "Default - External Microphone (Conexant ISST 
        Audio)", enabled: true, muted: false, …}
__proto__: RTCRtpSender

我做的第三件事是尝试访问曲目的属性值:


console.log("the track of the sender above is");
console.log(pc.getSenders()[0].track);

它显示空值:

null


然后,当我尝试迭代getSenders()结果以获取每个发送者的轨迹并将其添加到MediaStream对象时,它会抛出一个错误,如文章的第一段代码所示?