Как исправить свойство трека отправителя WebRTC, возвращающее ноль для хранения localMedia - PullRequest
0 голосов
/ 27 марта 2019

Я делаю реализацию WebRTC с Angular и SIPjs.Удаленный носитель работает нормально, но у меня есть проблемы с добавлением локального носителя, потому что свойство track отправителя возвращает ноль вместо предположительно правильного хранения объекта MediaStreamTrack.

Я использую SIPjs 0.13.6, проблема возникаетпо крайней мере, в Chrome версии 73.0.3683.86 (официальная сборка) (64-разрядная версия) и Firefox 65.0.2 (64-разрядная версия).SIP-сервер - это Asterisk внутри 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());

Результат, похоже, один mediaStreamTrack внутри первого элемента массива, возвращенного методом getSenders ():

Я не могу опубликовать изображения, потому что мне нужно больше репутации, чтобы сделать это, поэтому яДолжны сделать это следующим образом:

[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объект, как показано в первом фрагменте кода сообщения

...