Bu sayfada, C++ referans istemci uygulamasını kullanarak bir örneğin nasıl oluşturulacağı 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ıç kılavuzunu çalıştırmak için aşağıdaki ön koşullara sahip olmanız gerekir:
- GitHub deposunu kopyaladınız.
- Bazel 7.4.1.
- Google Cloud projesi.
- Google Meet'in etkin olduğu bir Google Workspace hesabı.
C++ istemcisini derleme
C++ uygulaması Bazel ile derlenmiştir. Ancak C++ WebRTC kitaplığının (libwebrtc) çalışan bir Bazel derlemesi yoktur. Bu nedenle, WebRTC dokümanlarındaki talimatları uygulayarak önce bu kitaplığı derlemeniz gerekir.
Aşağıda, WebRTC dokümanlarındaki açıklamaları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:
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
commit'i, araç zinciri ve abseil güncellemeleri nedeniyle derlemelerimizle çalışabileceği bilinen en son sürümdür. Bu durum gelecekte değişebilir. Bu komut grubu şu anda çalışıyor olsa da temel araçta değişiklik olması durumunda sağlanan bağlantıya başvurulması gerekir. x64 olmayan bir Debian veya Ubuntu Linux varyantı için derleme yapıyorsanız ön koşul ayarlarınız farklı olabilir.libwebrtc'i oluşturduktan sonra
WORKSPACE
dosyanızıwebrtc-checkout
dizinizle işaret edecek şekilde güncelleyin. Söz konusu dosyanın üst kısmındakiwebrtc_path
yolunu güncelleyin:webrtc_path = "/usr/local/myuser/webrtc-checkout/"
C++ istemcisini derlemek için Bazel'i kullanın:
$ bazel build //cpp/...
Not: Bazel 7.4.1 sürümünü kullanıyor olmanız gerekir. Bazel'in daha yeni sürümleri yüklüyse
bazel-7.4.1 build/run/test ...
İ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. OAuth ile Google API'lerine erişim hakkında daha fazla bilgi edinmek için Google API'lerine Erişmek iç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ını kullanarak 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 verileri almak için örnekler sunulur.
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.
Video çözünürlüğü toplantı sırasında değişebileceğinden, örneklerde video dosya adlarına çözünürlük eklenir.
Katılımcı meta veri dosyaları, kullanıcı tarafından okunabilen metin dosyaları olacaktır.
Tek Kullanıcılı Medya Örneği
Tek kullanıcılı medya örneği, ses ve video toplamaya odaklanan temel bir uygulamadır. Sana Özel özelliği, 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 bulunduğu bir toplantıda kullanmak bozuk bir çıktıyla sonuçlanabilir.
Tek kullanıcılı medya örneğini çalıştırmak için:
Linux
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
Varsayılan olarak /tmp/test_output_audio.pcm
'e tek bir ses dosyası kaydedilir.
Video akışları toplantı sırasında çözünürlük değiştirebileceğinden birden fazla video dosyası oluşturulabilir. Video dosya adları, artan bir sayıcı ve ilgili 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ı) Linux ve Mac'te çıkış dosyalarını 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
Sana Özel örneklerini ç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 |
Medya toplama süresini belirtin. Varsayılan olarak 30s değerine ayarlanır. |
--join_timeout TIMEOUT |
Uygulamanın konferansa katılması için ne kadar süre beklemeniz gerektiğini belirtin. Varsayılan olarak 2m değerine ayarlanır. |
--meet_api_url URL |
Meet Media API API'sinin URL'sini belirtin. Varsayılan olarak https://meet.googleapis.com/v2alpha/ değerine ayarlanır. |