توضّح هذه الصفحة كيفية إعداد عيّنة وتنفيذها باستخدام المراجع المتعلّقة بلغة C++ وتنفيذ العميل. للاطّلاع على معلومات عن عميل TypeScript بدلاً من ذلك، يُرجى الاطّلاع على مرشد بدء استخدام العميل المرجعي لـ TypeScript.
المتطلبات الأساسية
لتنفيذ هذه الخطوة السريعة، يجب استيفاء المتطلبات الأساسية التالية:
- لقد نسخت مستودع GitHub.
- Bazel 7.4.1
- مشروع على Google Cloud
- حساب Google Workspace تم تفعيل Google Meet فيه
إنشاء برنامج C++ للعميل
تم إنشاء عملية التنفيذ بلغة C++ باستخدام Bazel. ومع ذلك، لا تتوفّر مكتبة WebRTC لـ C++ (libwebrtc) في إصدار Bazel، لذلك يجب إنشاء هذه المكتبة أولاً باتّباع التعليمات الواردة في مستندات WebRTC.
في ما يلي نسخة مختصرة مما هو موضّح في مستندات 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
ملاحظة: الإصدار
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
هو أحدث إصدار معروف يعمل مع عمليات الإنشاء بسبب تحديثات toolchain وabseil. وقد يتغيّر ذلك في المستقبل. تعمل مجموعة الأوامر هذه الآن، ولكن يجب الرجوع إلى الرابط المقدَّم في حال تغيّرت الأدوات الأساسية. إذا كنت بصدد إنشاء إصدار غير x64 من Debian أو Ubuntu Linux، قد يختلف إعداد المتطلّبات الأساسية.بعد إنشاء libwebrtc، عدِّل ملف
WORKSPACE
لتوجيهه إلى دليلwebrtc-checkout
. عدِّل مسارwebrtc_path
بالقرب من أعلى هذا الملف:webrtc_path = "/usr/local/myuser/webrtc-checkout/"
استخدِم Bazel لإنشاء برنامج C++ العميل:
$ bazel build //cpp/...
ملاحظة: يجب استخدام الإصدار 7.4.1 من Bazel. إذا كان لديك إصدارات أحدث من IDE Bazel مثبّتة، يمكنك تشغيلها باستخدام
bazel-7.4.1 build/run/test ...
يمكنك اختياريًا إجراء الاختبارات:
$ bazel test //cpp/...
إنشاء رموز OAuth
للربط بواجهة برمجة التطبيقات Meet Media API، يجب أن يستخدم تطبيقك بروتوكول OAuth لإنشاء الرموز المميزة للوصول. لمزيد من المعلومات عن الوصول إلى Google APIs باستخدام OAuth، يُرجى الاطّلاع على مقالة استخدام OAuth 2.0 للوصول إلى Google APIs.
يمكنك استخدام مساحة OAuth 2.0 التجريبية لإنشاء الرموز المميّزة. عند استخدام "مساحة اللعب"، احرص على:
- استخدِم معرّف العميل وسرّ بيانات الاعتماد من مشروعك على السحابة الإلكترونية.
- اطلب النطاقات الصحيحة.
- سجِّل الدخول إلى حساب Google واقبل إذن الوصول.
بعد اكتمال العملية، انقر على الزر Exchange authorization code for tokens
و
انسخ رمز الوصول الذي تم إنشاؤه.
بدء اجتماع
ابدأ اجتماعًا باستخدام حساب المستخدم نفسه الذي استخدَمته لإنشاء رمز OAuth المميّز. انسخ رمز الاجتماع. أنت الآن جاهز لمحاولة تشغيل العيّنات.
أمثلة على التطبيقات
يوفّر مستودع GitHub عيّنات لتلقّي الوسائط والبيانات الوصفية للمشاركين من اجتماع.
تجمع هذه العيّنات البيانات لفترة زمنية محدّدة (الإعداد التلقائي هو 3 ثوانٍ) وتُسجِّل البيانات التي تم جمعها في الملفات.
تكون الملفات الصوتية بتنسيق PCM16. تكون ملفات الفيديو بتنسيق YUV420p. يمكن تشغيل هذه الملفات باستخدام مكتبة مثل FFmpeg.
بما أنّ درجات دقة الفيديو قد تتغيّر أثناء الاجتماع، تتضمّن العيّنات درجة الدقة في أسماء ملفات الفيديو.
ستكون ملفات البيانات الوصفية للمشاركين ملفات نصية قابلة للقراءة.
نموذج وسائط المستخدِم الفردي
نموذج الوسائط الخاص بالمستخدم الفردي هو تطبيق أساسي يركز على جمع الصوت والفيديو. لا يحدّد العيّنة المشارك الذي أنشأ بيانات الصوت والفيديو. لذلك، قد يؤدي استخدام هذا العيّنة في اجتماع يضم أكثر من مشارك واحد إلى حدوث تلف في الإخراج.
لتشغيل نموذج الوسائط الخاص بالمستخدم الفردي، شغِّل:
Linux
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
يتم تلقائيًا حفظ ملف صوتي واحد في /tmp/test_output_audio.pcm
.
بما أنّ عمليات بث الفيديو قد تغيّر درجات الدقة أثناء الاجتماع، قد يتم إنشاء ملفات فيديو متعدّدة. ستتضمّن أسماء ملفات الفيديو عدّادًا متزايدًا ودرجة دقة هذا الملف. على سبيل المثال، إذا تغيّرت درجة دقة بث الفيديو من 320×180 إلى 240×135 ثم عادت إلى 320×180، سيتم إنشاء ملفات الفيديو التالية:
/tmp/test_output_video_0_320x180.pcm
/tmp/test_output_video_1_240x135.pcm
/tmp/test_output_video_2_320x180.pcm
(اختياري) استخدام FFmpeg لتشغيل ملفات الإخراج على Linux وMac
يمكن استخدام FFmpeg لتشغيل ملفّات المحتوى الصوتي والمرئي التي تم إنشاؤها. أمثلة على الطلبات:
نظاما التشغيل 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
الخيارات
يمكنك تحديد هذه الخيارات عند تشغيل العيّنات:
Option | الوصف |
---|---|
--output_file_prefix PREFIX |
حدِّد البادئة لملفات الإخراج. الإعداد التلقائي هو /tmp_test_output_ . |
--collection_duration DURATION |
حدِّد المدة التي تريد جمع الوسائط خلالها. الإعداد التلقائي هو 30s . |
--join_timeout TIMEOUT |
حدِّد المدة التي يجب الانتظار خلالها إلى أن ينضم التطبيق إلى المؤتمر. الإعداد التلقائي هو 2m . |
--meet_api_url URL |
حدِّد عنوان URL لواجهة برمجة التطبيقات Meet Media API. الإعداد التلقائي هو https://meet.googleapis.com/v2alpha/ . |