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 quy trình triển khai ứng dụng tham chiếu C++. Để tìm hiểu về ứng dụng TypeScript, hãy xem phần Bắt đầu nhanh ứng dụng 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.
- Tài khoản Google Workspace đã bật Google Meet.
Tạo ứng dụng C++
Phương thức triển khai C++ được xây dựng 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 về 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 ý: Gói cam kết
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
là phiên bản mới nhất được biết có thể 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. Tập hợp lệnh này hiện đang 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 bản dựng cho một biến thể Debian hoặc Ubuntu Linux không phải x64, thì việc thiết lập điều kiện tiên quyết có thể 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 bằng cách sử dụng
bazel-7.4.1 build/run/test ...
Bạn có thể chạy các chương trình 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ã thông báo truy cập. Để tìm hiểu thêm về cách truy cập vào 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 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ã thông báo 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 đã sử dụng để tạo mã thông báo OAuth. Sao chép mã cuộc họp. Giờ thì 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 tệp.
Tệp âm thanh ở đị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 sẽ 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 của một người dùng
Mẫu nội dung đa phương tiện dành 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 cuộc họp có nhiều người tham gia có thể dẫn đến kết quả bị hỏng.
Để chạy mẫu nội dung đa phương tiện của 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 nhiều tệp video. Tên tệp video sẽ bao gồm 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ề 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 tuỳ chọn này khi chạy các mẫu:
Phương thức | Mô tả |
---|---|
--output_file_prefix PREFIX |
Chỉ định tiền tố cho 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/ . |