Saya sedang mengembangkan fungsionalitas panggilan video dengan WebRTC dan menghadapi masalah yang sangat aneh.

Ketika saya melakukan panggilan, semuanya baik-baik saja dan saya mendapatkan streaming video jarak jauh, tetapi ketika saya menerima panggilan, saya mendapatkan layar hitam tanpa video jarak jauh. Bagian yang aneh adalah ketika saya me-refresh halaman saya mendapatkan video jarak jauh!

Di konsol, saya mendapatkan hal berikut:

Pembatasan video salah

Tetapi ketika saya me-refresh halaman saya mendapatkan objek video.

Ini adalah wadah video saya di index.html,

<video id="video-container" autoplay="autoplay" class="video-style"></video>

Main.js:

(function() {
var vertoHandle, vertoCallbacks, currentCall;

document.getElementById("make-call").addEventListener("click", makeCall);
document.getElementById("hang-up-call").addEventListener("click", hangupCall);
document.getElementById("answer-call").addEventListener("click", answerCall);

$.verto.init({}, bootstrap);

function bootstrap(status) {
    vertoHandle = new jQuery.verto({
        // ID of HTML video tag where the video feed is placed.
        tag: "video-container",
        deviceParams: {
          // Asking for camera permissions and devices.
          useCamera: 'any',
          useMic: 'any',
          useSpeak: 'any',
        },

        login: '1008@127.0.0.1',
        passwd: '1234',
        socketUrl: 'wss://127.0.0.1:8082',
        ringFile: '',
        iceServers: true,
    }, vertoCallbacks);
};

vertoCallbacks = {
    onWSLogin : onWSLogin,
    onWSClose : onWSClose,
    onDialogState: onDialogState,
}

function onWSLogin(verto, success) {
    console.log('onWSLogin', success);
}

function onWSClose(verto, success) {
    console.log('onWSClose', success);
}

function onDialogState(d) {
    console.debug('onDialogState', d);

    if(!currentCall) {
        currentCall = d;
    }

    switch (d.state.name) {
        case 'trying':
            //
            break;
        case 'ringing':
            alert('Someone is calling you, answer!');
            break;
        case 'answering':
            //
            break;
        case 'active':
            //
            break;
        case 'hangup':
            //
            break;
        case 'destroy':
            //
            break;
    }
}

function makeCall() {
    vertoHandle.videoParams({
        minWidth: 320,
        minHeight: 240,
        maxWidth: 640,
        maxHeight: 480,
        // The minimum frame rate of the client camera, Verto will fail if it's
        // less than this.
        minFrameRate: 15,
        // The maximum frame rate to send from the camera.
        vertoBestFrameRate: 30,
    });

    currentCall = vertoHandle.newCall({
        useVideo: true,
        mirrorInput: true,

        destination_number : '3520',
        caller_id_name : 'Test Caller',
        caller_id_number: '1008',
        outGoingBandwidth: 'default',
        inComingBandwidth: 'default',

        useStereo: true,
        useMic: true,
        useSpeak: true,

        userVariables: {
            email: 'test@test.com'
        },

        dedEnc: false,
    });
}

function hangupCall() {
    currentCall.hangup();
};

function answerCall() {
    currentCall.answer();
}
})();

Apa yang salah dengan kode ini?

Terima kasih sebelumnya!

2
ishan shah 24 November 2017, 12:18

1 menjawab

Jawaban Terbaik

Jadi setelah beberapa penelitian, saya telah menemukan solusinya.

Saya mendapatkan kesalahan Video constraints false karena disetel pada saat melakukan panggilan, bukan pada saat menerima. Jadi saya mengatur properti secara manual,

useVideo: true

Setelah deviceParams.

Seperti,

tag: "video-container",
deviceParams: {
      // Asking for camera permissions and devices.
      useCamera: 'any',
      useMic: 'any',
      useSpeak: 'any',
},
useVideo: true,
//other properties

Sekarang saya mendapatkan video pada saat melakukan panggilan juga.

3
ishan shah 31 Desember 2020, 06:46