Meet Media API: краткое руководство по справочному клиенту C++

На этой странице объясняется, как настроить и запустить пример с использованием эталонной реализации клиента C++ . Чтобы узнать больше о клиенте TypeScript, см. краткое руководство по эталонному клиенту TypeScript .

Предпосылки

Для запуска этого быстрого старта вам потребуются следующие предварительные условия:

Включить API Meet REST

Перед использованием API Google необходимо включить их в проекте Google Cloud. Вы можете включить один или несколько API в одном проекте Google Cloud.

Консоль Google Cloud

  1. В консоли Google Cloud включите API Meet REST.

    Включить API

  2. Подтвердите, что вы включаете API Meet REST в правильном проекте Cloud, затем нажмите Далее .

  3. Подтвердите включение API Meet REST, затем нажмите Включить .

gcloud CLI

  1. При необходимости установите текущий проект Cloud на тот, который вы создали:

    gcloud config set project PROJECT_ID

    Замените PROJECT_ID на идентификатор созданного вами облачного проекта.

  2. Включите API REST Meet:

    gcloud services enable meet.googleapis.com

Сборка клиента 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
    

    Примечание : коммит b00c469cad3f8c926fcf81ded90b90b6e1e62b9c — последняя известная версия, совместимая с нашими сборками благодаря обновлениям toolchain и abseil. Это может измениться в будущем. Этот набор команд работает сейчас, но при изменении базового инструментария следует обратиться к предоставленной ссылке. Если вы собираете для не-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

Для подключения к API Meet Media ваше приложение должно использовать OAuth для генерации токенов доступа. Подробнее о доступе к API Google с помощью OAuth см. в статье «Использование OAuth 2.0 для доступа к API Google» .

Вы можете использовать площадку OAuth 2.0 для генерации токенов. При использовании площадки убедитесь, что:

  • Используйте свой идентификатор клиента и секретные учетные данные из вашего облачного проекта.
  • Запросите правильные области применения .
  • Войдите в учетную запись Google и разрешите доступ.

После завершения нажмите кнопку Exchange authorization code for tokens и скопируйте сгенерированный токен доступа.

Начать встречу

Начните встречу, используя ту же учётную запись, которую вы использовали для генерации токена OAuth. Скопируйте код встречи. Теперь вы готовы к запуску примеров.

Примеры приложений

Репозиторий GitHub предлагает примеры для получения медиаданных и метаданных участников встречи.

Эти образцы собирают данные в течение определенного периода времени (по умолчанию 3 секунды) и записывают собранные данные в файлы.

Аудиофайлы имеют формат PCM16. Видеофайлы имеют формат YUV420p. Их можно воспроизвести с помощью библиотеки, например, FFmpeg.

Поскольку разрешение видео может меняться во время встречи, в примерах разрешение указывается в названиях видеофайлов.

Файлы метаданных участников будут представлять собой текстовые файлы, удобные для чтения человеком.

Образец медиафайла для одного пользователя

Пример медиафайлов для одного пользователя — это простое приложение, предназначенное для сбора аудио- и видеоданных. Этот пример не определяет, какой участник создал аудио- и видеоданные. Поэтому использование этого примера на встрече с несколькими участниками может привести к искажению выходных данных.

Чтобы запустить образец мультимедиа для одного пользователя, выполните:

Линукс

$ 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 Укажите URL-адрес API Meet Media. По умолчанию — https://meet.googleapis.com/v2alpha/ .