সমর্থিত ফরম্যাট

ExoPlayer যে ফর্ম্যাটগুলিকে সমর্থন করে তা সংজ্ঞায়িত করার সময়, এটি মনে রাখা গুরুত্বপূর্ণ যে "মিডিয়া ফর্ম্যাট" একাধিক স্তরে সংজ্ঞায়িত করা হয়। সর্বনিম্ন স্তর থেকে সর্বোচ্চ স্তর পর্যন্ত, এগুলি হল:

  • পৃথক মিডিয়া নমুনার ফর্ম্যাট (যেমন ভিডিওর ফ্রেম বা অডিওর ফ্রেম)। এগুলি নমুনা ফর্ম্যাট । মনে রাখবেন যে একটি সাধারণ ভিডিও ফাইলে কমপক্ষে দুটি নমুনা ফর্ম্যাটের মিডিয়া থাকবে; একটি ভিডিওর জন্য (উদাহরণস্বরূপ, H.264) এবং একটি অডিওর জন্য (উদাহরণস্বরূপ, AAC)।
  • মিডিয়া নমুনা এবং সংশ্লিষ্ট মেটাডেটা ধারণকারী কন্টেইনারের ফর্ম্যাট। এগুলি হল কন্টেইনার ফর্ম্যাট । একটি মিডিয়া ফাইলের একটি একক কন্টেইনার ফর্ম্যাট থাকে (উদাহরণস্বরূপ, MP4), যা সাধারণত ফাইল এক্সটেনশন দ্বারা নির্দেশিত হয়। মনে রাখবেন যে কিছু অডিও-কেবল ফর্ম্যাটের জন্য (উদাহরণস্বরূপ, MP3), নমুনা এবং কন্টেইনার ফর্ম্যাট একই হতে পারে।
  • DASH, SmoothStreaming এবং HLS এর মতো অভিযোজিত স্ট্রিমিং প্রযুক্তি। এগুলি মিডিয়া ফর্ম্যাট নয়, তবে ExoPlayer কোন স্তরের সহায়তা প্রদান করে তা নির্ধারণ করা এখনও প্রয়োজন।

নিম্নলিখিত বিভাগগুলি সর্বোচ্চ থেকে সর্বনিম্ন পর্যন্ত প্রতিটি স্তরে ExoPlayer-এর সমর্থনকে সংজ্ঞায়িত করে। শেষ দুটি বিভাগ স্বতন্ত্র সাবটাইটেল ফর্ম্যাট এবং HDR ভিডিও প্লেব্যাকের জন্য সমর্থন বর্ণনা করে।

অভিযোজিত স্ট্রিমিং

ড্যাশ

ExoPlayer একাধিক কন্টেইনার ফর্ম্যাট সহ DASH সমর্থন করে। মিডিয়া স্ট্রিমগুলিকে অবশ্যই ডিমাক্স করতে হবে, অর্থাৎ ভিডিও, অডিও এবং টেক্সটকে DASH ম্যানিফেস্টে স্বতন্ত্র AdaptationSet উপাদানগুলিতে সংজ্ঞায়িত করতে হবে (নীচের টেবিলে বর্ণিত CEA-608 একটি ব্যতিক্রম)। অন্তর্ভুক্ত অডিও এবং ভিডিও নমুনা ফর্ম্যাটগুলিও সমর্থিত হতে হবে (বিস্তারিত জানার জন্য নমুনা ফর্ম্যাট বিভাগটি দেখুন)।

বৈশিষ্ট্য সমর্থিত মন্তব্য
পাত্র
এফএমপি৪ হ্যাঁ শুধুমাত্র ডিমাক্স করা স্ট্রিম
ওয়েবএম হ্যাঁ শুধুমাত্র ডিমাক্স করা স্ট্রিম
মাত্রোস্কা হ্যাঁ শুধুমাত্র ডিমাক্স করা স্ট্রিম
এমপিইজি-টিএস না কোনও সহায়তার পরিকল্পনা নেই
ক্লোজড ক্যাপশন / সাবটাইটেল
টিটিএমএল হ্যাঁ কাঁচা, অথবা ISO/IEC 14496-30 অনুসারে FMP4-তে এমবেড করা
ওয়েবভিটিটি হ্যাঁ কাঁচা, অথবা ISO/IEC 14496-30 অনুসারে FMP4-তে এমবেড করা
সিইএ-৬০৮ হ্যাঁ SCTE অ্যাক্সেসিবিলিটি বর্ণনাকারী ব্যবহার করে সিগন্যাল করার সময় FMP4 এ এমবেড করা হয়
সিইএ-৭০৮ হ্যাঁ SCTE অ্যাক্সেসিবিলিটি বর্ণনাকারী ব্যবহার করে সিগন্যাল করার সময় FMP4 এ এমবেড করা হয়
মেটাডেটা
EMSG মেটাডেটা হ্যাঁ FMP4 এ এমবেড করা হয়েছে
কন্টেন্ট সুরক্ষা
ওয়াইডভাইন হ্যাঁ "cenc" স্কিম: API 19+; "cbcs" স্কিম: API 25+
PlayReady SL2000 সম্পর্কে হ্যাঁ অ্যান্ড্রয়েড টিভি, শুধুমাত্র "cenc" স্কিম
ক্লিয়ারকি হ্যাঁ API 21+, শুধুমাত্র "cenc" স্কিম
বিজ্ঞাপন সন্নিবেশ
মাল্টি-পিরিয়ড প্লেব্যাক হ্যাঁ
সার্ভার-নির্দেশিত বিজ্ঞাপন সন্নিবেশ (xlinks) না
IMA সার্ভার-সাইড এবং ক্লায়েন্ট-সাইড বিজ্ঞাপন হ্যাঁ বিজ্ঞাপন সন্নিবেশ নির্দেশিকা
লাইভ প্লেব্যাক
নিয়মিত লাইভ প্লেব্যাক হ্যাঁ
অতি কম লেটেন্সি CMAF লাইভ প্লেব্যাক হ্যাঁ
কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) হ্যাঁ সিএমসিডি ইন্টিগ্রেশন গাইড

স্মুথস্ট্রিমিং

ExoPlayer FMP4 কন্টেইনার ফর্ম্যাটের সাথে SmoothStreaming সমর্থন করে। মিডিয়া স্ট্রিমগুলিকে অবশ্যই ডিমাক্স করতে হবে, অর্থাৎ ভিডিও, অডিও এবং টেক্সটকে SmoothStreaming ম্যানিফেস্টে স্বতন্ত্র StreamIndex উপাদানগুলিতে সংজ্ঞায়িত করতে হবে। অন্তর্ভুক্ত অডিও এবং ভিডিও নমুনা ফর্ম্যাটগুলিও সমর্থিত হতে হবে (বিস্তারিত জানার জন্য নমুনা ফর্ম্যাট বিভাগটি দেখুন)।

বৈশিষ্ট্য সমর্থিত মন্তব্য
পাত্র
এফএমপি৪ হ্যাঁ শুধুমাত্র ডিমাক্স করা স্ট্রিম
ক্লোজড ক্যাপশন/সাবটাইটেল
টিটিএমএল হ্যাঁ FMP4 এ এমবেড করা হয়েছে
কন্টেন্ট সুরক্ষা
PlayReady SL2000 সম্পর্কে হ্যাঁ শুধুমাত্র অ্যান্ড্রয়েড টিভি
লাইভ প্লেব্যাক
নিয়মিত লাইভ প্লেব্যাক হ্যাঁ
কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) হ্যাঁ ইন্টিগ্রেশন গাইড

এইচএলএস

ExoPlayer একাধিক কন্টেইনার ফর্ম্যাট সহ HLS সমর্থন করে। অন্তর্ভুক্ত অডিও এবং ভিডিও নমুনা ফর্ম্যাটগুলিও সমর্থিত হতে হবে (বিস্তারিত জানার জন্য নমুনা ফর্ম্যাট বিভাগটি দেখুন)। আমরা এই ব্লগ পোস্টে বর্ণিত উচ্চমানের HLS স্ট্রিম তৈরি করতে HLS কন্টেন্ট প্রযোজকদের দৃঢ়ভাবে উৎসাহিত করি।

বৈশিষ্ট্য সমর্থিত মন্তব্য
পাত্র
এমপিইজি-টিএস হ্যাঁ
এফএমপি৪/সিএমএএফ হ্যাঁ
ADTS (AAC) হ্যাঁ
MP3 সম্পর্কে হ্যাঁ
ক্লোজড ক্যাপশন / সাবটাইটেল
সিইএ-৬০৮ হ্যাঁ
সিইএ-৭০৮ হ্যাঁ
ওয়েবভিটিটি হ্যাঁ
মেটাডেটা
আইডি৩ হ্যাঁ
SCTE-35 সম্পর্কে না
কন্টেন্ট সুরক্ষা
AES-128 সম্পর্কে হ্যাঁ
নমুনা AES-128 না
ওয়াইডভাইন হ্যাঁ API 19+ ("cenc" স্কিম) এবং 25+ ("cbcs" স্কিম)
PlayReady SL2000 সম্পর্কে হ্যাঁ শুধুমাত্র অ্যান্ড্রয়েড টিভি
সার্ভার নিয়ন্ত্রণ
ডেল্টা আপডেট হ্যাঁ
প্লেলিস্ট পুনরায় লোড ব্লক করা হচ্ছে হ্যাঁ
প্রিলোড ইঙ্গিতের লোড ব্লক করা হ্যাঁ অনির্ধারিত দৈর্ঘ্যের বাইটরেঞ্জ ছাড়া
বিজ্ঞাপন সন্নিবেশ
সার্ভার-নির্দেশিত বিজ্ঞাপন সন্নিবেশ (ইন্টারস্টিশিয়াল) আংশিকভাবে শুধুমাত্র X-ASSET-URI সহ VOD। লাইভ স্ট্রিম এবং X-ASSET-LIST পরে যোগ করা হবে।
IMA সার্ভার-সাইড এবং ক্লায়েন্ট-সাইড বিজ্ঞাপন হ্যাঁ বিজ্ঞাপন সন্নিবেশ নির্দেশিকা
লাইভ প্লেব্যাক
নিয়মিত লাইভ প্লেব্যাক হ্যাঁ
কম-বিলম্বিত HLS (অ্যাপল) হ্যাঁ
কম-বিলম্বিত HLS (সম্প্রদায়) না
কমন মিডিয়া ক্লায়েন্ট ডেটা সিএমসিডি হ্যাঁ সিএমসিডি ইন্টিগ্রেশন গাইড

প্রগতিশীল ধারক বিন্যাস

নিম্নলিখিত কন্টেইনার ফর্ম্যাটের স্ট্রিমগুলি সরাসরি ExoPlayer দ্বারা চালানো যেতে পারে। অন্তর্ভুক্ত অডিও এবং ভিডিও নমুনা ফর্ম্যাটগুলিও সমর্থিত হতে হবে (বিস্তারিত জানার জন্য নমুনা ফর্ম্যাট বিভাগটি দেখুন)। চিত্রের কন্টেইনার এবং ফর্ম্যাট সমর্থনের জন্য, চিত্রগুলি দেখুন।

ধারক বিন্যাস সমর্থিত মন্তব্য
এমপি৪ হ্যাঁ
এম৪এ হ্যাঁ
এফএমপি৪ হ্যাঁ
ওয়েবএম হ্যাঁ
মাত্রোস্কা হ্যাঁ
MP3 সম্পর্কে হ্যাঁ কিছু স্ট্রিম শুধুমাত্র ধ্রুবক বিটরেট সিকিং ব্যবহার করে অনুসন্ধানযোগ্য**
ওগ হ্যাঁ Vorbis, Opus এবং FLAC ধারণকারী
WAV সম্পর্কে হ্যাঁ
এমপিইজি-টিএস হ্যাঁ
এমপিইজি-পিএস হ্যাঁ
এফএলভি হ্যাঁ খোঁজা যায় না*
ADTS (AAC) হ্যাঁ শুধুমাত্র ধ্রুবক বিটরেট সিকিং ব্যবহার করে অনুসন্ধানযোগ্য**
এফএলএসি হ্যাঁ ExoPlayer লাইব্রেরিতে FLAC লাইব্রেরি অথবা FLAC এক্সট্র্যাক্টর ব্যবহার করা ***
এএমআর হ্যাঁ শুধুমাত্র ধ্রুবক বিটরেট সিকিং ব্যবহার করে অনুসন্ধানযোগ্য**

* সিকিং সমর্থিত নয় কারণ কন্টেইনারটি মেটাডেটা (উদাহরণস্বরূপ, একটি নমুনা সূচক) প্রদান করে না যাতে মিডিয়া প্লেয়ার দক্ষতার সাথে সিক সম্পাদন করতে পারে। যদি সিকিংয়ের প্রয়োজন হয়, তাহলে আমরা আরও উপযুক্ত কন্টেইনার ফর্ম্যাট ব্যবহার করার পরামর্শ দিচ্ছি।

** এই এক্সট্র্যাক্টরগুলিতে FLAG_ENABLE_CONSTANT_BITRATE_SEEKING ফ্ল্যাগ রয়েছে যা একটি ধ্রুবক বিটরেট অনুমান ব্যবহার করে আনুমানিক অনুসন্ধান সক্ষম করে। এই কার্যকারিতাটি ডিফল্টরূপে সক্ষম হয় না। এটি সমর্থন করে এমন সমস্ত এক্সট্র্যাক্টরের জন্য এই কার্যকারিতা সক্ষম করার সবচেয়ে সহজ উপায় হল DefaultExtractorsFactory.setConstantBitrateSeekingEnabled ব্যবহার করা, যেমনটি এখানে বর্ণিত হয়েছে।

*** FLAC লাইব্রেরি এক্সট্র্যাক্টর কাঁচা অডিও আউটপুট করে, যা সমস্ত API স্তরের ফ্রেমওয়ার্ক দ্বারা পরিচালনা করা যেতে পারে। ExoPlayer লাইব্রেরি FLAC এক্সট্র্যাক্টর FLAC অডিও ফ্রেম আউটপুট করে এবং তাই একটি FLAC ডিকোডারের উপর নির্ভর করে (উদাহরণস্বরূপ, একটি MediaCodec ডিকোডার যা FLAC পরিচালনা করে (API স্তর 27 থেকে প্রয়োজনীয়), অথবা FLAC সক্ষম FFmpeg লাইব্রেরি )। যদি অ্যাপ্লিকেশনটি FLAC লাইব্রেরি দিয়ে তৈরি করা হয় তবে DefaultExtractorsFactory এক্সটেনশন এক্সট্র্যাক্টর ব্যবহার করে। অন্যথায়, এটি ExoPlayer লাইব্রেরি এক্সট্র্যাক্টর ব্যবহার করে।

আরটিএসপি

এক্সোপ্লেয়ার লাইভ এবং অন ডিমান্ড RTSP উভয়কেই সমর্থন করে। সমর্থিত নমুনা ফর্ম্যাট এবং নেটওয়ার্ক প্রকারগুলি নীচে তালিকাভুক্ত করা হয়েছে।

সমর্থিত নমুনা বিন্যাস

  • H264 (ডিকোডার ইনিশিয়ালাইজেশনের জন্য fmtp অ্যাট্রিবিউটে SDP মিডিয়া বর্ণনায় SPS/PPS ডেটা অন্তর্ভুক্ত থাকতে হবে)।
  • AAC (ADTS বিটস্ট্রিম সহ)।
  • এসি৩।

সমর্থিত নেটওয়ার্কের ধরণ

  • UDP ইউনিকাস্টের উপর RTP (মাল্টিকাস্ট সমর্থিত নয়)।
  • TCP ব্যবহার করে RTSP-এর উপর ইন্টারলিভড RTSP, RTP।

নমুনা বিন্যাস

ডিফল্টরূপে ExoPlayer অ্যান্ড্রয়েডের প্ল্যাটফর্ম ডিকোডার ব্যবহার করে। তাই সমর্থিত নমুনা ফর্ম্যাটগুলি এক্সোপ্লেয়ারের পরিবর্তে অন্তর্নিহিত প্ল্যাটফর্মের উপর নির্ভর করে। অ্যান্ড্রয়েড ডিভাইস দ্বারা সমর্থিত নমুনা ফর্ম্যাটগুলির ডকুমেন্টেশনের জন্য সমর্থিত মিডিয়া ফর্ম্যাটগুলি দেখুন। মনে রাখবেন যে পৃথক ডিভাইসগুলি তালিকাভুক্ত ফর্ম্যাটগুলির বাইরে অতিরিক্ত ফর্ম্যাট সমর্থন করতে পারে।

অ্যান্ড্রয়েডের প্ল্যাটফর্ম ডিকোডার ছাড়াও, এক্সোপ্লেয়ার সফ্টওয়্যার ডিকোডার এক্সটেনশনগুলিও ব্যবহার করতে পারে। এগুলি ম্যানুয়ালি তৈরি করতে হবে এবং যে প্রকল্পগুলি এগুলি ব্যবহার করতে চায় তাদের অন্তর্ভুক্ত করতে হবে। আমরা বর্তমানে AV1 , VP9 , ​​FLAC , Opus , FFmpeg , MIDI , IAMF এবং MPEG-H এর জন্য সফ্টওয়্যার ডিকোডার লাইব্রেরি সরবরাহ করি।

FFmpeg লাইব্রেরি

FFmpeg লাইব্রেরি বিভিন্ন ধরণের অডিও নমুনা ফর্ম্যাট ডিকোডিং সমর্থন করে। লাইব্রেরির README.md- এ নথিভুক্ত হিসাবে, লাইব্রেরি তৈরি করার সময় কোন ডিকোডারগুলি অন্তর্ভুক্ত করবেন তা আপনি বেছে নিতে পারেন। নিম্নলিখিত টেবিলটি অডিও নমুনা ফর্ম্যাট থেকে সংশ্লিষ্ট FFmpeg ডিকোডার নামের ম্যাপিং প্রদান করে।

নমুনা বিন্যাস ডিকোডারের নাম(গুলি)
ভোরবিস ভর্বিস
রচনা রচনা
এফএলএসি ফ্ল্যাক
ALAC সম্পর্কে আলাক
পিসিএম μ-ল পিসিএম_মুলাব
পিসিএম এ-ল পিসিএম_আলাও
এমপি১, এমপি২, এমপি৩ mp3 সম্পর্কে
এএমআর-এনবি আমরনব
AMR-WB সম্পর্কে আমরব
এএসি এএসি
এসি-৩ এসি৩
ই-এসি-৩ eac3 সম্পর্কে
ডিটিএস, ডিটিএস-এইচডি ডিসিএ
ট্রুএইচডি এমএলপি ট্রুএইচডি

ছবি

এক্সোপ্লেয়ার নিম্নলিখিত চিত্র ফর্ম্যাটগুলিকে সমর্থন করে। বিভিন্ন ফর্ম্যাটের জন্য সমর্থন প্রদান করতে পারে এমন বহিরাগত লাইব্রেরির সাথে কীভাবে সংহত করবেন তার জন্য চিত্র লোডিং লাইব্রেরিগুলি দেখুন।

ছবির বিন্যাস সমর্থিত মন্তব্য
বিএমপি হ্যাঁ
জিআইএফ না কোনও এক্সট্র্যাক্টর সাপোর্ট নেই
জেপিইজি হ্যাঁ
জেপিইজি মোশন ফটো হ্যাঁ স্থির চিত্র এবং ভিডিও সমর্থিত
জেপিইজি আল্ট্রা এইচডিআর হ্যাঁ অ্যান্ড্রয়েড ১৪ এর আগে বা নন-এইচডিআর ডিসপ্লেতে আবার এসডিআর ব্যবহার করা হয়
পিএনজি হ্যাঁ
ওয়েবপি হ্যাঁ
HEIF/HEIC হ্যাঁ
HEIC মোশন ফটো হ্যাঁ
AVIF (বেসলাইন) হ্যাঁ শুধুমাত্র Android 14+ এ ডিকোড করা হয়েছে

স্বতন্ত্র সাবটাইটেল ফর্ম্যাট

এক্সোপ্লেয়ার বিভিন্ন ফর্ম্যাটে স্বতন্ত্র সাবটাইটেল ফাইল সমর্থন করে। মিডিয়া আইটেম পৃষ্ঠায় বর্ণিত হিসাবে সাবটাইটেল ফাইলগুলি সাইড-লোড করা যেতে পারে।

ধারক বিন্যাস সমর্থিত MIME টাইপ
ওয়েবভিটিটি হ্যাঁ মাইমটাইপস.টেক্সট_ভিটিটি
টিটিএমএল / এসএমপিটিই-টিটি হ্যাঁ মাইমটাইপস.APPLICATION_TTML
সাবরিপ হ্যাঁ মাইমটাইপস।APPLICATION_SUBRIP
সাবস্টেশনআলফা (এসএসএ/এএসএস) হ্যাঁ মাইমটাইপস.টেক্সট_এসএসএ

HDR ভিডিও প্লেব্যাক

এক্সোপ্লেয়ার বিভিন্ন কন্টেইনারে হাই ডাইনামিক রেঞ্জ (HDR) ভিডিও এক্সট্র্যাক্ট করার কাজ পরিচালনা করে, যার মধ্যে MP4-এ ডলবি ভিশন এবং Matroska/WebM-এ HDR10+ অন্তর্ভুক্ত। HDR কন্টেন্ট ডিকোডিং এবং প্রদর্শন অ্যান্ড্রয়েড প্ল্যাটফর্ম এবং ডিভাইসের সমর্থনের উপর নির্ভর করে। HDR ডিকোডিং/ডিসপ্লে ক্ষমতা এবং অ্যান্ড্রয়েড সংস্করণ জুড়ে HDR সাপোর্টের সীমাবদ্ধতা পরীক্ষা করার বিষয়ে জানতে HDR ভিডিও প্লেব্যাক দেখুন।

যখন কোনও নির্দিষ্ট কোডেক প্রোফাইলের জন্য সমর্থন প্রয়োজন এমন কোনও HDR স্ট্রিম চালানো হয়, তখন ExoPlayer-এর ডিফল্ট MediaCodec নির্বাচক এমন একটি ডিকোডার বেছে নেবে যা সেই প্রোফাইলটিকে সমর্থন করে (যদি উপলব্ধ থাকে), এমনকি যদি একই MIME ধরণের জন্য অন্য একটি ডিকোডার যা সেই প্রোফাইলটিকে সমর্থন করে না কোডেক তালিকার উপরে প্রদর্শিত হয়। এর ফলে এমন ক্ষেত্রে একটি সফ্টওয়্যার ডিকোডার নির্বাচন করা যেতে পারে যেখানে স্ট্রিমটি একই MIME ধরণের জন্য একটি হার্ডওয়্যার ডিকোডারের ক্ষমতা অতিক্রম করে।