이 페이지에서는 C++ 참조 클라이언트 구현을 사용하여 샘플을 설정하고 실행하는 방법을 설명합니다. TypeScript 클라이언트에 대해 알아보려면 TypeScript 참조 클라이언트 빠른 시작을 참고하세요.
기본 요건
이 빠른 시작을 실행하려면 다음 기본 요건이 필요합니다.
- GitHub 저장소를 클론했습니다.
- Bazel 7.4.1
- Google Meet REST API가 사용 설정된 Google Cloud 프로젝트
- Google Workspace 계정
Meet REST API 사용 설정
Google API를 사용하려면 먼저 Google Cloud 프로젝트에서 사용 설정해야 합니다. 단일 Google Cloud 프로젝트에서 하나 이상의 API를 사용 설정할 수 있습니다.Google Cloud 콘솔
Google Cloud 콘솔에서 Meet REST API를 사용 설정합니다.
올바른 Cloud 프로젝트에서 Meet REST API를 사용 설정하고 있는지 확인한 후 다음을 클릭합니다.
Meet REST API를 사용 설정했는지 확인한 후 사용 설정을 클릭합니다.
gcloud CLI
필요한 경우 현재 Cloud 프로젝트를 생성한 프로젝트로 설정합니다.
gcloud config set project PROJECT_ID
PROJECT_ID를 생성한 Cloud 프로젝트의 프로젝트 ID로 바꿉니다.
Meet REST API를 사용 설정합니다.
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
는 도구 모음 및 abseil 업데이트로 인해 빌드와 호환되는 최신 버전입니다. 이 점은 향후 변경될 수 있습니다. 이 명령어 집합은 현재 작동하지만 기본 도구가 변경될 경우 제공된 링크를 참고해야 합니다. x64가 아닌 Debian 또는 Ubuntu Linux 변형을 빌드하는 경우 필수 구성요소 설정이 다를 수 있습니다.libwebrtc를 빌드한 후
webrtc-checkout
디렉터리를 가리키도록WORKSPACE
파일을 업데이트합니다. 해당 파일 상단 근처에서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 토큰 생성
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/ 입니다. |