این صفحه نحوه تنظیم و اجرای یک نمونه با استفاده از پیاده سازی مشتری مرجع C++ را توضیح می دهد. برای آشنایی با کلاینت TypeScript به جای آن، به شروع سریع مشتری مرجع TypeScript مراجعه کنید.
پیش نیازها
برای اجرای این شروع سریع، به پیش نیازهای زیر نیاز دارید:
- شما مخزن GitHub را شبیه سازی کرده اید.
- Bazel 7.4.1 .
- یک پروژه Google Cloud .
- یک حساب Google Workspace با فعال شدن Google Meet.
کلاینت C++ را بسازید
پیاده سازی C++ با Bazel ساخته شده است. با این حال، کتابخانه C++ WebRTC ( libwebrtc ) یک ساخت Bazel ندارد، بنابراین ابتدا باید با دنبال کردن دستورالعملهای WebRTC Docs ، آن کتابخانه را بسازید.
موارد زیر یک نسخه مختصر از آنچه در اسناد 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
توجه : Commit
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
آخرین نسخه شناخته شده ای است که به دلیل به روز رسانی های زنجیره ابزار و abseil با ساخت های ما کار می کند. این ممکن است در آینده تغییر کند. این مجموعه از دستورات اکنون کار می کند، اما در صورت تغییر ابزار اصلی باید به پیوند ارائه شده رجوع شود. اگر در حال ساخت نسخه غیر x64 دبیان یا لینوکس اوبونتو هستید، تنظیمات پیش نیاز شما ممکن است متفاوت باشد.پس از ساختن libwebrtc ، فایل
WORKSPACE
خود را به روز کنید تا به دایرکتوریwebrtc-checkout
شما اشاره کند. مسیرwebrtc_path
را نزدیک بالای آن فایل به روز کنید:webrtc_path =
"/usr/local/myuser/webrtc-checkout/" از Bazel برای ساخت کلاینت C++ استفاده کنید:
$ bazel build //cpp/...
توجه : شما باید از Bazel 7.4.1 استفاده کنید. اگر نسخه های جدیدتری از Bazel را نصب کرده اید، می توانید آن را با استفاده از
bazel-7.4.1 build/run/test ...
به صورت اختیاری، آزمایش ها را اجرا کنید:
$ bazel test //cpp/...
توکن های OAuth را ایجاد کنید
برای اتصال به Meet Media API، برنامه شما باید از OAuth برای تولید نشانههای دسترسی استفاده کند. برای کسب اطلاعات بیشتر در مورد دسترسی به Google API با OAuth، به استفاده از OAuth 2.0 برای دسترسی به Google API مراجعه کنید.
می توانید از OAuth 2.0 Playground برای تولید توکن ها استفاده کنید. هنگام استفاده از زمین بازی، مطمئن شوید که:
- از شناسه مشتری و اعتبارنامه های مخفی پروژه ابری خود استفاده کنید.
- دامنه های صحیح را درخواست کنید.
- به یک حساب Google وارد شوید و دسترسی را بپذیرید.
پس از تکمیل، روی دکمه Exchange authorization code for tokens
کلیک کنید و رمز دسترسی ایجاد شده را کپی کنید.
یک جلسه را شروع کنید
با استفاده از همان حساب کاربری که برای تولید نشانه OAuth استفاده کردید ، جلسه ای را شروع کنید . کد جلسه را کپی کنید اکنون آماده اجرای نمونه ها هستید.
نمونه برنامه ها
مخزن GitHub نمونه هایی را برای دریافت فراداده رسانه و شرکت کنندگان از یک جلسه ارائه می دهد.
این نمونه ها داده ها را برای مدت زمان مشخصی جمع آوری می کنند (پیش فرض 3 ثانیه است) و داده های جمع آوری شده را در فایل ها می نویسند.
فایل های صوتی با فرمت PCM16 هستند. فایل های ویدئویی با فرمت YUV420p هستند. این فایل ها را می توان با استفاده از کتابخانه ای مانند FFmpeg پخش کرد.
از آنجایی که وضوح ویدیو ممکن است در طول جلسه تغییر کند، نمونهها وضوح تصویر را در نام فایلهای ویدیویی شامل میشوند.
فایلهای فراداده شرکتکننده، فایلهای متنی قابل خواندن توسط انسان خواهند بود.
نمونه رسانه تک کاربر
نمونه رسانه تک کاربر یک برنامه اساسی است که بر جمع آوری صدا و تصویر تمرکز دارد. نمونه مشخص نمی کند که کدام شرکت کننده داده های صوتی و تصویری را ایجاد کرده است. بنابراین، استفاده از این نمونه در جلسه ای با بیش از یک شرکت کننده ممکن است منجر به خرابی خروجی شود.
برای اجرای نمونه رسانه تک کاربر، اجرا کنید:
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
به طور پیش فرض، یک فایل صوتی در /tmp/test_output_audio.pcm
ذخیره می شود.
از آنجایی که جریانهای ویدیویی ممکن است در طول یک جلسه وضوح را تغییر دهند، ممکن است چندین فایل ویدیویی ایجاد شود. نام فایل های ویدئویی شامل یک شمارنده افزایشی و وضوح آن فایل خواهد بود. به عنوان مثال، اگر وضوح جریان ویدیو از 320x180 به 240x135 تغییر کند و سپس به 320x180 برگردد، فایلهای ویدیویی زیر ایجاد میشوند:
-
/tmp/test_output_video_0_320x180.pcm
-
/tmp/test_output_video_1_240x135.pcm
-
/tmp/test_output_video_2_320x180.pcm
(اختیاری) از FFmpeg برای پخش فایل های خروجی در لینوکس و مک استفاده کنید
FFmpeg می تواند برای پخش فایل های صوتی و تصویری ایجاد شده استفاده شود. دستورات مثال:
# 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
گزینه ها
هنگام اجرای نمونه ها می توانید این گزینه ها را مشخص کنید:
گزینه | توضیحات |
---|---|
--output_file_prefix PREFIX | پیشوند فایل های خروجی را مشخص کنید. پیشفرض /tmp_test_output_ . |
--collection_duration DURATION | مدت زمان جمع آوری رسانه را مشخص کنید. پیش فرض تا 30s است. |
--join_timeout TIMEOUT | مدت زمان انتظار برای پیوستن برنامه به کنفرانس را مشخص کنید. پیش فرض تا 2m است. |
--meet_api_url URL | URL را برای Meet Media API API مشخص کنید. به طور پیش فرض https://meet.googleapis.com/v2alpha/ . |
موضوعات مرتبط
،این صفحه نحوه تنظیم و اجرای یک نمونه با استفاده از پیاده سازی مشتری مرجع C++ را توضیح می دهد. برای آشنایی با کلاینت TypeScript به جای آن، به شروع سریع مشتری مرجع TypeScript مراجعه کنید.
پیش نیازها
برای اجرای این شروع سریع، به پیش نیازهای زیر نیاز دارید:
- شما مخزن GitHub را شبیه سازی کرده اید.
- Bazel 7.4.1 .
- یک پروژه Google Cloud .
- یک حساب Google Workspace با فعال شدن Google Meet.
کلاینت C++ را بسازید
پیاده سازی C++ با Bazel ساخته شده است. با این حال، کتابخانه C++ WebRTC ( libwebrtc ) یک ساخت Bazel ندارد، بنابراین ابتدا باید با دنبال کردن دستورالعملهای WebRTC Docs ، آن کتابخانه را بسازید.
موارد زیر یک نسخه مختصر از آنچه در اسناد 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
توجه : Commit
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
آخرین نسخه شناخته شده ای است که به دلیل به روز رسانی های زنجیره ابزار و abseil با ساخت های ما کار می کند. این ممکن است در آینده تغییر کند. این مجموعه از دستورات اکنون کار می کند، اما در صورت تغییر ابزار اصلی باید به پیوند ارائه شده رجوع شود. اگر در حال ساخت نسخه غیر x64 دبیان یا لینوکس اوبونتو هستید، تنظیمات پیش نیاز شما ممکن است متفاوت باشد.پس از ساختن libwebrtc ، فایل
WORKSPACE
خود را به روز کنید تا به دایرکتوریwebrtc-checkout
شما اشاره کند. مسیرwebrtc_path
را نزدیک بالای آن فایل به روز کنید:webrtc_path =
"/usr/local/myuser/webrtc-checkout/" از Bazel برای ساخت کلاینت C++ استفاده کنید:
$ bazel build //cpp/...
توجه : شما باید از Bazel 7.4.1 استفاده کنید. اگر نسخه های جدیدتری از Bazel را نصب کرده اید، می توانید آن را با استفاده از
bazel-7.4.1 build/run/test ...
به صورت اختیاری، آزمایش ها را اجرا کنید:
$ bazel test //cpp/...
توکن های OAuth را ایجاد کنید
برای اتصال به Meet Media API، برنامه شما باید از OAuth برای تولید نشانههای دسترسی استفاده کند. برای کسب اطلاعات بیشتر در مورد دسترسی به Google API با OAuth، به استفاده از OAuth 2.0 برای دسترسی به Google API مراجعه کنید.
می توانید از OAuth 2.0 Playground برای تولید توکن ها استفاده کنید. هنگام استفاده از زمین بازی، مطمئن شوید که:
- از شناسه مشتری و اعتبارنامه های مخفی پروژه ابری خود استفاده کنید.
- دامنه های صحیح را درخواست کنید.
- به یک حساب Google وارد شوید و دسترسی را بپذیرید.
پس از تکمیل، روی دکمه Exchange authorization code for tokens
کلیک کنید و رمز دسترسی ایجاد شده را کپی کنید.
یک جلسه را شروع کنید
با استفاده از همان حساب کاربری که برای تولید نشانه OAuth استفاده کردید ، جلسه ای را شروع کنید . کد جلسه را کپی کنید اکنون آماده اجرای نمونه ها هستید.
نمونه برنامه ها
مخزن GitHub نمونه هایی را برای دریافت فراداده رسانه و شرکت کنندگان از یک جلسه ارائه می دهد.
این نمونه ها داده ها را برای مدت زمان مشخصی جمع آوری می کنند (پیش فرض 3 ثانیه است) و داده های جمع آوری شده را در فایل ها می نویسند.
فایل های صوتی با فرمت PCM16 هستند. فایل های ویدئویی با فرمت YUV420p هستند. این فایل ها را می توان با استفاده از کتابخانه ای مانند FFmpeg پخش کرد.
از آنجایی که وضوح ویدیو ممکن است در طول جلسه تغییر کند، نمونهها وضوح تصویر را در نام فایلهای ویدیویی شامل میشوند.
فایلهای فراداده شرکتکننده، فایلهای متنی قابل خواندن توسط انسان خواهند بود.
نمونه رسانه تک کاربر
نمونه رسانه تک کاربر یک برنامه اساسی است که بر جمع آوری صدا و تصویر تمرکز دارد. نمونه مشخص نمی کند که کدام شرکت کننده داده های صوتی و تصویری را ایجاد کرده است. بنابراین، استفاده از این نمونه در جلسه ای با بیش از یک شرکت کننده ممکن است منجر به خرابی خروجی شود.
برای اجرای نمونه رسانه تک کاربر، اجرا کنید:
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
به طور پیش فرض، یک فایل صوتی در /tmp/test_output_audio.pcm
ذخیره می شود.
از آنجایی که جریانهای ویدیویی ممکن است در طول یک جلسه وضوح را تغییر دهند، ممکن است چندین فایل ویدیویی ایجاد شود. نام فایل های ویدئویی شامل یک شمارنده افزایشی و وضوح آن فایل خواهد بود. به عنوان مثال، اگر وضوح جریان ویدیو از 320x180 به 240x135 تغییر کند و سپس به 320x180 برگردد، فایلهای ویدیویی زیر ایجاد میشوند:
-
/tmp/test_output_video_0_320x180.pcm
-
/tmp/test_output_video_1_240x135.pcm
-
/tmp/test_output_video_2_320x180.pcm
(اختیاری) از FFmpeg برای پخش فایل های خروجی در لینوکس و مک استفاده کنید
FFmpeg می تواند برای پخش فایل های صوتی و تصویری ایجاد شده استفاده شود. دستورات مثال:
# 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
گزینه ها
هنگام اجرای نمونه ها می توانید این گزینه ها را مشخص کنید:
گزینه | توضیحات |
---|---|
--output_file_prefix PREFIX | پیشوند فایل های خروجی را مشخص کنید. پیشفرض /tmp_test_output_ . |
--collection_duration DURATION | مدت زمان جمع آوری رسانه را مشخص کنید. پیش فرض تا 30s است. |
--join_timeout TIMEOUT | مدت زمان انتظار برای پیوستن برنامه به کنفرانس را مشخص کنید. پیش فرض تا 2m است. |
--meet_api_url URL | URL را برای Meet Media API API مشخص کنید. به طور پیش فرض https://meet.googleapis.com/v2alpha/ . |