Trang này giải thích cách thiết lập và chạy một mẫu bằng cách sử dụng chế độ triển khai ứng dụng tham chiếu C++. Để tìm hiểu về ứng dụng khách TypeScript, hãy xem hướng dẫn nhanh về ứng dụng khách tham chiếu TypeScript.
Điều kiện tiên quyết
Để chạy hướng dẫn bắt đầu nhanh này, bạn cần có các điều kiện tiên quyết sau:
- Bạn đã sao chép kho lưu trữ GitHub.
- Bazel 7.4.1.
- Một dự án trên Google Cloud đã bật Google Meet REST API.
- Tài khoản Google Workspace.
Bật Meet REST API
Trước khi sử dụng API của Google, bạn cần bật các API đó trong một dự án Google Cloud. Bạn có thể bật một hoặc nhiều API trong một dự án Google Cloud.Bảng điều khiển Google Cloud
Trong Google Cloud Console, hãy bật Meet REST API.
Xác nhận rằng bạn đang bật Meet REST API trong dự án Cloud chính xác, sau đó nhấp vào Tiếp theo.
Xác nhận rằng bạn đang bật Meet REST API, sau đó nhấp vào Bật.
gcloud CLI
Nếu cần, hãy đặt dự án hiện tại trên Google Cloud thành dự án mà bạn đã tạo:
gcloud config set project PROJECT_ID
Thay PROJECT_ID bằng Mã dự án của dự án trên Cloud mà bạn đã tạo.
Bật Meet REST API:
gcloud services enable meet.googleapis.com
Tạo ứng dụng C++
Phương thức triển khai C++ được tạo bằng Bazel. Tuy nhiên, thư viện WebRTC C++ (libwebrtc) không có bản dựng Bazel đang hoạt động, vì vậy, trước tiên, bạn phải tạo thư viện đó bằng cách làm theo hướng dẫn tại tài liệu WebRTC.
Sau đây là phiên bản rút gọn của nội dung được giải thích trong tài liệu 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
Lưu ý: Cam kết
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
là phiên bản mới nhất đã biết để hoạt động với các bản dựng của chúng tôi do các bản cập nhật chuỗi công cụ và abseil. Điều này có thể thay đổi trong tương lai. Hiện tại, bộ lệnh này hoạt động, nhưng bạn nên tham khảo đường liên kết được cung cấp trong trường hợp công cụ cơ bản thay đổi. Nếu bạn đang tạo cho một biến thể Debian hoặc Ubuntu Linux không phải x64, thì chế độ thiết lập tiên quyết có thể sẽ khác.Sau khi tạo libwebrtc, hãy cập nhật tệp
WORKSPACE
để trỏ đến thư mụcwebrtc-checkout
. Cập nhật đường dẫnwebrtc_path
ở gần đầu tệp đó:webrtc_path = "/usr/local/myuser/webrtc-checkout/"
Sử dụng Bazel để tạo ứng dụng C++:
$ bazel build //cpp/...
Lưu ý: Bạn nên sử dụng Bazel 7.4.1. Nếu đã cài đặt các phiên bản Bazel mới hơn, bạn có thể chạy Bazel bằng cách sử dụng
bazel-7.4.1 build/run/test ...
Bạn có thể chạy các kiểm thử (không bắt buộc):
$ bazel test //cpp/...
Tạo mã thông báo OAuth
Để kết nối với Meet Media API, ứng dụng của bạn phải sử dụng OAuth để tạo mã truy cập. Để tìm hiểu thêm về cách truy cập vào các API của Google bằng OAuth, hãy xem bài viết Sử dụng OAuth 2.0 để truy cập vào các API của Google.
Bạn có thể sử dụng OAuth 2.0 Playground để tạo mã thông báo. Khi sử dụng Playground, hãy nhớ:
- Sử dụng mã ứng dụng khách và thông tin xác thực bí mật trong dự án trên đám mây.
- Yêu cầu phạm vi chính xác.
- Đăng nhập vào Tài khoản Google và chấp nhận quyền truy cập.
Sau khi hoàn tất, hãy nhấp vào nút Exchange authorization code for tokens
rồi sao chép mã truy cập đã tạo.
Bắt đầu cuộc họp
Bắt đầu cuộc họp bằng chính tài khoản người dùng mà bạn đã dùng để tạo mã thông báo OAuth. Sao chép mã cuộc họp. Giờ đây, bạn đã sẵn sàng chạy các mẫu.
Ứng dụng mẫu
Kho lưu trữ GitHub cung cấp các mẫu để nhận nội dung nghe nhìn và siêu dữ liệu về người tham gia từ một cuộc họp.
Các mẫu này thu thập dữ liệu trong một khoảng thời gian cụ thể (mặc định là 3 giây) và ghi dữ liệu đã thu thập vào các tệp.
Các tệp âm thanh có định dạng PCM16. Tệp video ở định dạng YUV420p. Bạn có thể phát các tệp này bằng cách sử dụng một thư viện như FFmpeg.
Vì độ phân giải video có thể thay đổi trong cuộc họp, nên các mẫu bao gồm độ phân giải trong tên tệp video.
Tệp siêu dữ liệu của người tham gia sẽ là tệp văn bản mà con người có thể đọc được.
Mẫu nội dung nghe nhìn cho một người dùng
Mẫu nội dung nghe nhìn cho một người dùng là một ứng dụng cơ bản tập trung vào việc thu thập âm thanh và video. Mẫu này không xác định người tham gia nào đã tạo dữ liệu âm thanh và video. Do đó, việc sử dụng mẫu này trong một cuộc họp có nhiều người tham gia có thể dẫn đến đầu ra bị hỏng.
Để chạy mẫu nội dung đa phương tiện cho một người dùng, hãy chạy:
Linux
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
Theo mặc định, một tệp âm thanh sẽ được lưu vào /tmp/test_output_audio.pcm
.
Vì luồng video có thể thay đổi độ phân giải trong cuộc họp, nên có thể tạo ra nhiều tệp video. Tên tệp video sẽ bao gồm một bộ đếm tăng dần và độ phân giải của tệp đó. Ví dụ: nếu độ phân giải luồng video thay đổi từ 320x180 thành 240x135 rồi quay lại 320x180, thì các tệp video sau đây sẽ được tạo:
/tmp/test_output_video_0_320x180.pcm
/tmp/test_output_video_1_240x135.pcm
/tmp/test_output_video_2_320x180.pcm
(Không bắt buộc) Sử dụng FFmpeg để phát tệp đầu ra trên Linux và Mac
Bạn có thể dùng FFmpeg để phát các tệp âm thanh và video đã tạo. Ví dụ về các lệnh:
Linux và 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
Tùy chọn
Bạn có thể chỉ định các lựa chọn này khi chạy mẫu:
Phương thức | Mô tả |
---|---|
--output_file_prefix PREFIX |
Chỉ định tiền tố cho các tệp đầu ra. Giá trị mặc định là /tmp_test_output_ . |
--collection_duration DURATION |
Chỉ định thời gian thu thập nội dung nghe nhìn. Giá trị mặc định là 30s . |
--join_timeout TIMEOUT |
Chỉ định thời gian chờ để ứng dụng tham gia hội nghị. Giá trị mặc định là 2m . |
--meet_api_url URL |
Chỉ định URL cho API Meet Media API. Giá trị mặc định là https://meet.googleapis.com/v2alpha/ . |