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/ .