このページでは、C++ リファレンス クライアント実装を使用してサンプルを設定して実行する方法について説明します。TypeScript クライアントについては、TypeScript リファレンス クライアントのクイックスタートをご覧ください。
前提条件
このクイックスタートを実行するには、次の前提条件を満たしている必要があります。
- GitHub リポジトリのクローンを作成しました。
- Bazel 7.4.1。
- Google Meet REST API が有効になっている Google Cloud プロジェクト。
- Google Workspace アカウント。
Meet REST API を有効にする
Google API を使用する前に、Google Cloud プロジェクトで API を有効にする必要があります。1 つの Google Cloud プロジェクトで 1 つ以上の API を有効にできます。Google Cloud コンソール
Google Cloud コンソールで、Meet REST API を有効にします。
正しい Cloud プロジェクトで Meet REST API を有効にしていることを確認し、[次へ] をクリックします。
Meet REST API を有効にすることを確認し、[有効にする] をクリックします。
gcloud CLI
必要に応じて、現在の Cloud プロジェクトを作成したプロジェクトに設定します。
gcloud config set project PROJECT_ID
PROJECT_ID は、作成した Cloud プロジェクトのプロジェクト ID に置き換えます。
Meet REST API を有効にします。
gcloud services enable meet.googleapis.com
C++ クライアントをビルドする
C++ 実装は Bazel でビルドされます。ただし、C++ WebRTC ライブラリ(libwebrtc)には動作する Bazel ビルドがないため、WebRTC ドキュメントの手順に沿って、まずこのライブラリをビルドする必要があります。
以下は、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
注: ツールチェーンと abseil の更新により、コミット
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
はビルドで動作する最新の既知のバージョンです。これは今後変更される可能性があります。このコマンドセットは現在機能していますが、基盤となるツールが変更された場合は、提供されたリンクを参照してください。x64 以外の Debian または Ubuntu Linux バリアント用にビルドする場合は、前提条件のセットアップが異なることがあります。libwebrtc をビルドしたら、
WORKSPACE
ファイルを更新してwebrtc-checkout
ディレクトリを指すようにします。そのファイルの先頭付近にあるwebrtc_path
パスを更新します。webrtc_path = "/usr/local/myuser/webrtc-checkout/"
Bazel を使用して C++ クライアントをビルドします。
$ bazel build //cpp/...
注: Bazel 7.4.1 を使用する必要があります。新しいバージョンの Bazel がインストールされている場合は、
bazel-7.4.1 build/run/test ...
を使用して実行できます。
必要に応じて、テストを実行します。
$ bazel test //cpp/...
OAuth トークンを生成する
Meet Media API に接続するには、アプリで OAuth を使用してアクセス トークンを生成する必要があります。OAuth を使用して Google API にアクセスする方法については、OAuth 2.0 を使用して Google API にアクセスするをご覧ください。
OAuth 2.0 Playground を使用してトークンを生成できます。プレイグラウンドを使用する際は、次の点に注意してください。
- クラウド プロジェクトのクライアント ID とシークレット認証情報を使用します。
- 正しいスコープをリクエストします。
- Google アカウントにログインして、アクセスを許可します。
完了したら、Exchange authorization code for tokens
ボタンをクリックして、生成されたアクセス トークンをコピーします。
会議を開始する
OAuth トークンの生成に使用したのと同じユーザー アカウントを使用して、会議を開始します。会議コードをコピーします。これで、サンプルを実行する準備が整いました。
サンプルアプリ
GitHub リポジトリには、会議からメディアと参加者のメタデータを受信するサンプルが用意されています。
これらのサンプルは、指定された時間(デフォルトは 3 秒)データを収集し、収集したデータをファイルに書き込みます。
音声ファイルは PCM16 形式です。動画ファイルは YUV420p 形式です。これらのファイルは、FFmpeg などのライブラリを使用して再生できます。
会議中に動画の解像度が変更される可能性があるため、サンプルには動画ファイル名に解像度が含まれています。
参加者のメタデータ ファイルは、人間が読み取れるテキスト ファイルになります。
単一ユーザーのメディア サンプル
シングル ユーザー メディア サンプルは、音声と動画の収集に重点を置いた基本的なアプリです。このサンプルでは、音声データと動画データを作成した参加者を特定しません。そのため、複数の参加者がいる会議でこのサンプルを使用すると、出力が破損する可能性があります。
シングル ユーザー メディア サンプルを実行するには、次のコマンドを実行します。
Linux
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
デフォルトでは、単一の音声ファイルが /tmp/test_output_audio.pcm
に保存されます。
ビデオ会議中に動画ストリームの解像度が変更される可能性があるため、複数の動画ファイルが作成されることがあります。動画ファイル名には、連番とファイルの解像度が含まれます。たとえば、動画ストリームの解像度が 320x180 から 240x135 に変更され、その後 320x180 に戻った場合、次の動画ファイルが作成されます。
/tmp/test_output_video_0_320x180.pcm
/tmp/test_output_video_1_240x135.pcm
/tmp/test_output_video_2_320x180.pcm
(省略可)FFmpeg を使用して Linux と Mac で出力ファイルを再生する
FFmpeg を使用して、作成した音声ファイルと動画ファイルを再生できます。コマンドの例:
Linux と 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
オプション
これらのオプションは、サンプルを実行するときに指定できます。
オプション | 説明 |
---|---|
--output_file_prefix PREFIX |
出力ファイルの接頭辞を指定します。デフォルトは /tmp_test_output_ です。 |
--collection_duration DURATION |
メディアを収集する期間を指定します。デフォルトは 30s です。 |
--join_timeout TIMEOUT |
アプリが会議に参加するまでの待機時間を指定します。デフォルトは 2m です。 |
--meet_api_url URL |
Meet Media API の URL を指定します。デフォルトは https://meet.googleapis.com/v2alpha/ です。 |