Meet 미디어 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
    

    참고: 커밋 b00c469cad3f8c926fcf81ded90b90b6e1e62b9c은 도구 모음 및 abseil 업데이트로 인해 빌드와 호환되는 것으로 알려진 최신 버전입니다. 이 점은 향후 변경될 수 있습니다. 이 명령어 세트는 지금 작동하지만 기본 도구가 변경되는 경우 제공된 링크를 참고해야 합니다. x64가 아닌 Debian 또는 Ubuntu Linux 변형을 빌드하는 경우 기본 요건 설정이 다를 수 있습니다.

  2. libwebrtc를 빌드한 후 webrtc-checkout 디렉터리를 가리키도록 WORKSPACE 파일을 업데이트합니다. 파일 상단에 있는 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 토큰 생성

Meet Media API에 연결하려면 앱에서 OAuth를 사용하여 액세스 토큰을 생성해야 합니다. OAuth를 사용하여 Google API에 액세스하는 방법에 관한 자세한 내용은 OAuth 2.0을 사용하여 Google API에 액세스를 참고하세요.

OAuth 2.0 Playground를 사용하여 토큰을 생성할 수 있습니다. 플레이그라운드를 사용할 때는 다음 사항을 확인하세요.

  • 클라우드 프로젝트의 클라이언트 ID 및 보안 비밀번호 사용자 인증 정보를 사용합니다.
  • 올바른 범위를 요청합니다.
  • Google 계정에 로그인하고 액세스를 수락합니다.

완료되면 Exchange authorization code for tokens 버튼을 클릭하고 생성된 액세스 토큰을 복사합니다.

회의 시작

OAuth 토큰을 생성하는 데 사용한 것과 동일한 사용자 계정을 사용하여 회의를 시작합니다. 회의 코드를 복사합니다. 이제 샘플을 실행할 준비가 되었습니다.

샘플 앱

GitHub 저장소는 회의에서 미디어 및 참여자 메타데이터를 수신하기 위한 샘플을 제공합니다.

이러한 샘플은 지정된 시간 (기본값: 3초) 동안 데이터를 수집하고 수집된 데이터를 파일에 씁니다.

오디오 파일은 PCM16 형식입니다. 동영상 파일은 YUV420p 형식입니다. 이러한 파일은 FFmpeg와 같은 라이브러리를 사용하여 재생할 수 있습니다.

회의 중에 동영상 해상도가 변경될 수 있으므로 샘플에는 동영상 파일 이름에 해상도가 포함되어 있습니다.

참여자 메타데이터 파일은 사람이 읽을 수 있는 텍스트 파일입니다.

단일 사용자 미디어 샘플

단일 사용자 미디어 샘플은 오디오 및 동영상 수집에 중점을 둔 기본 앱입니다. 샘플은 오디오 및 동영상 데이터를 만든 참여자를 결정하지 않습니다. 따라서 두 명 이상의 참석자가 있는 회의에서 이 샘플을 사용하면 출력이 손상될 수 있습니다.

단일 사용자 미디어 샘플을 실행하려면 다음을 실행합니다.

Linux

$ 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 Meet Media API API의 URL을 지정합니다. 기본값은 https://meet.googleapis.com/v2alpha/입니다.