Meet Media API: C++ リファレンス クライアントのクイックスタート

このページでは、C++ リファレンス クライアントの実装を使用してサンプルを設定して実行する方法について説明します。TypeScript クライアントの詳細については、TypeScript リファレンス クライアントのクイックスタートをご覧ください。

前提条件

このクイックスタートを実行するには、次の前提条件を満たしている必要があります。

C++ クライアントをビルドする

  1. 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 の更新により、ビルドで動作することが確認されている最新バージョンは commit b00c469cad3f8c926fcf81ded90b90b6e1e62b9c です。今後変更される可能性があります。この一連のコマンドは現在機能していますが、基盤となるツールが変更された場合に備えて、提供されたリンクを参照する必要があります。x64 以外の Debian または Ubuntu Linux のバリエーション用にビルドする場合、前提条件の設定が異なる場合があります。

  2. libwebrtc をビルドしたら、WORKSPACE ファイルを更新して webrtc-checkout ディレクトリを参照するようにします。ファイルの上部にある webrtc_path パスを更新します。

    webrtc_path = "/usr/local/myuser/webrtc-checkout/" 
    
  3. Bazel を使用して C++ クライアントをビルドします。

    $ bazel build //cpp/...
    

: Bazel 7.4.1 を使用する必要があります。新しいバージョンの Bazel がインストールされている場合は、bazel-7.4.1 build/run/test ... を使用して実行できます。

  1. 必要に応じて、テストを実行します。

    $ bazel test //cpp/...
    

OAuth トークンを生成する

Meet Media API に接続するには、アプリが OAuth を使用してアクセス トークンを生成する必要があります。OAuth を使用して Google API にアクセスする方法については、OAuth 2.0 を使用した Google API へのアクセスをご覧ください。

トークンは OAuth 2.0 Playground を使用して生成できます。プレイグラウンドを使用する際は、次の点に注意してください。

  • Cloud プロジェクトのクライアント 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

デフォルトでは、1 つの音声ファイルが /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 API の URL を指定します。デフォルトは https://meet.googleapis.com/v2alpha/ です。