Meet Media API: C++ রেফারেন্স ক্লায়েন্ট কুইকস্টার্ট

এই পৃষ্ঠাটি ব্যাখ্যা করে কিভাবে C++ রেফারেন্স ক্লায়েন্ট বাস্তবায়ন ব্যবহার করে একটি নমুনা সেট আপ এবং রান করতে হয়। পরিবর্তে টাইপস্ক্রিপ্ট ক্লায়েন্ট সম্পর্কে জানতে, টাইপস্ক্রিপ্ট রেফারেন্স ক্লায়েন্ট কুইকস্টার্ট দেখুন।

পূর্বশর্ত

এই কুইকস্টার্টটি চালানোর জন্য, আপনার নিম্নলিখিত পূর্বশর্তগুলি প্রয়োজন:

Meet REST API সক্ষম করুন

গুগল এপিআই ব্যবহার করার আগে, আপনাকে গুগল ক্লাউড প্রোজেক্টে সেগুলি চালু করতে হবে। আপনি একটি গুগল ক্লাউড প্রোজেক্টে এক বা একাধিক এপিআই চালু করতে পারেন।

গুগল ক্লাউড কনসোল

  1. গুগল ক্লাউড কনসোলে, Meet REST API সক্ষম করুন।

    API গুলি সক্ষম করুন

  2. নিশ্চিত করুন যে আপনি সঠিক ক্লাউড প্রজেক্টে Meet REST API সক্ষম করছেন, তারপর Next এ ক্লিক করুন।

  3. নিশ্চিত করুন যে আপনি Meet REST API সক্ষম করছেন, তারপর সক্ষম করুন এ ক্লিক করুন।

জিক্লাউড সিএলআই

  1. প্রয়োজনে, বর্তমান ক্লাউড প্রজেক্টটি আপনার তৈরি করা প্রজেক্টে সেট করুন:

    gcloud config set project PROJECT_ID

    আপনার তৈরি করা ক্লাউড প্রোজেক্টের প্রোজেক্ট আইডি দিয়ে PROJECT_ID প্রতিস্থাপন করুন।

  2. Meet REST API সক্ষম করুন:

    gcloud services enable meet.googleapis.com

C++ ক্লায়েন্ট তৈরি করুন

C++ বাস্তবায়নটি Generate Ninja (GN) দিয়ে তৈরি। আরও তথ্যের জন্য, WebRTC ডকুমেন্টেশন দেখুন।

  1. গুগলে গিট থেকে একটি পাসওয়ার্ড তৈরি করুন এবং গিট কনফিগার করুন।

  2. আপনার কমান্ড-লাইন ইন্টারফেস (CLI) থেকে, <samples_location> কে সেই ডিরেক্টরিতে পরিবর্তন করুন যেখানে নমুনাগুলি রয়েছে এবং নিম্নলিখিত কমান্ডটি চালান, যা:

    • আপনার ওয়ার্কিং ডিরেক্টরিটি আপনার হোম ডিরেক্টরিতে পরিবর্তন করে।
    • আপনার হোম ডিরেক্টরিতে src নামে একটি ডিরেক্টরি তৈরি করে।
    • আপনার ওয়ার্কিং ডিরেক্টরি src তে পরিবর্তন করে।
    • git থেকে src/ ডিরেক্টরিতে https://chromium.googlesource.com/chromium/tools/depot_tools.git ক্লোন করে।
    • শেল এক্সিকিউটেবল কমান্ডের জন্য যেসব স্থান অনুসন্ধান করে তার তালিকায় সাময়িকভাবে ~/src/depot_tools ডিরেক্টরি যোগ করে।
    • আপনার নমুনা অবস্থানের cpp ডিরেক্টরিতে আপনার কার্যকরী ডিরেক্টরি পরিবর্তন করে।
    • ./build.sh শেল স্ক্রিপ্ট চালায়।
    cd ~
    mkdir src
    cd src
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    export PATH=~/src/depot_tools:$PATH
    cd <samples_location>/cpp
    sh ./build.sh

OAuth টোকেন তৈরি করুন

Meet Media API-এর সাথে সংযোগ স্থাপন করতে, আপনার অ্যাপকে অ্যাক্সেস টোকেন তৈরি করতে OAuth ব্যবহার করতে হবে। OAuth ব্যবহার করে Google API অ্যাক্সেস করার বিষয়ে আরও জানতে, Google API অ্যাক্সেস করতে OAuth 2.0 ব্যবহার করা দেখুন।

টোকেন তৈরি করতে আপনি OAuth 2.0 প্লেগ্রাউন্ড ব্যবহার করতে পারেন। খেলার মাঠ ব্যবহার করার সময়, নিশ্চিত করুন যে:

  • আপনার ক্লাউড প্রকল্প থেকে আপনার ক্লায়েন্ট আইডি এবং গোপন শংসাপত্র ব্যবহার করুন।
  • সঠিক স্কোপগুলির জন্য অনুরোধ করুন।
  • একটি Google অ্যাকাউন্টে সাইন ইন করুন এবং অ্যাক্সেস গ্রহণ করুন।

একবার সম্পূর্ণ হয়ে গেলে, Exchange authorization code for tokens বোতামে ক্লিক করুন এবং জেনারেট করা অ্যাক্সেস টোকেনটি অনুলিপি করুন।

একটি মিটিং শুরু করুন

OAuth টোকেন তৈরি করার জন্য যে ব্যবহারকারী অ্যাকাউন্টটি ব্যবহার করেছিলেন সেই একই অ্যাকাউন্ট ব্যবহার করে একটি মিটিং শুরু করুন । মিটিং কোডটি কপি করুন। আপনি এখন নমুনা চালানোর জন্য প্রস্তুত।

নমুনা অ্যাপ

গিটহাব রিপোজিটরি একটি মিটিং থেকে মিডিয়া এবং অংশগ্রহণকারীদের মেটাডেটা গ্রহণের নমুনা অফার করে।

এই নমুনাগুলি একটি নির্দিষ্ট সময়ের জন্য তথ্য সংগ্রহ করে (ডিফল্ট ৩ সেকেন্ড) এবং সংগৃহীত তথ্য ফাইলে লিখে রাখে।

অডিও ফাইলগুলি PCM16 ফর্ম্যাটে। ভিডিও ফাইলগুলি YUV420p ফর্ম্যাটে। এই ফাইলগুলি FFmpeg এর মতো লাইব্রেরি ব্যবহার করে চালানো যেতে পারে।

যেহেতু মিটিংয়ের সময় ভিডিও রেজোলিউশন পরিবর্তিত হতে পারে, তাই নমুনাগুলিতে ভিডিও ফাইলের নামে রেজোলিউশন অন্তর্ভুক্ত থাকে।

অংশগ্রহণকারী মেটাডেটা ফাইলগুলি মানুষের পঠনযোগ্য টেক্সট ফাইল হবে।

একক ব্যবহারকারী মিডিয়া নমুনা

একক ব্যবহারকারী মিডিয়া নমুনা একটি মৌলিক অ্যাপ যা অডিও এবং ভিডিও সংগ্রহের উপর দৃষ্টি নিবদ্ধ করে। নমুনা নির্ধারণ করে না যে কোন অংশগ্রহণকারী অডিও এবং ভিডিও ডেটা তৈরি করেছেন। অতএব, একাধিক অংশগ্রহণকারীর সাথে একটি মিটিংয়ে এই নমুনা ব্যবহার করলে আউটপুট দূষিত হতে পারে।

একক ব্যবহারকারী মিডিয়া নমুনা চালানোর জন্য, চালান:

লিনাক্স

$ sh ./run_multi.sh -- \
    --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 Meet Media API API-এর URL নির্দিষ্ট করুন। ডিফল্টভাবে https://meet.googleapis.com/v2alpha/ থাকে।