Bildschirmfreigabe mit webRTC beim Audioanruf in Javascript

Sep 03 2020

Ich werde die Bildschirmfreigabefunktion mit webRTC ausführen. Mein Code funktioniert gut bei Videoanrufen. Im Status eines Audioanrufs funktioniert dies jedoch nicht. Hier ist mein Code.

Dies dient zum Erstellen einer Peer-Verbindung und zum Hinzufügen eines Streams für Audioanrufe

const senders = [];
var mediaConstraints = {audio: true, video: false}
navigator.mediaDevices.getUserMedia(mediaConstraints)
    .then(function (localStream) {
        localLiveStream = localStream;
        document.getElementById("local_video").srcObject = localLiveStream;
        localLiveStream.getTracks().forEach(track => senders.push(myPeerConnection.addTrack(track, localLiveStream)));
            })
    .catch(handleGetUserMediaError);

wenn Bildschirmfreigabefeld

mediaConstraints.video = true;
let displayStream = await navigator.mediaDevices.getDisplayMedia(mediaConstraints)
if (displayStream) {
    document.getElementById("local_video").srcObject = displayStream;
    console.log("senders: ", senders);
    try {
        senders.find(sender => sender.track.kind === 'video').replaceTrack(displayStream.getTracks()[0]);
    } catch (e) {
        console.log("Error: ", e)
    }
}

Im Status der Bildschirmfreigabe ist sender.track.kind "Audio"

senders.find(sender => sender.track.kind === 'video') = null.

Da dies ersetzt, macht replaceTrack einen Fehler. Gibt es eine andere Möglichkeit für die Bildschirmfreigabe?

Antworten

ishanshah Sep 21 2020 at 21:22

Sie müssen eine Videospur hinzufügen, um dies zu erreichen. Es wird eine Neuverhandlung erfordern.

Fügen Sie also die Bildschirmspur zur Verbindung hinzu (nicht ersetzen) und erstellen Sie das Angebot erneut!

connection.addTrack(screenVideoTrack);

Überprüfen Sie dies als Referenz:

https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/onnegotiationneeded