Cette page explique comment configurer et exécuter un exemple à l'aide de l'implémentation du client de référence C++. Pour en savoir plus sur le client TypeScript, consultez le démarrage rapide du client de référence TypeScript.
Prérequis
Pour exécuter ce guide de démarrage rapide, vous devez remplir les conditions préalables suivantes :
- Vous avez cloné le dépôt GitHub.
- Bazel 7.4.1.
- Un projet Google Cloud avec l'API REST Google Meet activée.
- Un compte Google Workspace.
Activer l'API REST Meet
Avant d'utiliser les API Google, vous devez les activer dans un projet Google Cloud. Vous pouvez activer une ou plusieurs API dans un même projet Google Cloud.Console Google Cloud
Dans la console Google Cloud, activez l'API REST Meet.
Vérifiez que vous activez l'API Meet REST dans le bon projet Cloud, puis cliquez sur Suivant.
Confirmez que vous activez l'API REST Meet, puis cliquez sur Activer.
CLI gcloud
Si nécessaire, définissez le projet Cloud actuel sur celui que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez PROJECT_ID par l'ID du projet du projet Cloud que vous avez créé.
Activez l'API REST Meet :
gcloud services enable meet.googleapis.com
Compiler le client C++
L'implémentation C++ est créée avec Bazel. Toutefois, la bibliothèque WebRTC C++ (libwebrtc) ne dispose pas d'une compilation Bazel fonctionnelle. Vous devez donc compiler cette bibliothèque en suivant les instructions de la documentation WebRTC.
Vous trouverez ci-dessous une version abrégée de ce qui est expliqué dans la documentation WebRTC :
$ cd ~ $ mkdir src $ cd src $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $ export PATH=~/src/depot_tools:$PATH $ mkdir webrtc-checkout $ cd webrtc-checkout $ fetch --nohooks webrtc $ cd src $ # Latest known version to work with our builds $ git checkout b00c469cad3f8c926fcf81ded90b90b6e1e62b9c $ cd .. $ gclient sync $ mv src webrtc $ cd webrtc $ ./build/install-build-deps.sh $ gn gen out/Default --args='is_debug=false use_custom_libcxx=false rtc_include_tests=false rtc_build_examples=false dcheck_always_on=true rtc_use_x11=false use_rtti=true' $ ninja -C out/Default
Remarque : Le commit
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
est la dernière version connue fonctionnant avec nos builds en raison des mises à jour de la chaîne d'outils et d'Abseil. Cela pourra changer à l'avenir. Cet ensemble de commandes fonctionne actuellement, mais vous devez vous référer au lien fourni au cas où l'outil sous-jacent changerait. Si vous développez pour une variante Debian ou Ubuntu Linux autre que x64, la configuration requise peut être différente.Après avoir créé libwebrtc, mettez à jour votre fichier
WORKSPACE
pour qu'il pointe vers votre répertoirewebrtc-checkout
. Mettez à jour le chemin d'accèswebrtc_path
en haut de ce fichier :webrtc_path = "/usr/local/myuser/webrtc-checkout/"
Utilisez Bazel pour compiler le client C++ :
$ bazel build //cpp/...
Remarque : Vous devez utiliser Bazel 7.4.1. Si vous avez installé des versions plus récentes de Bazel, vous pouvez l'exécuter à l'aide de
bazel-7.4.1 build/run/test ...
.
Vous pouvez également exécuter les tests :
$ bazel test //cpp/...
Générer des jetons OAuth
Pour se connecter à l'API Meet Media, votre application doit utiliser OAuth pour générer des jetons d'accès. Pour en savoir plus sur l'accès aux API Google avec OAuth, consultez Utiliser OAuth 2.0 pour accéder aux API Google.
Vous pouvez utiliser OAuth 2.0 Playground pour générer des jetons. Lorsque vous utilisez le terrain de jeu, veillez à :
- Utilisez l'ID client et le code secret de votre projet Cloud.
- Demandez les scopes appropriés.
- Connectez-vous à un compte Google et accordez l'accès.
Une fois l'opération terminée, cliquez sur le bouton Exchange authorization code for tokens
et copiez le jeton d'accès généré.
Démarrer une réunion
Démarrez une réunion en utilisant le même compte utilisateur que celui utilisé pour générer le jeton OAuth. Copiez le code de la réunion. Vous êtes maintenant prêt à exécuter les exemples.
Applications exemples
Le dépôt GitHub propose des exemples pour recevoir des métadonnées sur les contenus multimédias et les participants à une réunion.
Ces exemples collectent des données pendant une durée spécifiée (trois secondes par défaut) et les écrivent dans des fichiers.
Les fichiers audio sont au format PCM16. Les fichiers vidéo sont au format YUV420p. Ces fichiers peuvent être lus à l'aide d'une bibliothèque telle que FFmpeg.
Étant donné que la résolution vidéo peut changer au cours d'une réunion, les exemples incluent la résolution dans les noms de fichiers vidéo.
Les fichiers de métadonnées des participants seront des fichiers texte lisibles par l'homme.
Exemple de contenu multimédia pour un seul utilisateur
L'exemple de média pour un seul utilisateur est une application de base qui se concentre sur la collecte d'audio et de vidéo. L'échantillon ne permet pas de déterminer quel participant a créé les données audio et vidéo. Par conséquent, l'utilisation de cet échantillon dans une réunion avec plusieurs participants peut entraîner une sortie corrompue.
Pour exécuter l'exemple de média à utilisateur unique, exécutez la commande suivante :
Linux
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
Par défaut, un seul fichier audio est enregistré dans /tmp/test_output_audio.pcm
.
Étant donné que la résolution des flux vidéo peut changer au cours d'une réunion, plusieurs fichiers vidéo peuvent être créés. Les noms de fichiers vidéo incluent un compteur incrémentiel et la résolution du fichier. Par exemple, si la résolution du flux vidéo est passée de 320 x 180 à 240 x 135, puis de nouveau à 320 x 180, les fichiers vidéo suivants seraient créés :
/tmp/test_output_video_0_320x180.pcm
/tmp/test_output_video_1_240x135.pcm
/tmp/test_output_video_2_320x180.pcm
(Facultatif) Utiliser FFmpeg pour lire les fichiers de sortie sur Linux et Mac
FFmpeg peut être utilisé pour lire les fichiers audio et vidéo créés. Exemples de commandes :
Linux et Mac
# Audio
$ ffplay -f s16le -ar 48k -af aformat=channel_layouts=mono \
/tmp/test_output_audio.pcm
# Video
#
# `video_size` must match the resolution in the video filename (320x180 in
# this example).
$ ffplay -f rawvideo -pixel_format yuv420p -video_size 320x180 \
/tmp/test_output_video_0_320x180.yuv
Options
Vous pouvez spécifier ces options lorsque vous exécutez les exemples :
Option | Description |
---|---|
--output_file_prefix PREFIX |
Spécifiez le préfixe des fichiers de sortie. La valeur par défaut est /tmp_test_output_ . |
--collection_duration DURATION |
Indiquez la durée de collecte des contenus multimédias. La valeur par défaut est 30s . |
--join_timeout TIMEOUT |
Spécifiez le délai d'attente avant que l'application ne rejoigne la conférence. La valeur par défaut est 2m . |
--meet_api_url URL |
Spécifiez l'URL de l'API Meet Media. La valeur par défaut est https://meet.googleapis.com/v2alpha/ . |
Articles associés
Résoudre les problèmes et corriger les erreurs de l'API Meet Media
Documentation de référence des canaux de données de l'API Meet Media