API Meet Media: guide de démarrage rapide du client de référence C++

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 :

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

  1. Dans la console Google Cloud, activez l'API REST Meet.

    Activer les API

  2. Vérifiez que vous activez l'API Meet REST dans le bon projet Cloud, puis cliquez sur Suivant.

  3. Confirmez que vous activez l'API REST Meet, puis cliquez sur Activer.

CLI gcloud

  1. 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éé.

  2. Activez l'API REST Meet :

    gcloud services enable meet.googleapis.com

Compiler le client C++

L'implémentation C++ est conçue avec Generate Ninja (GN). Pour en savoir plus, consultez la documentation WebRTC.

  1. Générez un mot de passe à partir de Git at Google et configurez Git.

  2. Dans votre interface de ligne de commande (CLI), remplacez <samples_location> par le répertoire contenant les exemples et exécutez la commande suivante, qui :

    • Remplace votre répertoire de travail par votre répertoire personnel.
    • Crée un répertoire nommé src dans votre répertoire d'accueil.
    • Remplace le répertoire de travail par src.
    • Clone https://chromium.googlesource.com/chromium/tools/depot_tools.git dans le répertoire src/ à partir de Git.
    • Ajoute temporairement le répertoire ~/src/depot_tools à la liste des emplacements dans lesquels le shell recherche les commandes exécutables.
    • Remplace votre répertoire de travail par le répertoire cpp dans l'emplacement de vos exemples.
    • Exécute le script shell ./build.sh.
    cd ~
    mkdir src
    cd src
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    export PATH=~/src/depot_tools:$PATH
    cd <samples_location>/cpp
    sh ./build.sh

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 (3 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'humain.

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

$ sh ./run_multi.sh -- \
    --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/.