5

アプリケーションで会議モジュールをセットアップしようとしています。そこで、2 人のユーザー間のストリームを見つけて作成しました。

問題は、他の人が参加できないことです。

私は彼らのドキュメントを読み込もうとしましたが、それを実装する方法を見つけることができないようです.

これが私のコードです:

    // Compatibility shim
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;

navigator.getUserMedia({audio: true, video: true}, function (stream) {
    // Set your video displays
    $('#my-video').prop('src', URL.createObjectURL(stream));
    window.localStream = stream;
}, function () {
    $('#step1-error').show();
});

peerFactory.on('error', function (err) {
    alert(err.message);
});

peerFactory.on('connection', function (id) {
    alert('new logon' + id);
});



// Receiving a call
peerFactory.on('call', function (call) {
    // Answer the call automatically (instead of prompting user) for demo purposes
    var r = confirm('Ny kald fra ');
    if (r) {
        call.answer(window.localStream);
        $scope.currentCall = true;
        $scope.$apply();
        streamCall(call);
    }
    else
    {
        call.close();
        window.existingCall.close();
    }
});

$scope.makeCall = function (callId) {
    var call = peerFactory.call(callId, window.localStream);
    $scope.currentCall = true;
    streamCall(call);
};

$scope.hangUp = function()
{
    $scope.currentCall = false;
    window.existingCall.close();
};

function streamCall(call) {
    // Hang up on an existing call if present
    if (window.existingCall) {
        window.existingCall.close();
    }

    // Wait for stream on the call, then set peerFactory video display
    call.on('stream', function (stream) {
        $('#their-video').prop('src', URL.createObjectURL(stream));
    });
    // UI stuff
    window.existingCall = call;
    $('#their-id').text(call.peerFactory);
    call.on('error', function () {
        var i = 0;
    });
}

誰かが私に正しい方向へのプッシュを与えることができますか?

4

1 に答える 1

8

あなたの説明とコードによると、同じ通話で 2 人以上のユーザーを接続しようとしていると言えます。

これは WebRTC では不可能です。ピア接続ごとに 2 つの端を接続することしかできません。マルチ会議の動作を再現できる方法は、参加者のペアごとに異なる通話を作成することです。

これを行うには、video各参加者ごとに異なる要素とユーザー リストが必要です。これにより、参加しているルームで呼び出す必要がある各参加者の ID がわかります。

PeerJS は、ルーム/通話の他の ID を知るメカニズムを提供しないため、新しい参加者に知らせるメカニズムを見つける必要があります。

私の github に AngularJS/Socket.io WebRTC 通信ツールの例があります。自由に調べて、WebRTC p2p 接続を使用してマルチ会議通話がどのように再現されるかを確認してください。

編集: ユーザーに何らかの ID があり、プログラムの動作が のようなものmakeCall('Alice')であると仮定すると、キャロルがアリスに電話をかけたときにアリスがボブと通話中であり、キャロルに両方の通話に参加させたいと仮定すると、新しいシグナリングなしでこれを実装できます。層:

  1. アリスはボブと通話中です
  2. キャロルがアリスに電話
  3. アリスが電話に出る
  4. Alice はDataChannelを使用して Bob の ID を Carol に送信します
  5. キャロルがボブに電話
  6. アリス、ボブ、キャロルは、論理的な 3 者間通話で互いに話し合っています。
于 2015-12-11T12:43:15.247 に答える