Meet Media API: Panduan memulai klien referensi C++

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:

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

  1. Di konsol Google Cloud, aktifkan Meet REST API.

    Aktifkan API

  2. Pastikan Anda mengaktifkan Meet REST API di project Cloud yang benar, lalu klik Berikutnya.

  3. Konfirmasi bahwa Anda mengaktifkan Meet REST API, lalu klik Enable.

gcloud CLI

  1. 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.

  2. Aktifkan Meet REST API:

    gcloud services enable meet.googleapis.com

Membangun klien C++

  1. 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.

  2. Setelah membangun libwebrtc, perbarui file WORKSPACE untuk mengarah ke direktori webrtc-checkout Anda. Perbarui jalur webrtc_path di dekat bagian atas file tersebut:

    webrtc_path = "/usr/local/myuser/webrtc-checkout/" 
    
  3. 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 ...

  1. 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/.