Auf dieser Seite wird beschrieben, wie Sie ein Beispiel mit der C++-Referenzclientimplementierung einrichten und ausführen. Informationen zum TypeScript-Client finden Sie im Schnellstart für den TypeScript-Referenzclient.
Vorbereitung
Für diese Kurzanleitung sind die folgenden Voraussetzungen erforderlich:
- Sie haben das GitHub-Repository geklont.
- Bazel 7.4.1.
- Ein Google Cloud-Projekt mit aktivierter Google Meet REST API.
- Ein Google Workspace-Konto
Meet REST API aktivieren
Bevor Sie Google APIs verwenden können, müssen Sie sie in einem Google Cloud-Projekt aktivieren. Sie können eine oder mehrere APIs in einem einzelnen Google Cloud-Projekt aktivieren.Google Cloud Console
Aktivieren Sie in der Google Cloud Console die Meet REST API.
Bestätigen Sie, dass Sie die Meet REST API im richtigen Cloud-Projekt aktivieren, und klicken Sie auf Weiter.
Bestätigen Sie, dass Sie die Meet REST API aktivieren möchten, und klicken Sie dann auf Aktivieren.
gcloud-CLI
Legen Sie gegebenenfalls das aktuelle Cloud-Projekt auf das von Ihnen erstellte Projekt fest:
gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID durch die Projekt-ID des von Ihnen erstellten Cloud-Projekts.
Aktivieren Sie die Meet REST API:
gcloud services enable meet.googleapis.com
C++-Client erstellen
Die C++-Implementierung wird mit Bazel erstellt. Die C++-WebRTC-Bibliothek (libwebrtc) hat jedoch keinen funktionierenden Bazel-Build. Sie müssen diese Bibliothek also zuerst gemäß der WebRTC-Dokumentation erstellen.
Im Folgenden finden Sie eine gekürzte Version der Informationen aus der WebRTC-Dokumentation:
$ 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
Hinweis: Commit
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
ist die letzte bekannte Version, die aufgrund von Toolchain- und Abseil-Updates mit unseren Builds funktioniert. Das kann sich in Zukunft ändern. Diese Befehle funktionieren jetzt, aber der bereitgestellte Link sollte verwendet werden, falls sich die zugrunde liegenden Tools ändern. Wenn Sie für eine Nicht-x64-Debian- oder Ubuntu-Linux-Variante entwickeln, kann sich die Einrichtung der Voraussetzungen unterscheiden.Nachdem Sie libwebrtc erstellt haben, aktualisieren Sie die Datei
WORKSPACE
, damit sie auf das Verzeichniswebrtc-checkout
verweist. Aktualisieren Sie den Pfadwebrtc_path
oben in der Datei:webrtc_path = "/usr/local/myuser/webrtc-checkout/"
Erstellen Sie den C++-Client mit Bazel:
$ bazel build //cpp/...
Hinweis: Sie sollten Bazel 7.4.1 verwenden. Wenn Sie neuere Versionen von Bazel installiert haben, können Sie es mit
bazel-7.4.1 build/run/test ...
ausführen.
Optional: Führen Sie die Tests aus:
$ bazel test //cpp/...
OAuth-Tokens generieren
Um eine Verbindung zur Meet Media API herzustellen, muss Ihre App OAuth verwenden, um Zugriffstokens zu generieren. Weitere Informationen zum Zugriff auf Google APIs mit OAuth finden Sie unter Mit OAuth 2.0 auf Google APIs zugreifen.
Sie können den OAuth 2.0 Playground verwenden, um Tokens zu generieren. Wenn Sie den Playground verwenden, sollten Sie Folgendes beachten:
- Verwenden Sie Ihre Client-ID und Ihr Secret aus Ihrem Cloud-Projekt.
- Fordern Sie die richtigen Bereiche an.
- Melden Sie sich in einem Google-Konto an und gewähren Sie den Zugriff.
Klicken Sie nach Abschluss auf die Schaltfläche Exchange authorization code for tokens
und kopieren Sie das generierte Zugriffstoken.
Besprechung starten
Starten Sie eine Videokonferenz mit demselben Nutzerkonto, mit dem Sie das OAuth-Token generiert haben. Kopieren Sie den Besprechungscode. Jetzt können Sie die Beispiele ausführen.
Beispielanwendungen
Im GitHub-Repository finden Sie Beispiele für den Empfang von Medien und Teilnehmermetadaten aus einer Videokonferenz.
Bei diesen Stichproben werden Daten für einen bestimmten Zeitraum (standardmäßig 3 Sekunden) erfasst und in Dateien geschrieben.
Die Audiodateien sind im PCM16-Format. Videodateien sind im YUV420p-Format. Diese Dateien können mit einer Bibliothek wie FFmpeg wiedergegeben werden.
Da sich die Videoauflösung während einer Videokonferenz ändern kann, enthalten die Beispiele die Auflösung in den Dateinamen.
Metadatendateien für Teilnehmer sind für Menschen lesbare Textdateien.
Media-Beispiel für einzelne Nutzer
Die Media-Beispiel-App für einzelne Nutzer ist eine einfache App, die sich auf das Erfassen von Audio- und Videodaten konzentriert. Anhand der Stichprobe wird nicht ermittelt, welcher Teilnehmer die Audio- und Videodaten erstellt hat. Wenn Sie dieses Beispiel in einer Videokonferenz mit mehreren Teilnehmern verwenden, kann es daher zu einer beschädigten Ausgabe kommen.
So führen Sie das Media-Beispiel für einen einzelnen Nutzer aus:
Linux
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
Standardmäßig wird eine einzelne Audiodatei unter /tmp/test_output_audio.pcm
gespeichert.
Da sich die Auflösung von Videostreams während einer Videokonferenz ändern kann, werden möglicherweise mehrere Videodateien erstellt. Videodateinamen enthalten einen inkrementellen Zähler und die Auflösung der Datei. Wenn sich die Auflösung des Videostreams beispielsweise von 320 × 180 zu 240 × 135 und dann wieder zu 320 × 180 ändert, werden die folgenden Videodateien erstellt:
/tmp/test_output_video_0_320x180.pcm
/tmp/test_output_video_1_240x135.pcm
/tmp/test_output_video_2_320x180.pcm
(Optional) FFmpeg zum Abspielen von Ausgabedateien unter Linux und Mac verwenden
Mit FFmpeg können erstellte Audio- und Videodateien wiedergegeben werden. Beispielbefehle:
Linux und 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
Optionen
Sie können diese Optionen beim Ausführen der Beispiele angeben:
Option | Beschreibung |
---|---|
--output_file_prefix PREFIX |
Geben Sie das Präfix für Ausgabedateien an. Die Standardeinstellung ist /tmp_test_output_ . |
--collection_duration DURATION |
Geben Sie an, wie lange Medien gesammelt werden sollen. Die Standardeinstellung ist 30s . |
--join_timeout TIMEOUT |
Geben Sie an, wie lange auf die Teilnahme der App an der Videokonferenz gewartet werden soll. Die Standardeinstellung ist 2m . |
--meet_api_url URL |
Geben Sie die URL für die Meet Media API an. Die Standardeinstellung ist https://meet.googleapis.com/v2alpha/ . |