Halaman ini menjelaskan cara menyiapkan dan menjalankan contoh menggunakan implementasi klien referensi C++. Untuk mempelajari klien TypeScript, lihat panduan memulai klien referensi TypeScript.
Prasyarat
Untuk menjalankan panduan memulai ini, Anda memerlukan prasyarat berikut:
- Anda telah meng-clone repositori GitHub.
- Bazel 7.4.1.
- Project Google Cloud.
- Akun Google Workspace yang mengaktifkan Google Meet.
Mem-build klien C++
Implementasi C++ dibuat dengan Bazel. Namun, library WebRTC C++ (libwebrtc) tidak memiliki build Bazel yang berfungsi, jadi Anda harus mem-build library tersebut terlebih dahulu dengan mengikuti petunjuk di dokumen WebRTC.
Berikut adalah versi singkat dari penjelasan dalam dokumen 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
Catatan: Commit
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
adalah versi terbaru yang diketahui berfungsi dengan build kami karena update toolchain dan abseil. Hal ini dapat berubah pada masa mendatang. Kumpulan perintah ini berfungsi sekarang, tetapi link yang diberikan harus dirujuk jika alat yang mendasarinya berubah. Jika Anda mem-build untuk varian Debian atau Ubuntu Linux non-x64, penyiapan prasyarat Anda mungkin berbeda.Setelah mem-build libwebrtc, perbarui file
WORKSPACE
agar mengarah ke direktoriwebrtc-checkout
. Perbarui jalurwebrtc_path
di dekat bagian atas file tersebut:webrtc_path = "/usr/local/myuser/webrtc-checkout/"
Gunakan Bazel untuk mem-build klien C++:
$ bazel build //cpp/...
Catatan: Anda harus menggunakan Bazel 7.4.1. Jika telah menginstal versi Bazel yang lebih baru, Anda dapat menjalankannya menggunakan
bazel-7.4.1 build/run/test ...
Secara opsional, jalankan pengujian:
$ bazel test //cpp/...
Membuat token OAuth
Untuk terhubung ke Meet Media API, aplikasi Anda harus menggunakan OAuth untuk membuat token akses. Untuk mempelajari lebih lanjut cara mengakses Google API dengan OAuth, lihat Menggunakan OAuth 2.0 untuk Mengakses Google API.
Anda dapat menggunakan OAuth 2.0 Playground untuk membuat token. Saat menggunakan simulator, pastikan untuk:
- Gunakan client ID dan kredensial rahasia dari project cloud Anda.
- Minta cakupan yang benar.
- Login ke Akun Google dan setujui akses.
Setelah selesai, klik tombol Exchange authorization code for tokens
dan salin token akses yang dihasilkan.
Memulai rapat
Mulai rapat menggunakan akun pengguna yang sama dengan yang Anda gunakan untuk membuat token OAuth. Salin kode rapat. Sekarang Anda siap untuk menjalankan contoh.
Aplikasi contoh
Repositori GitHub menawarkan contoh untuk menerima metadata peserta dan media dari rapat.
Sampel ini mengumpulkan data selama jangka waktu tertentu (defaultnya 3 detik) dan menulis data yang dikumpulkan ke file.
File audio dalam format PCM16. File video dalam format YUV420p. File ini dapat diputar menggunakan library seperti FFmpeg.
Karena resolusi video dapat berubah selama rapat, sampel menyertakan resolusi dalam nama file video.
File metadata peserta akan berupa file teks yang dapat dibaca manusia.
Contoh Media Pengguna Tunggal
Contoh media pengguna tunggal adalah aplikasi dasar yang berfokus pada pengumpulan audio dan video. Sampel tidak menentukan peserta mana yang membuat data audio dan video. Oleh karena itu, menggunakan sampel ini dalam rapat dengan lebih dari satu peserta dapat menyebabkan output rusak.
Untuk menjalankan contoh media pengguna tunggal, jalankan:
Linux
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
Secara default, satu file audio disimpan ke /tmp/test_output_audio.pcm
.
Karena streaming video dapat mengubah resolusi selama rapat, beberapa file video mungkin dibuat. Nama file video akan menyertakan penghitung yang bertambah dan resolusi untuk file tersebut. Misalnya, jika resolusi streaming video berubah dari 320x180 menjadi 240x135, lalu kembali ke 320x180, file video berikut akan dibuat:
/tmp/test_output_video_0_320x180.pcm
/tmp/test_output_video_1_240x135.pcm
/tmp/test_output_video_2_320x180.pcm
(Opsional) Menggunakan FFmpeg untuk Memutar File Output di Linux dan Mac
FFmpeg dapat digunakan untuk memutar file audio dan video yang dibuat. Contoh perintah:
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
Opsi
Anda dapat menentukan opsi ini saat menjalankan contoh:
Opsi | Deskripsi |
---|---|
--output_file_prefix PREFIX |
Menentukan awalan untuk file output. Default-nya adalah /tmp_test_output_ . |
--collection_duration DURATION |
Tentukan durasi pengumpulan media. Default-nya adalah 30s . |
--join_timeout TIMEOUT |
Tentukan berapa lama waktu menunggu aplikasi bergabung ke konferensi. Default-nya adalah 2m . |
--meet_api_url URL |
Tentukan URL untuk Meet Media API API. Default-nya adalah https://meet.googleapis.com/v2alpha/ . |