Halaman ini menjelaskan cara menyiapkan dan menjalankan contoh menggunakan implementasi klien referensi C++. Untuk mempelajari klien TypeScript, lihat mulai cepat 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 dengan Google Meet REST API yang diaktifkan.
- Akun Google Workspace.
Mengaktifkan Meet REST API
Sebelum menggunakan Google API, Anda harus mengaktifkannya di project Google Cloud. Anda dapat mengaktifkan satu atau beberapa API dalam satu project Google Cloud.Konsol Google Cloud
Di konsol Google Cloud, aktifkan Meet REST API.
Pastikan Anda mengaktifkan Meet REST API di project Cloud yang benar, lalu klik Berikutnya.
Konfirmasi bahwa Anda mengaktifkan Meet REST API, lalu klik Enable.
gcloud CLI
Jika perlu, tetapkan project Cloud saat ini ke project yang Anda buat:
gcloud config set project PROJECT_ID
Ganti PROJECT_ID dengan Project ID dari project Cloud yang Anda buat.
Aktifkan Meet REST API:
gcloud services enable meet.googleapis.com
Membangun klien C++
Implementasi C++ dibuat dengan Bazel. Namun, library WebRTC C++ (libwebrtc) tidak memiliki build Bazel yang berfungsi, jadi Anda harus membangun library tersebut terlebih dahulu dengan mengikuti petunjuk di dokumen WebRTC.
Berikut adalah versi singkat dari penjelasan yang ada di 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. Kebijakan ini mungkin akan berubah di masa mendatang. Kumpulan perintah ini sekarang berfungsi, tetapi link yang diberikan harus dirujuk jika alat pokoknya berubah. Jika Anda membangun untuk varian Linux Debian atau Ubuntu non-x64, penyiapan prasyarat Anda mungkin berbeda.Setelah membangun libwebrtc, perbarui file
WORKSPACE
untuk mengarah ke direktoriwebrtc-checkout
Anda. Perbarui jalurwebrtc_path
di dekat bagian atas file tersebut:webrtc_path = "/usr/local/myuser/webrtc-checkout/"
Gunakan Bazel untuk membangun klien C++:
$ bazel build //cpp/...
Catatan: Anda harus menggunakan Bazel 7.4.1. Jika telah menginstal Bazel versi 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 kredensial rahasia dan ID klien dari project cloud Anda.
- Minta cakupan yang benar.
- Login ke Akun Google dan setujui akses.
Setelah selesai, klik tombol Exchange authorization code for tokens
, lalu salin token akses yang dibuat.
Mulai 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 media dan metadata peserta dari rapat.
Contoh 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 menghasilkan output yang 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 menjadi 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 sampel:
Opsi | Deskripsi |
---|---|
--output_file_prefix PREFIX |
Tentukan 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 durasi tunggu aplikasi untuk 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/ . |