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