Meet Media API: دليل البدء السريع لبرنامج مرجعي لإصدار C++

توضّح هذه الصفحة كيفية إعداد عيّنة وتنفيذها باستخدام المراجع المتعلّقة بلغة C++ وتنفيذ العميل. للاطّلاع على معلومات عن عميل TypeScript بدلاً من ذلك، يُرجى الاطّلاع على مرشد بدء استخدام العميل المرجعي لـ TypeScript.

المتطلبات الأساسية

لتنفيذ هذه الخطوة السريعة، يجب استيفاء المتطلبات الأساسية التالية:

إنشاء برنامج C++ للعميل

  1. تم إنشاء عملية التنفيذ بلغة 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، قد يختلف إعداد المتطلّبات الأساسية.

  2. بعد إنشاء libwebrtc، عدِّل ملف WORKSPACE لتوجيهه إلى دليل webrtc-checkout. عدِّل مسار webrtc_path بالقرب من أعلى هذا الملف:

    webrtc_path = "/usr/local/myuser/webrtc-checkout/" 
    
  3. استخدِم Bazel لإنشاء برنامج C++ العميل:

    $ bazel build //cpp/...
    

ملاحظة: يجب استخدام الإصدار 7.4.1 من Bazel. إذا كان لديك إصدارات أحدث من IDE Bazel مثبّتة، يمكنك تشغيلها باستخدام bazel-7.4.1 build/run/test ...

  1. يمكنك اختياريًا إجراء الاختبارات:

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