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

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

পূর্বশর্ত

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

Meet REST API সক্রিয় করুন

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

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

  1. Google Cloud কনসোলে Meet REST API সক্রিয় করুন।

    এপিআইগুলি সক্রিয় করুন

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

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

gcloud CLI

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

    gcloud config set project PROJECT_ID

    PROJECT_ID জায়গায় আপনার তৈরি করা ক্লাউড প্রজেক্টের প্রজেক্ট আইডিটি বসান।

  2. Meet REST API সক্রিয় করুন:

    gcloud services enable meet.googleapis.com

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

C++ ইমপ্লিমেন্টেশনটি জেনারেট নিনজা (GN) দিয়ে বিল্ড করা হয়েছে। আরও তথ্যের জন্য, WebRTC ডকুমেন্টেশন দেখুন।

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

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

    • আপনার ওয়ার্কিং ডিরেক্টরিকে আপনার হোম ডিরেক্টরিতে পরিবর্তন করে।
    • আপনার হোম ডিরেক্টরিতে src নামের একটি ডিরেক্টরি তৈরি করে।
    • আপনার ওয়ার্কিং ডিরেক্টরি src তে পরিবর্তন করে।
    • গিট থেকে https://chromium.googlesource.com/chromium/tools/depot_tools.git ফাইলটিকে src/ ডিরেক্টরিতে ক্লোন করে।
    • শেল যখন নির্বাহযোগ্য কমান্ড খোঁজার জন্য স্থানসমূহের তালিকা তৈরি করে, তখন এটি সাময়িকভাবে ~/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 অ্যাক্সেস করার বিষয়ে আরও জানতে, “Using OAuth 2.0 to Access Google APIs” দেখুন।

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

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

একবার সম্পন্ন হলে, 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-এর জন্য URL নির্দিষ্ট করুন। ডিফল্ট হলো https://meet.googleapis.com/v2alpha/