```

Création d'une application WebRTC de base

Nous allons créer une application simple d'appel vidéo peer-to-peer. Cet exemple utilisera deux onglets de navigateur pour simuler la connexion homologue.

Explication du code

  1. Capturer une vidéo locale : utilisez getUserMedia pour capturer une vidéo à partir de la caméra de l'utilisateur.

  2. Créer une connexion homologue : établissez une connexion homologue entre les homologues locaux et distants.

  3. Offre d'échange et réponse : utilisez SDP (Session Description Protocol) pour échanger les détails de connexion.

  4. Gérer les candidats ICE : échangez les candidats ICE pour établir la connexion.

Créez un fichier main.js avec le contenu suivant :

const localVideo = document.getElementById(\\'localVideo\\');const remoteVideo = document.getElementById(\\'remoteVideo\\');let localStream;let peerConnection;const serverConfig = { iceServers: [{ urls: \\'stun:stun.l.google.com:19302\\' }] };const constraints = { video: true, audio: true };// Get local video streamnavigator.mediaDevices.getUserMedia(constraints)    .then(stream => {        localStream = stream;        localVideo.srcObject = stream;        setupPeerConnection();    })    .catch(error => {        console.error(\\'Error accessing media devices.\\', error);    });function setupPeerConnection() {    peerConnection = new RTCPeerConnection(serverConfig);    // Add local stream to the peer connection    localStream.getTracks().forEach(track => peerConnection.addTrack(track, localStream));    // Handle remote stream    peerConnection.ontrack = event => {        remoteVideo.srcObject = event.streams[0];    };    // Handle ICE candidates    peerConnection.onicecandidate = event => {        if (event.candidate) {            sendSignal({ \\'ice\\': event.candidate });        }    };    // Create an offer and set local description    peerConnection.createOffer()        .then(offer => {            return peerConnection.setLocalDescription(offer);        })        .then(() => {            sendSignal({ \\'offer\\': peerConnection.localDescription });        })        .catch(error => {            console.error(\\'Error creating an offer.\\', error);        });}// Handle signals (for demo purposes, this should be replaced with a signaling server)function sendSignal(signal) {    console.log(\\'Sending signal:\\', signal);    // Here you would send the signal to the other peer (e.g., via WebSocket)}function receiveSignal(signal) {    if (signal.offer) {        peerConnection.setRemoteDescription(new RTCSessionDescription(signal.offer))            .then(() => peerConnection.createAnswer())            .then(answer => peerConnection.setLocalDescription(answer))            .then(() => sendSignal({ \\'answer\\': peerConnection.localDescription }));    } else if (signal.answer) {        peerConnection.setRemoteDescription(new RTCSessionDescription(signal.answer));    } else if (signal.ice) {        peerConnection.addIceCandidate(new RTCIceCandidate(signal.ice));    }}// Simulate receiving a signal from another peer// This would typically be handled by a signaling serversetTimeout(() => {    receiveSignal({        offer: {            type: \\'offer\\',            sdp: \\'...\\' // SDP offer from the other peer        }    });}, 1000);

Comprendre le code

  1. Media Capture : navigator.mediaDevices.getUserMedia capture le flux vidéo local.
  2. Configuration de la connexion homologue : RTCPeerConnection gère la connexion homologue.
  3. Offre et réponse : les offres et réponses SDP sont utilisées pour négocier la connexion.
  4. Candidats ICE : les candidats ICE sont utilisés pour établir une connectivité entre les pairs.
","image":"http://www.luping.net/uploads/20240904/172541269066d7b55299c95.jpg","datePublished":"2024-11-06T08:01:45+08:00","dateModified":"2024-11-06T08:01:45+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Introduction à WebRTC

Introduction à WebRTC

Publié le 2024-11-06
Parcourir:445

Introduction to WebRTC

Guide d'installation et de codage

WebRTC (Web Real-Time Communication) est une technologie open source qui permet une communication en temps réel via de simples API dans les navigateurs Web et les applications mobiles. Il permet le partage d'audio, de vidéo et de données directement entre pairs sans avoir besoin d'un serveur intermédiaire, ce qui le rend parfait pour des applications telles que la vidéoconférence, la diffusion en direct et le partage de fichiers.

Dans ce blog, nous aborderons les sujets suivants :

  1. Qu'est-ce que WebRTC ?
  2. Principales fonctionnalités de WebRTC
  3. Installation de WebRTC
  4. Création d'une application WebRTC de base
  5. Comprendre le code
  6. Conclusion

Qu’est-ce que WebRTC ?

WebRTC est un ensemble de normes et de protocoles qui permettent la communication audio, vidéo et de données en temps réel entre les navigateurs Web. Il comprend plusieurs éléments clés :

  • getUserMedia : capture les flux audio et vidéo de l'appareil de l'utilisateur.
  • RTCPeerConnection : gère la connexion peer-to-peer et gère le streaming audio et vidéo.
  • RTCDataChannel : permet le transfert de données en temps réel entre pairs.

Principales fonctionnalités de WebRTC

  1. Communication en temps réel : communication à faible latence avec un délai minimal.
  2. Compatibilité des navigateurs : pris en charge par la plupart des navigateurs Web modernes (Chrome, Firefox, Safari, Edge).
  3. Aucun plugin requis : fonctionne directement dans le navigateur sans plugins ou logiciels supplémentaires.
  4. Sécurisé : utilise le cryptage pour une communication sécurisée.

Installation de WebRTC

WebRTC est une technologie côté client et ne nécessite pas d'installation de serveur spécifique. Cependant, vous aurez besoin d'un serveur Web pour servir vos fichiers HTML et JavaScript. Pour le développement local, vous pouvez utiliser un simple serveur HTTP.

Conditions préalables

  • Node.js : Pour configurer un serveur local.
  • Un navigateur Web moderne : Chrome, Firefox, Safari ou Edge.

Configuration d'un serveur local

  1. Installer Node.js : téléchargez et installez Node.js depuis nodejs.org.

  2. Créer un répertoire de projet : ouvrez un terminal et créez un nouveau répertoire pour votre projet.

    mkdir webrtc-project
    cd webrtc-project
    
  3. Initialiser un projet Node.js :

    npm init -y
    
  4. Installer le serveur HTTP :

    npm install --save http-server
    
  5. Créez vos fichiers de projet :

    • index.html
    • main.js

Créez un fichier index.html avec le contenu suivant :

```html



    WebRTC Example

WebRTC Example

```

Création d'une application WebRTC de base

Nous allons créer une application simple d'appel vidéo peer-to-peer. Cet exemple utilisera deux onglets de navigateur pour simuler la connexion homologue.

Explication du code

  1. Capturer une vidéo locale : utilisez getUserMedia pour capturer une vidéo à partir de la caméra de l'utilisateur.

  2. Créer une connexion homologue : établissez une connexion homologue entre les homologues locaux et distants.

  3. Offre d'échange et réponse : utilisez SDP (Session Description Protocol) pour échanger les détails de connexion.

  4. Gérer les candidats ICE : échangez les candidats ICE pour établir la connexion.

Créez un fichier main.js avec le contenu suivant :

const localVideo = document.getElementById('localVideo');
const remoteVideo = document.getElementById('remoteVideo');

let localStream;
let peerConnection;
const serverConfig = { iceServers: [{ urls: 'stun:stun.l.google.com:19302' }] };
const constraints = { video: true, audio: true };

// Get local video stream
navigator.mediaDevices.getUserMedia(constraints)
    .then(stream => {
        localStream = stream;
        localVideo.srcObject = stream;
        setupPeerConnection();
    })
    .catch(error => {
        console.error('Error accessing media devices.', error);
    });

function setupPeerConnection() {
    peerConnection = new RTCPeerConnection(serverConfig);

    // Add local stream to the peer connection
    localStream.getTracks().forEach(track => peerConnection.addTrack(track, localStream));

    // Handle remote stream
    peerConnection.ontrack = event => {
        remoteVideo.srcObject = event.streams[0];
    };

    // Handle ICE candidates
    peerConnection.onicecandidate = event => {
        if (event.candidate) {
            sendSignal({ 'ice': event.candidate });
        }
    };

    // Create an offer and set local description
    peerConnection.createOffer()
        .then(offer => {
            return peerConnection.setLocalDescription(offer);
        })
        .then(() => {
            sendSignal({ 'offer': peerConnection.localDescription });
        })
        .catch(error => {
            console.error('Error creating an offer.', error);
        });
}

// Handle signals (for demo purposes, this should be replaced with a signaling server)
function sendSignal(signal) {
    console.log('Sending signal:', signal);
    // Here you would send the signal to the other peer (e.g., via WebSocket)
}

function receiveSignal(signal) {
    if (signal.offer) {
        peerConnection.setRemoteDescription(new RTCSessionDescription(signal.offer))
            .then(() => peerConnection.createAnswer())
            .then(answer => peerConnection.setLocalDescription(answer))
            .then(() => sendSignal({ 'answer': peerConnection.localDescription }));
    } else if (signal.answer) {
        peerConnection.setRemoteDescription(new RTCSessionDescription(signal.answer));
    } else if (signal.ice) {
        peerConnection.addIceCandidate(new RTCIceCandidate(signal.ice));
    }
}

// Simulate receiving a signal from another peer
// This would typically be handled by a signaling server
setTimeout(() => {
    receiveSignal({
        offer: {
            type: 'offer',
            sdp: '...' // SDP offer from the other peer
        }
    });
}, 1000);

Comprendre le code

  1. Media Capture : navigator.mediaDevices.getUserMedia capture le flux vidéo local.
  2. Configuration de la connexion homologue : RTCPeerConnection gère la connexion homologue.
  3. Offre et réponse : les offres et réponses SDP sont utilisées pour négocier la connexion.
  4. Candidats ICE : les candidats ICE sont utilisés pour établir une connectivité entre les pairs.
Déclaration de sortie Cet article est reproduit sur : https://dev.to/abhishekjaiswal_4896/introduction-to-webrtc-1ha8?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3