YouTube Live Streaming API ওভারভিউ

YouTube Live Streaming API আপনাকে YouTube-এ লাইভ ইভেন্ট তৈরি, আপডেট ও ম্যানেজ করতে দেয়। API ব্যবহার করে, আপনি ইভেন্ট (ব্রডকাস্ট) শিডিউল করতে এবং সেগুলিকে ভিডিও স্ট্রিমের সাথে যুক্ত করতে পারেন, যা আসল ব্রডকাস্ট কন্টেন্টকে উপস্থাপন করে।

লাইভ স্ট্রিমিং API আসলে YouTube Data API এবং YouTube Content ID API-এর কম্পোনেন্ট দিয়ে তৈরি। Data API-এর সাহায্যে YouTube ব্যবহারকারীরা তাদের YouTube অ্যাকাউন্ট ম্যানেজ করতে পারেন এবং YouTube Content ID API-এর সাহায্যে YouTube-এর অধিকার ম্যানেজমেন্ট সিস্টেমের সাথে ইন্টার‍্যাক্ট করতে পারেন। তবে, লাইভ স্ট্রিমিং API-এর সমস্ত রিসোর্স শুধুমাত্র লাইভ ইভেন্ট তৈরি ও ম্যানেজ করার জন্য ব্যবহার করা হয়।

এই ডকুমেন্টটি সেইসব ডেভেলপারদের জন্য যারা YouTube-এ লাইভ ব্রডকাস্ট করার সুবিধা দিতে অ্যাপ্লিকেশন লিখতে চান। এটি YouTube এবং API-এর মূল ধারণা ব্যাখ্যা করে। এছাড়াও, API-তে কাজ করে এমন বিভিন্ন ফাংশনের ওভারভিউ প্রদান করে।

মূল ধারণা

ব্রডকাস্ট
ব্রডকাস্ট বলতে এমন ইভেন্টকে বোঝায় যা YouTube-এ লাইভ দেখা যায়। এছাড়াও, ব্রডকাস্ট রেকর্ড করা এবং YouTube ভিডিও হিসেবে সেভ করা যেতে পারে যাতে ব্যবহারকারীরা সেগুলি পরে দেখতে পারেন।
স্ট্রিম
স্ট্রিম হল YouTube-এ পাঠানো অডিও-ভিডিও কন্টেন্ট শনাক্ত করার পদ্ধতি। প্রতিটি ব্রডকাস্ট একটি ভিডিও স্ট্রিমের সাথে যুক্ত থাকে।
কিউপয়েন্ট
cuepoint হল একটি বিজ্ঞাপন বিরতি যা লাইভ সম্প্রচারে যোগ করা যেতে পারে।

API-এর ব্যবহারিক তথ্য

আপনার অ্যাপ্লিকেশনে API ব্যবহার করার বিভিন্ন উপায় নিচের তালিকায় সাজেস্ট করা হয়েছে:

  • ব্রডকাস্ট শিডিউল করা এবং ব্রডকাস্ট সেটিংস নির্ধারণ করা। আপনার অ্যাপ্লিকেশন ব্যবহারকারীদের ব্রডকাস্ট সেটিংস আগে থেকে নির্ধারণ করতে এবং তারপরে কোনও নির্দিষ্ট ব্রডকাস্টে প্রয়োগ করার জন্য সেটিংস বেছে নিতে দিতে পারে।

  • ভিডিও স্ট্রিম ও ব্রডকাস্ট অ্যাসোসিয়েট করুন।

  • ব্রডকাস্টারদের একই সাথে ব্রডকাস্ট এবং এর ভিডিও (YouTube Data API ব্যবহার করে) সম্পর্কে তথ্য নির্ধারণ করতে দিন।

  • ব্রডকাস্ট স্ট্যাটাসের মধ্যে ট্রানজিশন সহজ করুন (যেমন, testing বা live) এবং ব্যবহারকারীদের কিউপয়েন্ট যোগ করার সুবিধা দিন।

শুরু করার আগে

  1. Google Cloud console অ্যাক্সেস করতে, API কী-এর জন্য অনুরোধ করতে এবং আপনার অ্যাপ্লিকেশন রেজিস্টার করতে আপনার একটি Google অ্যাকাউন্ট থাকতে হবে।

  2. Google-এর সাথে আপনার অ্যাপ্লিকেশন রেজিস্টার করুন যাতে এটি API অনুরোধ জমা দিতে পারে।

  3. আপনার অ্যাপ্লিকেশন রেজিস্টার করার পরে, আপনার অ্যাপ্লিকেশন ব্যবহার করে এমন পরিষেবাগুলির মধ্যে একটি হিসেবে YouTube Data API বেছে নিন:

    1. Cloud console-এ যান এবং আপনি এইমাত্র যে প্রোজেক্ট রেজিস্টার করেছেন সেটি বেছে নিন।
    2. চালু করা API পৃষ্ঠা দেখুন। API-এর তালিকায়, YouTube Data API v3 এবং আপনি YouTube কন্টেন্ট পার্টনার হলে, YouTube Content ID API-এর স্ট্যাটাস চালু আছে কিনা তা নিশ্চিত করুন।
  4. JavaScript Object Notation (JSON) ডেটা ফর্ম্যাটের মূল ধারণা সম্পর্কে জানুন। JSON হল একটি সাধারণ, ভাষা-নিরপেক্ষ ডেটা ফর্ম্যাট যা নির্বিচারে ডেটা স্ট্রাকচারের একটি সহজ টেক্সট উপস্থাপনা প্রদান করে। আরও তথ্যের জন্য, json.org দেখুন।

API সংক্রান্ত অনুরোধ অনুমোদন করা হচ্ছে

উপরে যেমন উল্লেখ করা হয়েছে, লাইভ স্ট্রিমিং API এমন কার্যকারিতা ব্যবহার করে যা টেকনিক্যালি YouTube Data API বা YouTube Content ID API-এর অংশ। আপনার অ্যাসেটের জন্য YouTube-কে মেটাডেটা, মালিকানা সংক্রান্ত তথ্য এবং নীতি সংক্রান্ত তথ্য প্রদান করতে আপনি Content ID API ব্যবহার করতে পারেন। (লাইভ ভিডিও ব্রডকাস্ট হল অ্যাসেটের একটি উদাহরণ।) এছাড়াও, API আপনাকে ভিডিও দাবি করতে এবং আপনার ভিডিওর জন্য বিজ্ঞাপন নীতি সেট করতে দেয়।

এই বিভাগে Content ID API-এ অনুরোধ করার জন্য অনুমোদনের প্রয়োজনীয়তা ব্যাখ্যা করা হয়েছে, যা অন্যান্য Live Streaming API অনুরোধ অনুমোদনের প্রয়োজনীয়তা থেকে আলাদা।

Data API-এ কল করা হচ্ছে
যে Google অ্যাকাউন্ট ব্রডকাস্ট করা YouTube চ্যানেলের মালিক, সেটির মাধ্যমে API অনুরোধ অনুমোদিত হতে হবে।
Content ID API-এ কল করা হচ্ছে
API অনুরোধটি অবশ্যই একটি Google অ্যাকাউন্ট দ্বারা অনুমোদিত হতে হবে যা সম্প্রচারকারী YouTube চ্যানেলের মালিক কন্টেন্ট মালিকের সাথে লিঙ্ক করা আছে।

রিসোর্স ও রিসোর্সের ধরন

রিসোর্স হল অনন্য শনাক্তকারী সহ স্বতন্ত্র ডেটা এন্টিটি। নিচের সারণীতে বিভিন্ন ধরনের রিসোর্স সম্পর্কে বর্ণনা করা হয়েছে যেগুলির সাথে আপনি Live Streaming API ব্যবহার করে ইন্টার‍্যাক্ট করবেন। টেকনিক্যালি, এইসব রিসোর্সকে YouTube Data API অথবা YouTube Content ID API-এর অংশ হিসেবেই আসলে ডিফাইন করা হয়। তবে, liveBroadcast, liveStream এবং cuepoint রিসোর্স শুধুমাত্র লাইভ ইভেন্ট তৈরি ও ম্যানেজ করার জন্য ব্যবহার করা হয়।

রিসোর্স
liveBroadcast আপনি YouTube-এ সম্প্রচার করছেন এমন কোনও ইভেন্ট সম্পর্কে তথ্য থাকে। liveBroadcast রিসোর্স হল YouTube ভিডিও রিসোর্সের এক্সটেনশন এবং এটি ভিডিও মেটাডেটা সেট করে যা লাইভ ব্রডকাস্টের ক্ষেত্রে প্রাসঙ্গিক হলেও অন্যান্য YouTube ভিডিওর ক্ষেত্রে নয়।

এই কারণে, একটি liveBroadcast রিসোর্স ঠিক একটি YouTube ভিডিও রিসোর্সের সাথে সম্পর্কিত। আসলে, liveBroadcast রিসোর্স ও video রিসোর্সের আইডি একই। লাইভ স্ট্রিমিং API ব্যবহার করে ব্রডকাস্ট তৈরি করার পরে, আপনি YouTube Data API ব্যবহার করে ভিডিও সম্পর্কে অতিরিক্ত মেটাডেটা প্রদান করতে পারেন।
liveStream আপনি YouTube-এ যে ভিডিও স্ট্রিম ট্রান্সমিট করছেন সেই সম্পর্কে তথ্য থাকে। স্ট্রিম YouTube ব্যবহারকারীদের সম্প্রচার করা হবে এমন কন্টেন্ট প্রদান করে। তৈরি করা হয়ে গেলে, একটি liveStream রিসোর্স ঠিক একটি liveBroadcast রিসোর্সের সাথে বাউন্ড করা যেতে পারে। একইভাবে, liveBroadcast রিসোর্স শুধুমাত্র একটি liveStream রিসোর্সের সাথে বাউন্ড করা যেতে পারে।
cuepoint ব্রডকাস্ট ভিডিও স্ট্রিমে একটি কিউপয়েন্ট যোগ করে, যা বিজ্ঞাপন বিরতি ট্রিগার করতে পারে। ব্রডকাস্ট চলাকালীন কিউপয়েন্ট যোগ করতে liveBroadcasts.cuepoint পদ্ধতি ব্যবহার করুন।
video একটি YouTube ভিডিওকে বোঝায়। উপরে যেমন উল্লেখ করা হয়েছে, liveBroadcast রিসোর্স হল video রিসোর্সের এক্সটেনশন। ভিডিওর মেটাডেটা আপডেট করতে আপনি YouTube Data API ব্যবহার করতে পারেন, যেমন রেকর্ডিং লোকেশন বা কোন কোন অঞ্চলে সম্প্রচার দেখা যাবে।
videoAdvertisingOptions কোনও ভিডিওর (বা ব্রডকাস্টের) জন্য বিজ্ঞাপন সেটিংস নির্ধারণ করে। আপনি YouTube Content ID API ব্যবহার করে বিজ্ঞাপন সংক্রান্ত বিকল্প সেট করেন।
asset মেধা সম্পত্তির একটি অংশকে উপস্থাপিত করে, যেমন কোনও সিনেমা বা কোনও শোয়ের পর্ব। এই ক্ষেত্রে, ব্রডকাস্ট ভিডিওটি হল অ্যাসেট। আপনি asset রিসোর্স তৈরি ও ম্যানেজ করতে YouTube Content ID API ব্যবহার করবেন।
claim ভিডিওর সাথে মিলে যাওয়া অ্যাসেটের লিঙ্ক। আপনি YouTube Content ID API ব্যবহার করে একটি দাবি তৈরি করেন, যাতে সম্প্রচার করা ভিডিওর মালিক হিসেবে নিজেকে শনাক্ত করতে পারেন।
policy এমন নিয়ম নির্ধারণ করে যা সেইসব পরিস্থিতি নির্দিষ্ট করে যার অধীনে আপনি চান যে আপনার কন্টেন্ট YouTube-এ দেখা যাবে বা YouTube-এ দেখানো থেকে ব্লক করা হবে। আপনার ব্রডকাস্ট ভিডিওতে একটি নীতি প্রয়োগ করতে হবে এবং আপনি এমন একটি নীতিও নির্দিষ্ট করতে পারেন যা YouTube আপনার ব্রডকাস্ট ভিডিওর সাথে মিলে যাওয়া ব্যবহারকারীর আপলোড করা ভিডিওতে প্রয়োগ করবে।

যেসব অপারেশন কাজ করে

API যেসব আলাদা আলাদা পদ্ধতি মেনে চলে তা নিচের সারণীতে দেখানো হয়েছে:

অপারেশন
list শূন্য বা তার বেশি রিসোর্সের (GET) তালিকা রিট্রিভ করে।
insert নতুন রিসোর্স (POST) তৈরি করে।
update আপনার অনুরোধে থাকা ডেটা দেখানোর জন্য আগে থেকে থাকা রিসোর্স পরিবর্তন করে (PUT)।
bind liveBroadcast রিসোর্সের সাথে liveStream রিসোর্স লিঙ্ক করে অথবা এই ধরনের লিঙ্ক সরিয়ে দেয়।
transition liveBroadcast রিসোর্সের স্ট্যাটাস পরিবর্তন করে এবং নতুন স্ট্যাটাসের সাথে সম্পর্কিত যেকোনও প্রসেস শুরু করে। যেমন, আপনি কোনও ব্রডকাস্টের স্ট্যাটাস testing হিসেবে পরিবর্তন করলে, YouTube সেই ব্রডকাস্টের মনিটর স্ট্রিমে ভিডিও ট্রান্সমিট করা শুরু করে।
delete নির্দিষ্ট রিসোর্স (DELETE) সরিয়ে দেয়।

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

কাজ করে এমন অপারেশন
list insert update bind transition cuepoint delete
liveBroadcast
liveStream

আংশিক রিসোর্স

API আংশিক রিসোর্স ফিরিয়ে আনার অনুমতি দেয় এবং আসলে এর প্রয়োজন হয়, যাতে অ্যাপ্লিকেশন অপ্রয়োজনীয় ডেটা ট্রান্সফার, পার্স ও স্টোর করা এড়াতে পারে। এই পদ্ধতিটি আরও নিশ্চিত করে যে API নেটওয়ার্ক, সিপিইউ এবং মেমরি রিসোর্স আরও দক্ষতার সাথে ব্যবহার করে।

YouTube Data API রিসোর্স পাওয়া বা রিটার্ন করার জন্য যেকোনও API অনুরোধের ক্ষেত্রে part প্যারামিটার হল একটি প্রয়োজনীয় প্যারামিটার। এই প্যারামিটারটি এক বা একাধিক টপ-লেভেল (নেস্ট করা নয়) রিসোর্স প্রপার্টি শনাক্ত করে যা API-এর উত্তরে অন্তর্ভুক্ত করা উচিত। যেমন, liveStream রিসোর্সে নিম্নলিখিত অংশগুলি থাকে:

  • snippet
  • cdn
  • status

এইসব অংশের সবকটিই হল অবজেক্ট যাতে নেস্টেড প্রপার্টি থাকে এবং আপনি এইসব অবজেক্টকে মেটাডেটা ফিল্ডের গ্রুপ হিসেবে ভাবতে পারেন যা API সার্ভার ফিরিয়ে আনতে পারে (বা নাও পারে)। তাই, part প্যারামিটারের জন্য আপনাকে সেইসব রিসোর্স কম্পোনেন্ট বেছে নিতে হবে যা আপনার অ্যাপ্লিকেশন বাস্তবে ব্যবহার করে। এই প্রয়োজনীয়তা দুটি গুরুত্বপূর্ণ উদ্দেশ্য পূরণ করে:

  • আপনার অ্যাপ্লিকেশন ব্যবহার করে না এমন মেটাডেটা ফিল্ড রিট্রিভ করার জন্য API সার্ভারকে সময় ব্যয় করা থেকে বাধা দিয়ে এটি লেটেন্সি কমিয়ে দেয়।
  • আপনার অ্যাপ্লিকেশন যে পরিমাণ অপ্রয়োজনীয় ডেটা ফিরিয়ে আনতে পারে তা কমিয়ে (বা বাদ দিয়ে) এটি ব্যান্ডউইথের ব্যবহার কমায়।

সময়ের সাথে সাথে, রিসোর্স আরও পার্ট যোগ করলে, এইসব সুবিধা শুধু বাড়তেই থাকবে, কারণ আপনার অ্যাপ্লিকেশন নতুন করে যোগ করা প্রপার্টির জন্য অনুরোধ করবে না যা এটি সাপোর্ট করে না।

পরামর্শ ও পেশাদার পদ্ধতি

আপনার কন্টেন্ট দাবি করা

আপনি ব্রডকাস্টের সময় বিজ্ঞাপন দেখাতে চাইলে, ইভেন্ট শুরু হওয়ার আগে ব্রডকাস্ট ভিডিও দাবি করতে হবে। কন্টেন্ট দাবি করতে, আপনাকে Content ID প্রোগ্রামে অংশগ্রহণকারী একজন YouTube কন্টেন্ট পার্টনার হতে হবে।

ভিডিও দাবি করার সাধারণ প্রসেসের থেকে আপনার লাইভ ব্রডকাস্ট ভিডিও দাবি করার প্রসেস আলাদা। লাইভ ভিডিওর ক্ষেত্রে দাবি করার সময়, ভিডিওটি বাস্তবে তৈরি হওয়ার আগেই আপনাকে দাবি তৈরি করতে হবে। API এটি সমর্থন করে এবং ব্রডকাস্টের লাইফ ডকুমেন্ট YouTube Content ID API কল ব্যাখ্যা করে যা আপনাকে দাবি তৈরি করতে দেয়।

আপনার কন্টেন্ট প্রিভিউ ও পরীক্ষা করা

আপনার ইনবাউন্ড ভিডিও স্ট্রিম পাওয়ার পরে, YouTube সেই ভিডিও দুটি আলাদা আউটবাউন্ড স্ট্রিমে ব্রডকাস্ট করতে পারে:

  • মনিটর স্ট্রিম আপনাকে ভিডিও ব্রডকাস্টের প্রিভিউ (ও পরীক্ষা) দেখতে দেয়। এটি একটি ব্যক্তিগত স্ট্রিম যা শুধুমাত্র আপনিই অ্যাক্সেস করতে পারবেন। ব্রডকাস্টের মনিটর স্ট্রিম চালু থাকলে তবেই আপনি ব্রডকাস্টকে testing ফেজে ট্রানজিশন করতে পারবেন। মনিটর স্ট্রিমে বিজ্ঞাপন বিরতি দেখানো হয় না।

  • ব্রডকাস্ট স্ট্রিম হল সেই স্ট্রিম যা আপনার দর্শকরা দেখতে পান। আপনি ব্রডকাস্টের গোপনীয়তা স্ট্যাটাস public, private অথবা unlisted হিসেবে সেট করতে পারবেন। (কোনও ব্যক্তিগত ব্রডকাস্ট শুধুমাত্র সেইসব ব্যবহারকারী দেখতে পান যাদের এটি দেখার জন্য স্পষ্টভাবে আমন্ত্রণ জানানো হয়েছে, অন্যদিকে তালিকাভুক্ত নয় এমন ব্রডকাস্টের লিঙ্ক থাকলে যেকেউ সেটি দেখতে পান।)

    আপনি ব্রডকাস্ট স্ট্রিম দেরিতে শুরু করার বিকল্প বেছে নিতে পারেন যাতে এটি মনিটর স্ট্রিমের সাথে একই সময়ে না চলে। ব্রডকাস্ট স্ট্রিম বিলম্বিত করার মাধ্যমে, আপনি ব্রডকাস্টে কিউপয়েন্ট যোগ করার সময়ের উপর আরও সূক্ষ্ম নিয়ন্ত্রণ পেতে পারেন।

    তবে, ব্রডকাস্ট স্ট্রিম ডিলে করলে, আপনার লাইভ প্রেজেন্টারদের পক্ষে দর্শকদের সাথে ইন্টার‍্যাক্ট করা কঠিন হয়ে যায়। এছাড়াও, সম্প্রচারে দেরি করলে, দর্শকরা আপনার সম্প্রচার ছাড়া অন্য সোর্স থেকে ইভেন্ট সম্পর্কিত গুরুত্বপূর্ণ বিবরণ জেনে ফেলতে পারেন। যেমন, আপনি যদি ৬০ সেকেন্ডের বিলম্ব সহ কোনও স্পোর্টিং ইভেন্ট ব্রডকাস্ট করেন, তাহলে দর্শকরা ব্রডকাস্টে দেখার আগেই অন্যান্য রিয়েল-টাইম খবরের সোর্স থেকে ইভেন্টের গুরুত্বপূর্ণ মুহূর্তগুলি সম্পর্কে জানতে পারবেন।

YouTube সাজেস্ট করে যে আপনি নিজের ব্রডকাস্টের জন্য মনিটর স্ট্রিম চালু করুন যাতে আপনি নিজের কন্টেন্ট পরীক্ষা করতে পারেন। আপনার দর্শকদের সাথে ইন্টার‍্যাক্ট করা বা কোনও ইভেন্টের রিয়েল-টাইম কভারেজ প্রদান করার ইচ্ছার বিপরীতে কিউপয়েন্টের টাইমিং নিয়ন্ত্রণ করার ইচ্ছার উপর ভিত্তি করে আপনার ব্রডকাস্টে দেরি করবেন কিনা তা বেছে নিতে হবে।

ব্রডকাস্ট স্ট্রিম চলাকালীন মিড-রোল বিজ্ঞাপন দেখানো

সম্প্রচার চলাকালীন, আপনি একটি cuepoint যোগ করতে পারেন যা নির্দেশ করে যে যত তাড়াতাড়ি সম্ভব বা নির্দিষ্ট সময়ে সম্প্রচারে একটি বিজ্ঞাপন বিরতি শুরু করা উচিত। বিজ্ঞাপন বিরতি YouTube-কে ব্রডকাস্ট চলাকালীন মিডরোল বিজ্ঞাপন চালানোর সুবিধা দেয়।

বিজ্ঞাপন বিরতির নিম্নলিখিত বৈশিষ্ট্য আছে:

  1. এটির আগে থেকেই নির্ধারিত সময়সীমা আছে, যা আপনি cuepoint রিসোর্সের durationSecs প্রপার্টি ব্যবহার করে সেট করেন। বিজ্ঞাপন বিরতি শেষ হওয়ার পরে, দর্শকরা লাইভ সম্প্রচারে ফিরে আসেন।

  2. বিজ্ঞাপন বিরতি হলে, কিউপয়েন্ট যোগ করার সময় যেসব দর্শক সম্প্রচার দেখছেন, ভিডিও প্লেয়ারে শুধুমাত্র তাদের জন্যই একটি বিজ্ঞাপন চালানো হয়। যে পৃষ্ঠায় ব্রডকাস্ট চলছে সেটি দর্শক রিফ্রেশ করলে অথবা কিউপয়েন্ট যোগ করার পরে দর্শক ব্রডকাস্ট দেখা শুরু করলে বিজ্ঞাপন দেখানো হয় না।

আপনার ব্রডকাস্ট চলাকালীন বিজ্ঞাপন বিরতি যোগ করার জন্য পেশাদার পদ্ধতি নিচে উল্লেখ করা ধাপের ক্রম থেকে বোঝা যায়:

টাইম অফসেট সেট করা

কিউপয়েন্ট যোগ করার সময়, আপনি নির্দিষ্ট করতে পারেন যে এটি এখনই যোগ করা উচিত নাকি ব্রডকাস্টের কোনও নির্দিষ্ট পয়েন্টে যোগ করা উচিত। আপনার ভিডিওর ব্রডকাস্ট স্ট্রিম দেরিতে শুরু হয়েছে কিনা তার উপর নির্ভর করে আপনার বিকল্পগুলি নির্ধারিত হয়।

  • আপনার ব্রডকাস্ট স্ট্রিমে দেরি না হলে, আপনি অবিলম্বে কিউপয়েন্ট যোগ করতে পারেন অথবা walltimeMs প্রপার্টি ব্যবহার করে বিজ্ঞাপন বিরতি নির্দিষ্ট সময়ে শুরু করতে পারেন।

    • অবিলম্বে বিজ্ঞাপন বিরতি শুরু করতে, liveBroadcasts.cuepoint মেথড কল করুন। অনুরোধের বডিতে থাকা রিসোর্সে, insertionOffsetTimeMs প্রপার্টির ভ্যালু 0 হিসেবে সেট করুন অথবা সেই প্রপার্টির জন্য কোনও ভ্যালু নির্দিষ্ট করবেন না এবং walltimeMs প্রপার্টির জন্য কোনও ভ্যালু নির্দিষ্ট করবেন না।

      গুরুত্বপূর্ণ: মনে রাখবেন, দর্শকরা সাথে সাথে বিজ্ঞাপনের কন্টেন্ট দেখতে পান না। বিজ্ঞাপনের কন্টেন্ট ব্যবহারকারীদের কাছে দৃশ্যমান হওয়ার আগে প্রায় ৩০ সেকেন্ডের বিলম্ব হতে পারে। এই বিলম্বের সময় আপনার ব্রডকাস্ট স্ট্রিম আপনার দর্শকদের কাছে দৃশ্যমান থাকবে এবং আপনার মনিটর স্ট্রিমের পরিবর্তে বিজ্ঞাপন কন্টেন্ট আসলে কখন দেখানো হচ্ছে তা নির্ধারণ করতে আপনাকে ব্রডকাস্ট স্ট্রিম দেখতে হবে।

    • কোনও নির্দিষ্ট সময়ে বিজ্ঞাপন বিরতি শুরু করতে, liveBroadcasts.cuepoint মেথড কল করুন এবং walltimeMs প্রপার্টি ব্যবহার করে কাঙ্খিত সময় নির্দিষ্ট করুন। প্রপার্টির ভ্যালু হল একটি পূর্ণসংখ্যা যা একটি যুগ টাইমস্ট্যাম্পকে উপস্থাপন করে।

  • আপনার ব্রডকাস্ট স্ট্রিম দেরিতে শুরু হলে, আপনি উপরে যেভাবে বর্ণনা করা হয়েছে সেইভাবে অবিলম্বে কিউপয়েন্ট যোগ করতে পারেন, উপরে যেভাবে বর্ণনা করা হয়েছে সেইভাবে ঘড়ির সময় নির্দিষ্ট করতে পারেন অথবা বিজ্ঞাপন বিরতি কখন শুরু হবে তা নির্ধারণ করতে আপনি টাইম অফসেট নির্দিষ্ট করতে পারেন। টাইম অফসেট আপনার ব্রডকাস্টের এমন একটি পয়েন্ট নির্দিষ্ট করে যেখানে দর্শকরা বিজ্ঞাপন দেখতে পাবেন।

    আপনার ব্রডকাস্টের জন্য মনিটর স্ট্রিম শুরু হওয়ার সময় থেকে অফসেট ভ্যালু মিলি সেকেন্ডে মাপ করা হয়। মনে রাখবেন, আপনার ব্রডকাস্টে টেস্টিং ফেজ থাকলে, ব্রডকাস্ট testing স্ট্যাটাসে ট্রানজিশন করার সময় মনিটর স্ট্রিম শুরু হয়। অন্যথায়, আপনার ব্রডকাস্ট live স্ট্যাটাসে পরিবর্তিত হলে মনিটর স্ট্রিম শুরু হয়।

    কিউপয়েন্ট যোগ করার সময়, cuepoint রিসোর্সের insertionOffsetTimeMs প্রপার্টিকে কাঙ্ক্ষিত অফসেটে সেট করুন।

টাইম অফসেট ভ্যালু গণনা করা

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

অফসেট সময়ের সম্ভাব্য ভ্যালু নিম্নলিখিত রেঞ্জ হিসেবে গণনা করা যেতে পারে:

[(elapsed_time - broadcast_delay + Δ), (elapsed_time - Δ)]

YouTube যখন সঠিকভাবে কিউপয়েন্ট যোগ করতে পারে না, তখন সম্ভাব্য টাইম অফসেটের শুরুতে ও শেষে Δ হল পাঁচ সেকেন্ডের বাফার। যেমন:

  • ব্রডকাস্টে পাঁচ মিনিটের একটি টেস্টিং ফেজ থাকে।
  • মনিটর স্ট্রিমের ৬০ সেকেন্ড পরে ব্রডকাস্ট স্ট্রিম শুরু হয়।
  • ব্রডকাস্টার, ব্রডকাস্টটি live স্ট্যাটাসে পরিবর্তন হওয়ার চার মিনিট পরে কিউপয়েন্ট যোগ করছেন। (সম্প্রচার স্ট্রিম দেখা যাওয়ার তিন মিনিট পরে।)

এই ক্ষেত্রে, অফসেট সময়ের সম্ভাব্য রেঞ্জ হল [(485,000), (535,000)]।

এই সময় মিলিসেকেন্ডে উল্লেখ করা হয় এবং নিম্নলিখিত ভ্যালু ব্যবহার করে গণনা করা হয়:

  • elapsed_time=540000 – liveBroadcasts.cuepoint পদ্ধতি কল করার সময় মনিটর স্ট্রিম নয় মিনিট (৫৪০ সেকেন্ড, ৫৪০০০০ মিলিসেকেন্ড) ধরে চলছে।
  • broadcast_delay=60000 – ব্রডকাস্ট স্ট্রিম ৬০ সেকেন্ড বা ৬০, ০০০ মিলিসেকেন্ড দেরিতে চলছে।
  • Δ=5000 – কিউপয়েন্ট নির্ভরযোগ্যভাবে যোগ করা না গেলে পাঁচ সেকেন্ডের বাফার।

সমস্যার সমাধান ও সমস্যা ম্যানেজ করা

নির্দিষ্ট কোনও সমস্যা দেখা দিলে তা কীভাবে সমাধান করবেন তা নিম্নলিখিত নির্দেশিকায় ব্যাখ্যা করা হয়েছে। প্রতিটি API পদ্ধতি থেকে পাওয়া যেতে পারে এমন সমস্যার তালিকা দেখতে, YouTube Live Streaming API - সমস্যা দেখুন।

  • কোনও ব্রডকাস্ট একটি স্ট্যাটাস থেকে অন্য স্ট্যাটাসে পরিবর্তিত হলে, YouTube ট্রানজিশনের সাথে সম্পর্কিত অ্যাকশন সম্পূর্ণ করার সময় সাময়িকভাবে অন্য স্ট্যাটাস অ্যাসাইন করা হতে পারে। যেমন, আপনি যদি কোনও ব্রডকাস্টের স্ট্যাটাস ready থেকে testing-এ পরিবর্তন করার জন্য liveBroadcasts.transition অনুরোধ পাঠান, তাহলে YouTube ব্রডকাস্টের স্ট্যাটাস testStarting-এ সেট করবে এবং তারপরে স্ট্যাটাস পরিবর্তনের সাথে সম্পর্কিত অ্যাকশন সম্পূর্ণ করবে। এইসব অ্যাকশন সম্পূর্ণ হয়ে গেলে, YouTube ব্রডকাস্টের স্ট্যাটাস আপডেট করে testing করে দেবে, যার অর্থ হল ট্রানজিশন সম্পূর্ণ হয়েছে।

    কোনও ব্রডকাস্ট testStarting বা liveStarting স্ট্যাটাসে আটকে গেলে, আপনাকে liveBroadcasts.delete মেথড কল করে ব্রডকাস্টটি মুছে দিতে হবে। তারপর একটি নতুন ব্রডকাস্ট তৈরি করুন, এটি আপনার লাইভস্ট্রিমের সাথে বাইন্ড করুন এবং পরীক্ষা করার প্রসেস চালিয়ে যান।

    liveBroadcasts.transition পদ্ধতির ডকুমেন্টেশনে যেমন উল্লেখ করা হয়েছে, সেই পদ্ধতি কল করার আগে আপনার ব্রডকাস্টের সাথে বাউন্ড করা স্ট্রিমের জন্য status.streamStatus প্রপার্টির ভ্যালু active কিনা তা কনফার্ম করতে হবে।