3

Angular と SIPjs を使用して WebRTC の実装を行っています。リモート メディアは正常に動作しますが、MediaStreamTrack オブジェクトが適切に格納されていると思われるのではなく、送信者のトラック プロパティが null を返すため、ローカル メディアを追加する際に問題が発生します。

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
});

これらのテストを次の結果で行いました。トラックはおそらくそこにありますが、アクセスしようとするとnullです...


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

結果、getSenders() メソッドによって返された配列の最初の要素内の 1 つの 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]);

結果、ご覧のとおり、ここから (私にとって) 奇妙なことが始まります。オブジェクトには null トラックがあるようですが、オブジェクトを表示すると、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

3 番目に行ったのは、トラックのプロパティ値にアクセスすることでした。


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

そしてそれはnullを示しています:

null

次に、 getSenders() の結果を反復処理して各送信者のトラックを取得し、投稿の最初のコードに示すように MediaStream オブジェクトに追加しようとすると、エラーがスローされます

4

0 に答える 0