Auf dieser Seite wird beschrieben, wie Sie ein Beispiel mit der C++-Referenzimplementierung für den Client 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
- Ein Google Workspace-Konto mit aktiviertem Google Meet
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 daher zuerst erstellen. Folgen Sie dazu der Anleitung in den WebRTC-Dokumenten.
Im Folgenden findest du eine gekürzte Version der Informationen aus den WebRTC-Dokumenten:
$ 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 aktuell bekannte Version, die aufgrund von Toolchain- und Abseil-Updates mit unseren Builds funktioniert. Dies kann sich in Zukunft ändern. Diese Befehle funktionieren derzeit, aber der bereitgestellte Link sollte verwendet werden, falls sich die zugrunde liegenden Tools ändern. Wenn Sie eine nicht x64-kompatible Debian- oder Ubuntu-Linux-Variante erstellen, sind möglicherweise andere Voraussetzungen erforderlich.Aktualisieren Sie nach dem Erstellen von libwebrtc die Datei
WORKSPACE
so, dass sie auf das Verzeichniswebrtc-checkout
verweist. Aktualisieren Sie den Pfad zuwebrtc_path
oben in dieser Datei:webrtc_path = "/usr/local/myuser/webrtc-checkout/"
Verwenden Sie Bazel, um den C++-Client zu erstellen:
$ bazel build //cpp/...
Hinweis: Sie sollten Bazel 7.4.1 verwenden. Wenn Sie neuere Versionen von Bazel installiert haben, können Sie sie mit
bazel-7.4.1 build/run/test ...
ausführen.
Optional können Sie die Tests ausführen:
$ bazel test //cpp/...
OAuth-Tokens generieren
Damit eine Verbindung zur Meet Media API hergestellt werden kann, 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 mit dem OAuth 2.0 Playground Tokens generieren. Beachten Sie bei der Verwendung des Playgrounds Folgendes:
- Verwenden Sie die Client-ID und das Secret aus Ihrem Cloud-Projekt.
- Fordern Sie die richtigen Bereiche an.
- Melden Sie sich in einem Google-Konto an und akzeptieren Sie den Zugriff.
Klicken Sie anschließend auf die Schaltfläche Exchange authorization code for tokens
und kopieren Sie das generierte Zugriffstoken.
Videokonferenz starten
Starten Sie eine Videokonferenz mit demselben Nutzerkonto, mit dem Sie das OAuth-Token generiert haben. Kopieren Sie den Besprechungscode. Sie können jetzt die Samples ausführen.
Beispielanwendungen
Das GitHub-Repository bietet Samples zum Empfangen von Medien- und Teilnehmermetadaten aus einer Videokonferenz.
Bei diesen Stichproben werden Daten für einen bestimmten Zeitraum erfasst (Standard: 3 Sekunden) und in Dateien geschrieben.
Audiodateien sind im PCM16-Format. Videodateien müssen im YUV420p-Format vorliegen. Diese Dateien können mit einer Bibliothek wie FFmpeg wiedergegeben werden.
Da sich die Videoauflösung während einer Videokonferenz ändern kann, ist die Auflösung in den Namen der Videodateien enthalten.
Dateien mit Teilnehmermetadaten müssen menschenlesbare Textdateien sein.
Beispiel für Medien für einzelne Nutzer
Das Beispiel für Medien für einen einzelnen Nutzer ist eine einfache App, die sich auf die Erfassung von Audio- und Videoinhalten konzentriert. Anhand der Stichprobe lässt sich nicht feststellen, welcher Teilnehmer die Audio- und Videodaten erstellt hat. Die Verwendung dieses Samples in einer Videokonferenz mit mehreren Teilnehmern kann daher zu einer beschädigten Ausgabe führen.
So führen Sie das Beispiel für Medien für einzelne 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. Die Dateinamen der Videodateien enthalten einen inkrementellen Zähler und die Auflösung der Datei. Wenn sich die Auflösung des Videostreams beispielsweise von 320 x 180 auf 240 x 135 und dann wieder auf 320 x 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] Ausgabedateien unter Linux und Mac mit FFmpeg wiedergeben
Mit FFmpeg können Sie erstellte Audio- und Videodateien abspielen. 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 beim Ausführen der Samples die folgenden Optionen angeben:
Option | Beschreibung |
---|---|
--output_file_prefix PREFIX |
Geben Sie das Präfix für die Ausgabedateien an. Die Standardeinstellung ist /tmp_test_output_ . |
--collection_duration DURATION |
Geben Sie an, wie lange Medien erfasst werden sollen. Die Standardeinstellung ist 30s . |
--join_timeout TIMEOUT |
Geben Sie an, wie lange gewartet werden soll, bis die App der Konferenz beitritt. 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/ . |