Les clients utilisent WebRTC pour communiquer avec les serveurs Meet. Les clients de référence fournis (C++,
TypeScript) illustrent les bonnes pratiques recommandées et
nous vous encourageons à les utiliser comme base.
Toutefois, vous pouvez également créer des clients WebRTC entièrement personnalisés qui respectent
les exigences
techniques de l'API Meet Media.
Cette page présente les concepts clés de WebRTC nécessaires pour une session réussie avec l'API Meet Media.
Signalisation offre/réponse
WebRTC est un framework peer-to-peer (P2P) dans lequel les pairs communiquent en s'envoyant des signaux. Pour démarrer une session, le pair initiateur envoie une offre
SDP à un pair distant. Cette offre inclut les informations importantes suivantes :
Descriptions multimédias pour l'audio et la vidéo
Les descriptions multimédias indiquent ce qui est communiqué lors des sessions P2P. Il existe trois types de descriptions : audio, vidéo et données.
Pour indiquer n flux audio, l'offrant inclut n descriptions multimédias audio dans l'offre. Il en va de même pour la vidéo. Toutefois, il n'y aura qu'une seule description multimédia de données au maximum.
Sens de circulation
Chaque description audio ou vidéo décrit des flux Secure Real-time Transport
Protocol (SRTP) individuels, régis par RFC
3711. Ils sont bidirectionnels, ce qui permet à deux pairs d'envoyer et de recevoir des contenus multimédias via la même connexion.
Pour cette raison, chaque description multimédia (dans l'offre et la réponse) contient l'un des trois attributs décrivant comment le flux doit être utilisé :
sendonly: n'envoie des contenus multimédias que depuis le pair offrant. Le pair distant n'envoie pas de contenus multimédias sur ce flux.
recvonly: ne reçoit des contenus multimédias que depuis le pair distant. Le pair offrant n'envoie pas de contenus multimédias sur ce flux.
sendrecv: les deux pairs peuvent envoyer et recevoir des contenus multimédias sur ce flux.
Codecs
Chaque description multimédia spécifie également les codecs compatibles avec un pair. Dans le cas de
l'API Meet Media, les offres des clients sont rejetées, sauf si elles sont compatibles
(au moins) avec les codecs spécifiés dans les exigences
techniques.
Handshake DTLS
Les flux SRTP sont sécurisés par un handshake initial
Datagram Transport Layer Security ("DTLS", RFC
9147) entre les pairs.
DTLS est traditionnellement un protocole client-serveur. Au cours du processus de signalisation, un pair accepte d'agir en tant que serveur, tandis que l'autre agit en tant que pair.
Étant donné que chaque flux SRTP peut avoir sa propre connexion DTLS dédiée, chaque description multimédia spécifie l'un des trois attributs pour indiquer le rôle du pair dans le handshake DTLS :
a=setup:actpass: le pair offrant s'en remet au choix du pair distant.
a=setup:active: ce pair agit en tant que client.
a=setup:passive: ce pair agit en tant que serveur.
Descriptions multimédias d'application
Les canaux de données (RFC 8831) sont
une abstraction du Stream Control Transmission Protocol ("SCTP", RFC
9260).
Pour ouvrir des canaux de données lors de la phase de signalisation initiale, l'offre doit contenir une description multimédia d'application. Contrairement aux descriptions audio et vidéo, les descriptions d'application ne spécifient pas de direction ni de codecs.
Candidats ICE
Les candidats Interactive Connectivity Establishment ("ICE", RFC
8445) d'un pair sont une liste de
routes qu'un pair distant peut utiliser pour établir une connexion.
Le produit cartésien des listes des deux pairs, appelé les paires de candidats,
représente les routes potentielles entre deux pairs. Ces paires sont testées pour déterminer la route optimale.
Voici une offre avec une description multimédia audio :
Figure 1 : Exemple d'offre avec une description multimédia audio
Le pair distant répond avec une réponse
SDP contenant le même nombre
de lignes de description multimédia. Chaque ligne indique les contenus multimédias, le cas échéant, que le pair distant renvoie au client offrant via les flux SRTP. Le pair distant peut également rejeter des flux spécifiques de l'offrant en définissant l'entrée de description multimédia sur recvonly.
Pour l'API Meet Media, les clients envoient toujours l'offre SDP pour lancer une connexion. Meet n'est jamais l'initiateur.
Ce comportement est géré en interne par les clients de référence
(C++, TypeScript),
mais les développeurs de clients personnalisés peuvent utiliser PeerConnectionInterface de WebRTC pour
générer une offre.
Pour se connecter à Meet, l'offre doit respecter des exigences spécifiques
requirements :
Le client doit toujours agir en tant que client dans le handshake DTLS. Par conséquent, chaque description multimédia de l'offre doit spécifier a=setup:actpass ou a=setup:active.
Chaque ligne de description multimédia doit être compatible avec tous les codecs
requis pour ce type de contenu
multimédia :
Audio : Opus
Vidéo : VP8, VP9, AV1
Pour recevoir de l'audio, l'offre doit inclure exactement trois descriptions multimédias audio en réception seule. Pour ce faire, définissez des émetteurs-récepteurs sur l'objet de connexion pair.
Pour recevoir de la vidéo, l'offre doit inclure une à trois descriptions multimédias vidéo en réception seule. Pour ce faire, définissez des émetteurs-récepteurs sur l'objet de connexion pair.
L'offre doit toujours inclure des canaux de données. Au minimum, les canaux session-control et media-stats doivent toujours être ouverts. Tous les canaux de données doivent être ordered.
Voici un exemple complet d'offre SDP valide et de réponse SDP correspondante. Cette offre négocie une session d'API Meet Media avec de l'audio et un seul flux vidéo.
Notez qu'il existe trois descriptions multimédias audio, une description multimédia vidéo et la description multimédia d'application requise.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2026/05/13 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2026/05/13 (UTC)."],[],[]]