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
    

    Примечание . Commit b00c469cad3f8c926fcf81ded90b90b6e1e62b9c — это последняя известная версия, которая работает с нашими сборками благодаря обновлениям Toolchain и Abseil. Это может измениться в будущем. Этот набор команд сейчас работает, но на предоставленную ссылку следует обращаться в случае изменения базового инструментария. Если вы собираете вариант Debian или Ubuntu Linux, отличный от x64, ваши предварительные настройки могут быть другими.

  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 можно использовать для воспроизведения созданных аудио- и видеофайлов. Примеры команд:

Линукс и Мак

# 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 API. По умолчанию https://meet.googleapis.com/v2alpha/ .
,

На этой странице объясняется, как настроить и запустить пример с использованием эталонной реализации клиента 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
    

    Примечание . Commit b00c469cad3f8c926fcf81ded90b90b6e1e62b9c — это последняя известная версия, которая работает с нашими сборками благодаря обновлениям Toolchain и Abseil. Это может измениться в будущем. Этот набор команд сейчас работает, но на предоставленную ссылку следует обращаться в случае изменения базового инструментария. Если вы собираете вариант Debian или Ubuntu Linux, отличный от x64, ваши предварительные настройки могут быть другими.

  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 можно использовать для воспроизведения созданных аудио- и видеофайлов. Примеры команд:

Линукс и Мак

# 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 API. По умолчанию https://meet.googleapis.com/v2alpha/ .