Meet 媒体 API:C++ 参考客户端快速入门

本页介绍了如何使用 C++ 参考客户端实现设置和运行示例。如需了解 TypeScript 客户端,请参阅 TypeScript 参考客户端快速入门

前提条件

如需运行本快速入门,您需要满足以下前提条件:

启用 Meet REST API

在使用 Google API 之前,您需要在 Google Cloud 项目中启用它们。 您可以在单个 Google Cloud 项目中开启一个或多个 API。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,启用 Meet REST API。

    启用 API

  2. 确认您要在正确的 Cloud 项目中启用 Meet REST API,然后点击下一步

  3. 确认您要启用 Meet REST API,然后点击启用

gcloud CLI

  1. 如有必要,请将当前 Cloud 项目设置为您创建的项目:

    gcloud config set project PROJECT_ID

    PROJECT_ID 替换为您创建的 Cloud 项目的项目 ID

  2. 启用 Meet REST API:

    gcloud services enable meet.googleapis.com

构建 C++ 客户端

C++ 实现是使用 Generate Ninja (GN) 构建的。如需了解详情,请参阅 WebRTC 文档

  1. Git at Google 生成密码并配置 Git。

  2. 在命令行界面 (CLI) 中,将 <samples_location> 更改为包含示例的目录,然后运行以下命令:

    • 将工作目录更改为您的主目录。
    • 在您的主目录中创建一个名为 src 的目录。
    • 将工作目录更改为 src
    • 从 Git 将 https://chromium.googlesource.com/chromium/tools/depot_tools.git 克隆到 src/ 目录中。
    • 暂时将 ~/src/depot_tools 目录添加到 shell 搜索可执行命令的位置列表中。
    • 将工作目录更改为示例位置中的 cpp 目录。
    • 运行 ./build.sh shell 脚本。
    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

生成 OAuth 令牌

如需连接到 Meet Media API,您的应用必须使用 OAuth 生成访问令牌。如需详细了解如何使用 OAuth 访问 Google API,请参阅使用 OAuth 2.0 访问 Google API

您可以使用 OAuth 2.0 Playground 生成令牌。使用 Playground 时,请务必:

  • 使用云项目中的客户端 ID 和密钥凭据。
  • 请求正确的范围
  • 登录 Google 账号并接受访问权限。

完成后,点击 Exchange authorization code for tokens 按钮并复制生成的访问令牌。

发起会议

使用您生成 OAuth 令牌时所用的同一用户账号开始会议。复制会议代码。现在,您可以运行示例了。

示例应用

GitHub 代码库提供了用于从会议接收媒体和参与者元数据的示例。

这些样本会收集指定时间(默认值为 3 秒)的数据,并将收集的数据写入文件。

音频文件采用 PCM16 格式。视频文件采用 YUV420p 格式。可以使用 FFmpeg 等库播放这些文件。

由于视频分辨率可能会在会议期间发生变化,因此示例会在视频文件名中包含分辨率。

参与者元数据文件将是人类可读的文本文件。

单用户媒体示例

单用户媒体示例是一款专注于收集音频和视频的基本应用。该样本无法确定音频和视频数据是由哪位参与者创建的。因此,在有多个参与者的会议中使用此示例可能会导致输出损坏。

如需运行单用户媒体示例,请运行以下命令:

Linux

$ sh ./run_multi.sh -- \
    --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 的网址。默认为 https://meet.googleapis.com/v2alpha/