LiveStreams

liveStream রিসোর্সে YouTube-এ ট্রান্সমিট করা ভিডিও স্ট্রিম সম্পর্কে তথ্য থাকে। YouTube ব্যবহারকারীদের কাছে সম্প্রচার করা হবে এমন কন্টেন্ট স্ট্রিম প্রদান করে। তৈরি করা হয়ে গেলে, একটি liveStream রিসোর্স এক বা একাধিক liveBroadcast রিসোর্সের সাথে যুক্ত করা যেতে পারে।

পদ্ধতি

API, liveStreams রিসোর্সের জন্য নিম্নলিখিত পদ্ধতিগুলি সমর্থন করে:

তালিকা
API অনুরোধের প্যারামিটারের সাথে ম্যাচ করে এমন ভিডিও স্ট্রিমের তালিকা রিটার্ন করে। এখনই এটি ব্যবহার করে দেখুন।
যোগ করুন
ভিডিও স্ট্রিম তৈরি করে। স্ট্রিমের মাধ্যমে আপনি YouTube-এ ভিডিও পাঠাতে পারেন, যা পরে আপনার দর্শকদের কাছে ব্রডকাস্ট করা যেতে পারে। এখনই এটি ব্যবহার করে দেখুন।
আপডেট
ভিডিও স্ট্রিম আপডেট করে। আপনি যে প্রপার্টি পরিবর্তন করতে চান সেটি আপডেট করা না গেলে, আপনাকে সঠিক সেটিংস সহ নতুন স্ট্রিম তৈরি করতে হবে। এখনই এটি ব্যবহার করে দেখুন।
মুছে ফেলুন
ভিডিও স্ট্রিম মুছে দেয়। এখনই এটি ব্যবহার করে দেখুন।

রিসোর্স রিপ্রেজেন্টেশন

নিচে দেওয়া JSON স্ট্রাকচার থেকে liveStreams রিসোর্সের ফর্ম্যাট সম্পর্কে জানা যায়:

{
  "kind": "youtube#liveStream",
  "etag": etag,
  "id": string,
  "snippet": {
    "publishedAt": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "isDefaultStream": boolean
  },
  "cdn": {
    "ingestionType": string,
    "ingestionInfo": {
      "streamName": string,
      "ingestionAddress": string,
      "backupIngestionAddress": string
    },
    "resolution": string,
    "frameRate": string
  },
  "status": {
    "streamStatus": string,
    "healthStatus": {
      "status": string,
      "lastUpdateTimeSeconds": unsigned long,
      "configurationIssues": [
        {
          "type": string,
          "severity": string,
          "reason": string,
          "description": string
        }
      ]
    }
  },
  "contentDetails": {
    "closedCaptionsIngestionUrl": string,
    "isReusable": boolean
  }
}

প্রপার্টি

নিম্নলিখিত সারণীতে এই রিসোর্সে দেখানো প্রপার্টিগুলি সংজ্ঞায়িত করা হয়েছে:

প্রপার্টি
kind string
API রিসোর্সের ধরন শনাক্ত করে। ভ্যালু youtube#liveStream হবে।
etag etag
এই রিসোর্সের Etag.
id string
স্ট্রিমকে অনন্যভাবে শনাক্ত করার জন্য YouTube যে আইডি অ্যাসাইন করে।
snippet object
snippet অবজেক্টে স্ট্রিম সম্পর্কে প্রাথমিক বিবরণ থাকে, যার মধ্যে চ্যানেল, শীর্ষক ও বিবরণ অন্তর্ভুক্ত।
snippet.publishedAt datetime
স্ট্রিম তৈরির তারিখ ও সময়। ভ্যালু ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) ফর্ম্যাটে উল্লেখ করা হয়েছে।
snippet.channelId string
যে চ্যানেল স্ট্রিম ট্রান্সমিট করছে সেটিকে অনন্যভাবে শনাক্ত করতে YouTube যে আইডি ব্যবহার করে।
snippet.title string
স্ট্রিমের শীর্ষক। মান অবশ্যই ১ থেকে ১২৮টি অক্ষরের মধ্যে হতে হবে।
snippet.description string
স্ট্রিমের বিবরণ। মান ১০০০০ অক্ষরের বেশি হলে চলবে না।
snippet.isDefaultStream boolean
১ সেপ্টেম্বর, ২০২০ বা তার পরে এই প্রপার্টি বন্ধ করে দেওয়া হবে। সেই সময়, কোনও চ্যানেল লাইভ স্ট্রিমিংয়ের জন্য চালু করা হলে, YouTube ডিফল্ট স্ট্রিম ও ডিফল্ট ব্রডকাস্ট তৈরি করা বন্ধ করে দেবে। আরও বিবরণের জন্য বন্ধ করা সংক্রান্ত ঘোষণা দেখুন।
এই প্রপার্টি থেকে বোঝা যায় যে এই স্ট্রিমটি চ্যানেলের ডিফল্ট স্ট্রিম কিনা।

ডিফল্ট স্ট্রিম কীভাবে কাজ করে

কোনও YouTube চ্যানেলে লাইভ স্ট্রিমিং চালু করা হলে, YouTube সেই চ্যানেলের জন্য একটি ডিফল্ট স্ট্রিম ও ডিফল্ট ব্রডকাস্ট তৈরি করে। চ্যানেলের মালিক কীভাবে YouTube-এ লাইভ ভিডিও পাঠান তা স্ট্রিম থেকে বোঝা যায় এবং দর্শকরা কীভাবে ডিফল্ট স্ট্রিম দেখতে পান তা ব্রডকাস্ট থেকে বোঝা যায়। চ্যানেলের মালিক liveStreams.list এবং liveBroadcasts.list পদ্ধতি ব্যবহার করে এইসব রিসোর্স শনাক্ত করতে পারবেন।

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

স্ট্রিম শেষ হলে, YouTube সম্পূর্ণ ব্রডকাস্টকে YouTube ভিডিওতে কনভার্ট করে এবং ভিডিওটিকে একটি YouTube ভিডিও আইডি অ্যাসাইন করে। কনভার্ট করা হয়ে গেলে, ভিডিওটি চ্যানেলের আপলোড করা ভিডিওর তালিকায় যোগ করা হয়। ব্রডকাস্ট শেষ হওয়ার সাথে সাথেই ভিডিওটি উপলভ্য হয় না এবং ব্রডকাস্টের প্রকৃত দৈর্ঘ্যের উপর নির্ভর করে ভিডিওটি উপলভ্য হতে কতটা দেরি হবে।
cdn object
cdn অবজেক্টটি লাইভ স্ট্রিমের কন্টেন্ট ডেলিভারি নেটওয়ার্ক (CDN) সেটিংসকে সংজ্ঞায়িত করে। এইসব সেটিংস থেকে আপনি YouTube-এ কীভাবে কন্টেন্ট স্ট্রিম করেন সেই সম্পর্কে বিস্তারিত তথ্য পাবেন।
cdn.format string
এই প্রপার্টি ১৮ এপ্রিল, ২০১৬ থেকে বন্ধ করে দেওয়া হয়েছে এবং ১৭ আগস্ট, ২০২০ থেকে আর কাজ করবে না। সেই তারিখের পরেও যেসব অনুরোধে এই প্রপার্টি ব্যবহার করা হবে, সেগুলি কাজ করবে না।

পরিবর্তে, ফ্রেম রেট এবং রেজোলিউশন আলাদাভাবে উল্লেখ করতে cdn.frameRate এবং cdn.resolution প্রপার্টি ব্যবহার করুন।
cdn.ingestionType string
ভিডিও স্ট্রিম ট্রান্সমিট করার জন্য ব্যবহৃত পদ্ধতি বা প্রোটোকল।

এই প্রপার্টির জন্য সঠিক ভ্যালু হল:
  • dash
  • hls
  • rtmp (যার মধ্যে RTMPS অন্তর্ভুক্ত)
cdn.ingestionInfo object
ingestionInfo অবজেক্টে YouTube-এর প্রদান করা তথ্য থাকে যা YouTube-এ আপনার স্ট্রিম ট্রান্সমিট করার জন্য প্রয়োজন।
cdn.ingestionInfo.streamName string
YouTube ভিডিও স্ট্রিমকে যে স্ট্রিমের নাম অ্যাসাইন করে।
cdn.ingestionInfo.ingestionAddress string
আপনি RTMP, DASH বা HLS ব্যবহার করলে, YouTube-এ ভিডিও স্ট্রিম করার জন্য আপনাকে প্রাথমিক ইনজেশন URL ব্যবহার করতে হবে। আপনাকে এই URL-এ ভিডিও স্ট্রিম করতে হবে।

আপনার ভিডিও স্ট্রিম এনকোড করার জন্য আপনি কোন অ্যাপ্লিকেশন বা টুল ব্যবহার করেন তার উপর নির্ভর করে, আপনাকে স্ট্রিম URL এবং স্ট্রিমের নাম আলাদাভাবে লিখতে হতে পারে অথবা আপনাকে নিম্নলিখিত ফর্ম্যাটে সেগুলি একসাথে লিখতে হতে পারে:
STREAM_URL/STREAM_NAME
cdn.ingestionInfo.backupIngestionAddress string
RTMP, DASH বা HLS ব্যবহার করলে, YouTube-এ ভিডিও স্ট্রিম করার জন্য আপনাকে ব্যাক-আপ ইনজেশন URL ব্যবহার করতে হবে। আপনি ingestionAddress-এ যে কন্টেন্ট পাঠাচ্ছেন সেটি একই সাথে এই URL-এ স্ট্রিম করার বিকল্প আপনার কাছে আছে।
cdn.ingestionInfo.rtmpsIngestionAddress string
RTMPS ব্যবহার করলে, YouTube-এ ভিডিও স্ট্রিম করার জন্য আপনাকে যে প্রাথমিক ইনজেশন URL ব্যবহার করতে হবে। আপনাকে এই URL-এ ভিডিও স্ট্রিম করতে হবে।

আপনার ভিডিও স্ট্রিম এনকোড করার জন্য আপনি কোন অ্যাপ্লিকেশন বা টুল ব্যবহার করেন তার উপর নির্ভর করে, আপনাকে স্ট্রিম URL এবং স্ট্রিমের নাম আলাদাভাবে লিখতে হতে পারে অথবা আপনাকে নিম্নলিখিত ফর্ম্যাটে সেগুলি একসাথে লিখতে হতে পারে:
STREAM_URL/STREAM_NAME
cdn.ingestionInfo.rtmpsBackupIngestionAddress string
RTMPS ব্যবহার করলে, YouTube-এ ভিডিও স্ট্রিম করার জন্য আপনাকে ব্যাক-আপ ইনজেশন URL ব্যবহার করতে হবে।
cdn.resolution string
ইনবাউন্ড ভিডিও ডেটার রেজোলিউশন।

এই প্রপার্টির সঠিক ভ্যালু হল:
  • 240p
  • 360p
  • 480p
  • 720p
  • 1080p
  • 1440p
  • 2160p
  • variable: YouTube যাতে আপনার স্ট্রিম করা ভিডিওর রেজোলিউশন অটোমেটিক শনাক্ত করতে পারে, তার জন্য এই সেটিং ব্যবহার করুন। এছাড়াও, আপনাকে cdn.frameRate-এর মান variable হিসেবে সেট করতে হবে।
    সাজেস্ট করা এনকোডার সেটিংস সম্পর্কে জানতে YouTube সহায়তা কেন্দ্র দেখুন।
cdn.frameRate string
ইনবাউন্ড ভিডিও ডেটার ফ্রেম রেট।

এই প্রপার্টির জন্য সঠিক ভ্যালু হল:
  • 30fps
  • 60fps
  • variable: আপনার স্ট্রিম করা ভিডিওর ফ্রেম রেট YouTube যেন অটোমেটিক শনাক্ত করতে পারে তা বোঝাতে এই সেটিং ব্যবহার করুন। এছাড়াও, আপনাকে cdn.resolution-এর মান variable হিসেবে সেট করতে হবে।
    সাজেস্ট করা এনকোডার সেটিংস সম্পর্কে জানতে YouTube সহায়তা কেন্দ্র দেখুন।
status object
status অবজেক্টে লাইভ স্ট্রিমের স্ট্যাটাস সংক্রান্ত তথ্য থাকে।
status.streamStatus string
স্ট্রিমের স্ট্যাটাস।

এই প্রপার্টির জন্য সঠিক ভ্যালু হল:
  • active – স্ট্রিম অ্যাক্টিভ আছে, এর অর্থ হল ব্যবহারকারী স্ট্রিমের মাধ্যমে ডেটা পাচ্ছেন।
  • created – স্ট্রিম তৈরি করা হয়েছে, কিন্তু এতে সঠিক CDN সেটিংস নেই।
  • error – স্ট্রিমে কোনও সমস্যা হয়েছে।
  • inactive – স্ট্রিমটি ইনঅ্যাক্টিভ অবস্থায় আছে, যার অর্থ হল ব্যবহারকারী স্ট্রিমের মাধ্যমে ডেটা পাচ্ছেন না।
  • ready – স্ট্রিমে সঠিক CDN সেটিংস আছে।
status.healthStatus object
এই অবজেক্টে লাইভ স্ট্রিমের স্বাস্থ্য সংক্রান্ত স্ট্যাটাস সম্পর্কে তথ্য থাকে, যা স্ট্রিমিং সংক্রান্ত সমস্যা শনাক্ত, ডায়াগনসিস ও সমাধান করতে ব্যবহার করা যেতে পারে।
status.healthStatus.status string
এই স্ট্রিমের স্ট্যাটাস কোড।

এই প্রপার্টির জন্য সঠিক মান হল:
  • good – কনফিগারেশন সংক্রান্ত এমন কোনও সমস্যা নেই যার সিভিয়ারিটি warning বা তার চেয়ে খারাপ।
  • ok – এমন কোনও কনফিগারেশন সংক্রান্ত সমস্যা নেই যার গুরুত্ব error।
  • bad – স্ট্রিমে কিছু সমস্যা আছে যার জন্য গুরুত্ব হল error।
  • noData – YouTube-এর লাইভ স্ট্রিমিং ব্যাকএন্ড সার্ভারে স্ট্রিমের স্বাস্থ্য সংক্রান্ত স্ট্যাটাস সম্পর্কে কোনও তথ্য নেই।
status.healthStatus.lastUpdateTimeSeconds unsigned long
স্ট্রিমের হেলথ স্ট্যাটাস শেষবার আপডেট করার তারিখ। মানটি সেকেন্ডে UNIX টাইমস্ট্যাম্প দেখায়।
status.healthStatus.configurationIssues[] list
এই অবজেক্টে স্ট্রিমকে প্রভাবিত করা কনফিগারেশন সংক্রান্ত সমস্যার তালিকা রয়েছে।
status.healthStatus.configurationIssues[].type string
স্ট্রিমে কী ধরনের সমস্যা হয়েছে তা শনাক্ত করে।
status.healthStatus.configurationIssues[].severity string
স্ট্রিমে সমস্যাটি কতটা গুরুতর তা নির্দেশ করে।

এই প্রপার্টির জন্য সঠিক ভ্যালু হল:
  • info – ভিডিওটি দর্শকদের কাছে ব্রডকাস্ট করা হয় এবং পারফর্ম্যান্সে কোনও বিরূপ প্রভাব পড়ে না।
  • warning – ভিডিওটি দর্শকদের দেখানো হচ্ছে, কিন্তু পারফর্ম্যান্স অপ্টিমাল নয়।
  • error – ভিডিওটি দর্শকদের কাছে ব্রডকাস্ট করা যাবে না।
status.healthStatus.configurationIssues[].reason string
সমস্যার সংক্ষিপ্ত বিবরণ। লাইভ স্ট্রিম রিসোর্সের জন্য কনফিগারেশন সংক্রান্ত সমস্যা ডকুমেন্ট থেকে প্রতিটি কনফিগারেশন সংক্রান্ত সমস্যার কারণ জানা যায়।
status.healthStatus.configurationIssues[].description string
সমস্যার বিস্তারিত বিবরণ। সম্ভব হলে, বিবরণে কীভাবে সমস্যা সমাধান করতে হয় সেই সম্পর্কে তথ্য দেওয়া থাকে। LiveStream রিসোর্সের জন্য কনফিগারেশন সংক্রান্ত সমস্যা ডকুমেন্টে কনফিগারেশন সংক্রান্ত সমস্যার সব ধরন ও তার সাথে যুক্ত বিবরণ তালিকাভুক্ত করা আছে।
contentDetails object
content_details অবজেক্টে স্ট্রিম সম্পর্কে তথ্য থাকে, যার মধ্যে ক্লোজড ক্যাপশন ইনজেশন URL অন্তর্ভুক্ত।
contentDetails.closedCaptionsIngestionUrl string
ইনজেশন URL যেখানে এই স্ট্রিমের ক্লোজড ক্যাপশন পাঠানো হয়।
contentDetails.isReusable boolean
স্ট্রিমিং আবার ব্যবহার করা যাবে কিনা তা নির্দেশ করে, এর অর্থ হল এটি একাধিক ব্রডকাস্টের সাথে যুক্ত করা যেতে পারে। ব্রডকাস্টাররা সাধারণত একই স্ট্রিম বিভিন্ন ব্রডকাস্টের জন্য ব্যবহার করেন, যদি সেই ব্রডকাস্টগুলি বিভিন্ন সময়ে হয়।

আপনি এই ভ্যালু false হিসেবে সেট করলে, স্ট্রিমটি আর ব্যবহারযোগ্য থাকবে না, অর্থাৎ এটি শুধুমাত্র একটি ব্রডকাস্টের সাথেই যুক্ত করা যাবে। পুনর্ব্যবহারযোগ্য নয় এমন স্ট্রিম, পুনর্ব্যবহারযোগ্য স্ট্রিমের থেকে নিম্নলিখিত উপায়ে আলাদা হয়:
  • আবার ব্যবহার করা যাবে না এমন স্ট্রিম শুধুমাত্র একটি ব্রডকাস্টের সাথে বাউন্ড করা যাবে।
  • সম্প্রচার শেষ হওয়ার পরে অটোমেটিক প্রসেসের মাধ্যমে একবার ব্যবহারযোগ্য স্ট্রিম মুছে দেওয়া হতে পারে।
  • আপনি যদি liveStreams.list মেথড কল করেন এবং mine প্যারামিটারকে true হিসেবে সেট করেন, তাহলে মেথডটি আবার ব্যবহার করা যায় না এমন স্ট্রিমের তালিকা দেখায় না। পুনর্ব্যবহারযোগ্য নয় এমন স্ট্রিমের রিসোর্স রিট্রিভ করার জন্য সেই পদ্ধতি ব্যবহার করার একমাত্র উপায় হল স্ট্রিম শনাক্ত করতে id প্যারামিটার ব্যবহার করা।