Analyses pour développeurs

WebRTC, SFU et codecs vocaux : le guide

Comment WebRTC transporte l'audio, comment Opus compresse la voix et quand la vidéo de groupe exige un SFU. Guide développeur avec l'architecture de Voxal.

  • Par Voxal
  • Mis à jour le
  • 10 min de lecture
Un streamer casque sur les oreilles parle dans un micro, tandis qu'une carte du monde lumineuse montre des participants distants connectés d'un continent à l'autre.

WebRTC transporte l'audio et la vidéo entre navigateurs, un codec comme Opus compresse la voix pour qu'elle passe sur le réseau, et un Selective Forwarding Unit (SFU) est un serveur qui transmet la vidéo de chaque participant à tous les autres dans les appels de plus grande taille. Ces trois briques expliquent l'essentiel de ce qui se passe entre un microphone et un haut-parleur distant.

Ce guide s'adresse aux développeurs et aux curieux qui veulent comprendre la mécanique : signalisation, ICE, STUN et TURN, RTP, Opus, et le compromis entre un maillage peer-to-peer et un SFU. Il se termine sur la façon dont Voxal les combine : la voix reste en peer-to-peer, tandis que la caméra et le partage d'écran peuvent passer par un SFU. Si vous voulez simplement comprendre le concept, commencez par qu'est-ce que le chat vocal peer-to-peer.

1. Qu'est-ce que WebRTC ?

WebRTC est un ensemble de standards et d'API de navigateur dédiés à la communication audio, vidéo et de données en temps réel.

Il permet aux applications d'établir des connexions média entre appareils compatibles sans obliger les développeurs à réimplémenter chaque mécanisme de transport et de sécurité.

WebRTC n'est pas un protocole unique. Plusieurs composants travaillent ensemble.

Signalisation

Avant que deux appareils puissent établir une connexion média, ils doivent échanger des informations sur la session et sur leurs capacités de connexion.

Ce processus s'appelle la signalisation. Chaque application choisit son propre mécanisme de signalisation ; WebRTC n'impose ni serveur ni protocole de signalisation universel.

Voxal utilise la signalisation pour coordonner l'appartenance aux salons et l'établissement des connexions. Son chemin de signalisation est distinct du chemin des médias.

ICE, STUN et TURN

Les appareils se trouvent souvent derrière des routeurs, des pare-feu ou de la traduction d'adresses réseau (NAT). Trouver un chemin de connexion praticable peut donc être plus compliqué que relier deux adresses IP publiques.

WebRTC utilise l'Interactive Connectivity Establishment (ICE) pour collecter et tester les chemins de connexion possibles.

  • STUN aide un appareil à découvrir comment il apparaît depuis le réseau public.
  • TURN fournit un chemin de relais lorsqu'aucune connexion directe adaptée ne peut être établie.

Un relais TURN transmet du trafic média chiffré. Ce n'est pas la même chose qu'un SFU, qui termine les connexions média et transmet sélectivement les flux.

Une connexion directe est souvent préférable, mais un relais peut être indispensable pour se connecter.

RTP et transport média sécurisé

Les médias en temps réel sont généralement transportés avec le Real-time Transport Protocol (RTP), accompagné de RTCP pour le contrôle et les statistiques.

WebRTC utilise le RTP sécurisé (SRTP) pour protéger les médias. La couche de transport aide à acheminer les paquets, tandis que le codec détermine la manière dont l'audio ou la vidéo est représenté.

Ce sont deux responsabilités distinctes : un codec n'établit pas de connexion réseau, et une connexion réseau ne détermine pas la façon dont le son est compressé.

2. Qu'est-ce qu'un codec vocal ?

Un codec encode et décode les médias. Pour la communication vocale, son rôle est de représenter la parole de façon efficace tout en préservant l'intelligibilité et une qualité audio acceptable.

Sans compression, transmettre de l'audio brut peut consommer bien plus de bande passante que ce dont une application vocale a besoin.

Un codec fait un compromis entre plusieurs facteurs :

  • La qualité audio et l'intelligibilité de la parole.
  • Le débit et la consommation de bande passante.
  • La complexité de l'encodage et du décodage.
  • Le délai et la durée des trames.
  • Le comportement lorsque les conditions réseau varient.

Il n'existe pas de meilleur codec universel. La diffusion de musique, les appels téléphoniques, le chat de jeu et les conversations de groupe en temps réel n'ont pas les mêmes priorités.

Schéma d'un microphone envoyant une forme d'onde vocale brute à travers une puce de codec Opus pour produire un flux à faible débit, avec des jauges de qualité, de débit et de latence.
Le codec Opus compresse la voix brute en un flux à faible débit, en équilibrant qualité audio, consommation de bande passante et délai.

Pourquoi Opus est si répandu

Opus est un codec audio interactif conçu pour des usages comme la voix sur IP, la visioconférence et le chat en jeu.

Il prend en charge une large gamme de débits, de fréquences d'échantillonnage et de durées de trame. Cette souplesse le rend adapté à la parole comme à des usages audio plus exigeants.

Opus est aussi un codec audio dont l'implémentation est obligatoire pour les terminaux WebRTC, selon les exigences WebRTC sur les codecs audio.

Cela ne signifie pas que chaque connexion WebRTC utilise toujours Opus. Le choix effectif du codec dépend des capacités négociées par les terminaux participants.

Dans Voxal, le pipeline audio WebRTC du navigateur utilise Opus par défaut dans l'architecture documentée. Le navigateur prend en charge l'essentiel du travail d'encodage, de transport et de décodage.

Pour une application vocale en temps réel, le codec n'est qu'un élément de l'expérience. La qualité du microphone, le traitement audio, la perte de paquets, la latence réseau, la mémoire tampon de gigue et la lecture sur l'appareil comptent tout autant.

3. Qu'est-ce qu'un SFU ?

SFU signifie Selective Forwarding Unit.

Un SFU est un serveur média couramment utilisé pour les appels vidéo de groupe. Au lieu d'obliger chaque participant à envoyer un flux vidéo distinct directement à chacun des autres, chaque participant peut envoyer ses médias au SFU, qui transmet les flux appropriés aux autres participants.

Imaginez un salon de six personnes, chacune envoyant un flux de caméra.

Dans un maillage peer-to-peer complet, chaque participant peut devoir envoyer sa vidéo à cinq autres participants. Dans une topologie où un serveur retransmet, chaque participant peut envoyer un seul flux au SFU, qui se charge de la distribution.

Cela peut réduire sensiblement le nombre de flux vidéo sortants distincts qu'un participant doit entretenir.

Que fait réellement un SFU ?

Un SFU reçoit généralement des flux média encodés et les retransmet de façon sélective. Selon l'implémentation et les fonctionnalités négociées, il peut choisir quels flux ou quelles couches de qualité envoyer à chaque destinataire.

Par exemple, un participant qui regarde une petite vignette n'a pas besoin de la même qualité vidéo que quelqu'un qui affiche un intervenant en plein écran.

Un SFU peut aider à gérer ces besoins différents sans que chaque émetteur ait à transmettre séparément un flux à chaque destinataire.

Cependant, un SFU n'est pas gratuit. Il introduit de l'infrastructure, de la bande passante serveur, des coûts d'exploitation et un composant supplémentaire sur le chemin des médias.

Un SFU a aussi un modèle de confidentialité différent de celui d'un relais TURN. Comme un SFU termine le transport média et retransmet les médias de façon sélective, il peut techniquement accéder aux médias qu'il reçoit. Le chiffrement entre un participant et un SFU ne garantit pas, à lui seul, une confidentialité de bout en bout vis-à-vis de ce SFU.

4. Maillage peer-to-peer ou SFU

Ces deux architectures résolvent des problèmes proches mais différents.

Schéma comparant un maillage complet, où chaque participant se connecte à tous les autres, et la retransmission par SFU, où chaque participant envoie un seul flux à un serveur central.
Dans un maillage complet, chaque participant maintient une connexion avec tous les autres. Avec un SFU, chaque participant envoie un seul flux au serveur, qui le retransmet à tous les autres.

Maillage peer-to-peer

Chaque participant établit des connexions média avec les autres participants.

Avantages :

  • Des chemins média directs sont possibles.
  • Aucun serveur média central n'est nécessaire pour redistribuer les médias.
  • Les petits salons peuvent fonctionner sans service de retransmission des médias.

Inconvénients :

  • Chaque émetteur peut devoir envoyer un flux distinct à chacun des autres participants.
  • Le nombre de connexions média augmente avec la taille du salon.
  • La bande passante montante et la gestion des connexions peuvent devenir des facteurs limitants.

Distribution par SFU

Chaque participant envoie ses médias à un service central de retransmission, qui les distribue aux autres participants.

Avantages :

  • Une distribution plus efficace dans de nombreux scénarios de vidéo de groupe.
  • Moins besoin pour chaque émetteur d'envoyer des copies séparées à chaque destinataire.
  • Plus de contrôle sur les flux vidéo et les couches de qualité que reçoivent les destinataires.

Inconvénients :

  • Infrastructure serveur et coûts de bande passante supplémentaires.
  • Un intermédiaire s'insère dans le chemin des médias.
  • Le modèle de confidentialité et de confiance diffère de celui d'une communication peer-to-peer directe.

L'essentiel est de ne pas supposer qu'une seule topologie doit servir pour tous les types de médias. L'audio et la vidéo ont des profils de trafic et des exigences différents.

5. Pourquoi Voxal garde la voix en peer-to-peer mais peut utiliser un SFU pour la vidéo

Voxal sépare l'audio vocal de la vidéo de la caméra et du partage d'écran.

L'audio vocal reste toujours en peer-to-peer. Il ne passe jamais par le SFU vidéo optionnel.

C'est un choix d'architecture délibéré : la voix est la fonctionnalité de communication centrale, et Voxal n'utilise pas le SFU comme service central de distribution audio.

La vidéo de la caméra et du partage d'écran, c'est différent. Dans les salons plus grands, un maillage peer-to-peer complet peut obliger chaque participant à envoyer plusieurs flux vidéo. Cela devient de plus en plus exigeant à mesure que le nombre de participants augmente.

Voxal peut donc utiliser le SFU Realtime de Cloudflare pour la vidéo et le partage d'écran lorsque la préférence de routage configurée l'autorise et que le salon dépasse les limites pratiques du maillage.

La préférence de routage compte :

  • Allow relay for large rooms : Voxal peut utiliser le SFU lorsque le salon dépasse une topologie vidéo peer-to-peer confortable.
  • Prefer direct : Voxal essaie d'abord le peer-to-peer et demande avant d'autoriser un relais lorsque le maillage devient inadapté.
  • Direct only : la vidéo et le partage d'écran n'utilisent jamais le SFU, même si un grand salon peine à établir toutes les connexions directes.

Ces réglages concernent la vidéo et le partage d'écran, pas l'audio vocal.

Schéma montrant l'audio vocal circulant directement entre deux participants tandis que la vidéo de la caméra est retransmise par un SFU vidéo.
Voxal sépare les deux types de médias : l'audio vocal circule toujours directement entre pairs, tandis que la vidéo de la caméra et du partage d'écran peut être retransmise par un SFU dans les salons plus grands.

Pourquoi ne pas tout faire passer par le même serveur ?

Parce que la meilleure topologie dépend du trafic transporté.

Un flux vocal est généralement bien plus léger qu'un flux de caméra. Faire passer la voix par un service central de retransmission introduirait un compromis différent en matière d'infrastructure et de confidentialité, sans être nécessaire pour l'architecture vocale retenue par Voxal.

La vidéo a un profil de bande passante plus exigeant et peut tirer un grand bénéfice d'une distribution assistée par serveur à mesure que le groupe grandit.

Séparer les deux permet à Voxal de conserver son modèle vocal peer-to-peer tout en offrant une option plus évolutive pour la vidéo de groupe.

6. Ce que cela implique pour la confidentialité

Les termes réseau sont parfois utilisés comme s'ils garantissaient automatiquement un certain niveau de confidentialité. Ce n'est pas le cas.

Un audio peer-to-peer signifie que les médias vocaux ne passent pas par un serveur média central, mais les serveurs de signalisation peuvent tout de même coordonner les connexions et traiter les métadonnées associées.

Un relais TURN transmet des médias chiffrés sans les décoder. Un SFU, en revanche, termine le transport média pour retransmettre les flux de façon sélective et peut techniquement accéder à la vidéo qu'il reçoit.

C'est pourquoi la distinction faite par Voxal est importante :

  • La voix reste en peer-to-peer, en utilisant éventuellement un relais TURN chiffré.
  • La vidéo de la caméra et du partage d'écran peut passer par un SFU dans les salons plus grands, selon la préférence de routage.
  • Le traitement local des arrière-plans virtuels a lieu sur l'appareil de l'émetteur, mais cela ne signifie pas à lui seul que chaque connexion vidéo est directe.

Comprendre le chemin réel des médias est plus utile que de simplement décrire une application comme sans serveur.

7. Mise en perspective

Une application de communication en temps réel combine plusieurs couches indépendantes :

  1. La signalisation coordonne les participants et la mise en place des connexions.
  2. ICE, STUN et TURN aident à établir un chemin réseau viable.
  3. WebRTC et le transport RTP sécurisé acheminent les médias en temps réel.
  4. Un codec comme Opus représente l'audio de façon efficace.
  5. La topologie réseau détermine si les médias circulent directement entre pairs ou via un service de retransmission.

La conception de Voxal applique ces choix séparément à la voix et à la vidéo. Il en résulte une architecture centrée sur la voix, où l'audio reste en peer-to-peer, tandis que la vidéo et le partage d'écran peuvent recourir à une retransmission optionnelle assistée par serveur lorsque les grands salons en ont besoin.

Ces distinctions sont importantes lors de la conception de tout système de communication en temps réel. Le but n'est pas simplement de minimiser les serveurs ou de maximiser les connexions directes ; c'est de faire des compromis délibérés entre latence, bande passante, fiabilité, évolutivité et confidentialité.

Essayer Voxal

Voxal réunit chat vocal peer-to-peer, push-to-talk (appuyer pour parler), mode mains libres, suppression du bruit, et vidéo et partage d'écran en option.

Essayez Voxal dans votre navigateur, ou explorez l'implémentation dans le dépôt open source de Voxal.

À lire aussi : Qu'est-ce que le chat vocal peer-to-peer ? · Qu'est-ce que le push-to-talk ? Un guide pratique · Documentation de Voxal sur le routage vidéo

Pour aller plus loin

Retour au blog