На этой странице объясняется, как настроить и запустить пример с использованием эталонной реализации клиента C++ . Чтобы узнать больше о клиенте TypeScript, см. краткое руководство по эталонному клиенту TypeScript .
Предпосылки
Для запуска этого быстрого старта вам потребуются следующие предварительные условия:
- Вы клонировали репозиторий GitHub .
- Базель 7.4.1 .
- Проект Google Cloud с включенным API Google Meet REST.
- Учетная запись Google Workspace.
Включить API Meet REST
Перед использованием API Google необходимо включить их в проекте Google Cloud. Вы можете включить один или несколько API в одном проекте Google Cloud.Консоль Google Cloud
В консоли Google Cloud включите API Meet REST.
Подтвердите, что вы включаете API Meet REST в правильном проекте Cloud, затем нажмите Далее .
Подтвердите включение API Meet REST, затем нажмите Включить .
gcloud CLI
При необходимости установите текущий проект Cloud на тот, который вы создали:
gcloud config set project PROJECT_ID
Замените PROJECT_ID на идентификатор созданного вами облачного проекта.
Включите API REST Meet:
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
Примечание : коммит
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
— последняя известная версия, совместимая с нашими сборками благодаря обновлениям toolchain и abseil. Это может измениться в будущем. Этот набор команд работает сейчас, но при изменении базового инструментария следует обратиться к предоставленной ссылке. Если вы собираете для не-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
Для подключения к 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/ . |