Bu sayfada, C++ referans istemci uygulaması kullanılarak bir örneğin nasıl ayarlanacağı ve çalıştırılacağı açıklanmaktadır. Bunun yerine TypeScript istemcisi hakkında bilgi edinmek için TypeScript referans istemcisi hızlı başlangıç kılavuzuna bakın.
Ön koşullar
Bu hızlı başlangıcı çalıştırmak için aşağıdaki ön koşulları karşılamanız gerekir:
- GitHub deposunu kopyalamış olmanız gerekir.
- Bazel 7.4.1.
- Google Meet REST API'nin etkinleştirildiği bir Google Cloud projesi.
- Google Workspace hesabı
Meet REST API'yi etkinleştirme
Google API'lerini kullanmadan önce bir Google Cloud projesinde etkinleştirmeniz gerekir. Tek bir Google Cloud projesinde bir veya daha fazla API'yi etkinleştirebilirsiniz.Google Cloud konsolu
Google Cloud Console'da Meet REST API'yi etkinleştirin.
Meet REST API'yi doğru Cloud projesinde etkinleştirdiğinizi onaylayıp Sonraki'yi tıklayın.
Meet REST API'yi etkinleştirdiğinizi onaylayın ve Etkinleştir'i tıklayın.
gcloud CLI
Gerekirse mevcut Cloud projesini oluşturduğunuz projeyle değiştirin:
gcloud config set project PROJECT_ID
PROJECT_ID kısmını, oluşturduğunuz Cloud projesinin proje kimliği ile değiştirin.
Meet REST API'yi etkinleştirin:
gcloud services enable meet.googleapis.com
C++ istemcisini oluşturma
C++ uygulaması Bazel ile oluşturulur. Ancak C++ WebRTC kitaplığında (libwebrtc) çalışan bir Bazel derlemesi yoktur. Bu nedenle, WebRTC dokümanlarındaki talimatları uygulayarak önce bu kitaplığı derlemeniz gerekir.
Aşağıda, WebRTC belgelerinde açıklananların kısaltılmış bir versiyonu verilmiştir:
$ 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
Not: Commit
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
, araç zinciri ve abseil güncellemeleri nedeniyle derlemelerimizle çalışan bilinen en son sürümdür. Bu durum gelecekte değişebilir. Bu komut grubu şu anda çalışıyor ancak temel araçlarda değişiklik olması durumunda sağlanan bağlantıya başvurulmalıdır. x64 olmayan bir Debian veya Ubuntu Linux varyantı için geliştirme yapıyorsanız ön koşul kurulumunuz farklı olabilir.libwebrtc'yi oluşturduktan sonra
WORKSPACE
dosyanızıwebrtc-checkout
dizininize yönlendirecek şekilde güncelleyin. Bu dosyanın üst kısmına yakın bir yerdewebrtc_path
yolunu güncelleyin:webrtc_path = "/usr/local/myuser/webrtc-checkout/"
C++ istemcisini oluşturmak için Bazel'i kullanın:
$ bazel build //cpp/...
Not: Bazel 7.4.1'i kullanmanız gerekir. Bazel'in daha yeni sürümleri yüklüyse
bazel-7.4.1 build/run/test ...
kullanarak çalıştırabilirsiniz.
İsteğe bağlı olarak testleri çalıştırın:
$ bazel test //cpp/...
OAuth jetonları oluşturma
Meet Media API'ye bağlanmak için uygulamanızın erişim jetonları oluşturmak üzere OAuth kullanması gerekir. Google API'lerine OAuth ile erişme hakkında daha fazla bilgi edinmek için Google API'lerine Erişmek İçin OAuth 2.0'ı Kullanma başlıklı makaleyi inceleyin.
Jeton oluşturmak için OAuth 2.0 Playground'u kullanabilirsiniz. Playground'u kullanırken şunları yaptığınızdan emin olun:
- Cloud projenizdeki istemci kimliğinizi ve gizli kimlik bilgilerinizi kullanın.
- Doğru kapsamları isteyin.
- Google Hesabı'nda oturum açın ve erişimi kabul edin.
İşlem tamamlandığında Exchange authorization code for tokens
düğmesini tıklayın ve oluşturulan erişim jetonunu kopyalayın.
Toplantı başlatma
OAuth jetonunu oluşturmak için kullandığınız kullanıcı hesabıyla toplantı başlatın. Toplantı kodunu kopyalayın. Artık örnekleri çalıştırmaya hazırsınız.
Örnek uygulamalar
GitHub deposunda, toplantıdan medya ve katılımcı meta verilerini alma örnekleri bulunur.
Bu örnekler, belirli bir süre boyunca (varsayılan olarak 3 saniye) veri toplar ve toplanan verileri dosyalara yazar.
Ses dosyaları PCM16 biçimindedir. Video dosyaları YUV420p biçimindedir. Bu dosyalar, FFmpeg gibi bir kitaplık kullanılarak oynatılabilir.
Toplantı sırasında video çözünürlükleri değişebileceğinden örneklerde video dosyası adlarındaki çözünürlük yer alır.
Katılımcı meta veri dosyaları, okunabilir metin dosyalarıdır.
Tek Kullanıcılı Medya Örneği
Tek kullanıcılı medya örneği, ses ve video toplama üzerine odaklanan temel bir uygulamadır. Örnek, ses ve video verilerini hangi katılımcının oluşturduğunu belirlemez. Bu nedenle, bu örneği birden fazla katılımcının olduğu bir toplantıda kullanmak bozuk çıktıya neden olabilir.
Tek kullanıcılı medya örneğini çalıştırmak için şu komutu çalıştırın:
Linux
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
Varsayılan olarak, tek bir ses dosyası /tmp/test_output_audio.pcm
konumuna kaydedilir.
Toplantı sırasında video akışlarının çözünürlüğü değişebileceğinden birden fazla video dosyası oluşturulabilir. Video dosyası adları, artan bir sayaç ve dosyanın çözünürlüğünü içerir. Örneğin, video akışı çözünürlüğü 320x180'den 240x135'e ve ardından tekrar 320x180'e değişirse aşağıdaki video dosyaları oluşturulur:
/tmp/test_output_video_0_320x180.pcm
/tmp/test_output_video_1_240x135.pcm
/tmp/test_output_video_2_320x180.pcm
(İsteğe bağlı) Çıkış dosyalarını Linux ve Mac'te oynatmak için FFmpeg'i kullanma
Oluşturulan ses ve video dosyalarını oynatmak için FFmpeg kullanılabilir. Örnek komutlar:
Linux ve 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
Seçenekler
Örnekleri çalıştırırken aşağıdaki seçenekleri belirtebilirsiniz:
Option | Açıklama |
---|---|
--output_file_prefix PREFIX |
Çıkış dosyalarının ön ekini belirtin. Varsayılan olarak /tmp_test_output_ değerine ayarlanır. |
--collection_duration DURATION |
Medyanın ne kadar süreyle toplanacağını belirtin. Varsayılan olarak 30s değerine ayarlanır. |
--join_timeout TIMEOUT |
Uygulamanın konferansa katılması için beklenecek süreyi belirtin. Varsayılan olarak 2m değerine ayarlanır. |
--meet_api_url URL |
Meet Media API'nin URL'sini belirtin. Varsayılan olarak https://meet.googleapis.com/v2alpha/ değerine ayarlanır. |