ExoPlayer সমর্থন করে এমন ফর্ম্যাটগুলিকে সংজ্ঞায়িত করার সময়, এটি লক্ষ্য করা গুরুত্বপূর্ণ যে "মিডিয়া ফর্ম্যাটগুলি" একাধিক স্তরে সংজ্ঞায়িত করা হয়েছে৷ সর্বনিম্ন স্তর থেকে সর্বোচ্চ, এগুলি হল:
- পৃথক মিডিয়া নমুনার ফর্ম্যাট (যেমন ভিডিওর ফ্রেম বা অডিওর ফ্রেম)। এগুলো নমুনা বিন্যাস । মনে রাখবেন যে একটি সাধারণ ভিডিও ফাইলে অন্তত দুটি নমুনা বিন্যাসে মিডিয়া থাকবে; একটি ভিডিওর জন্য (উদাহরণস্বরূপ, H.264) এবং একটি অডিওর জন্য (উদাহরণস্বরূপ, AAC)।
- মিডিয়া নমুনা এবং সংশ্লিষ্ট মেটাডেটা রাখা কন্টেইনারের ফর্ম্যাট। এই ধারক বিন্যাস হয়. একটি মিডিয়া ফাইলের একটি একক ধারক বিন্যাস থাকে (উদাহরণস্বরূপ, MP4), যা সাধারণত ফাইল এক্সটেনশন দ্বারা নির্দেশিত হয়। মনে রাখবেন কিছু অডিও-শুধু ফরম্যাটের জন্য (উদাহরণস্বরূপ, MP3), নমুনা এবং ধারক বিন্যাস একই হতে পারে।
- অভিযোজিত স্ট্রিমিং প্রযুক্তি যেমন ড্যাশ, স্মুথস্ট্রিমিং এবং এইচএলএস। এগুলি মিডিয়া ফর্ম্যাটগুলি নয়, তবে ExoPlayer কোন স্তরের সমর্থন প্রদান করে তা নির্ধারণ করা এখনও প্রয়োজন৷
নিম্নলিখিত বিভাগগুলি সর্বোচ্চ থেকে সর্বনিম্ন পর্যন্ত প্রতিটি স্তরে ExoPlayer-এর সমর্থনকে সংজ্ঞায়িত করে৷ শেষ দুটি বিভাগ স্বতন্ত্র সাবটাইটেল ফরম্যাট এবং HDR ভিডিও প্লেব্যাকের জন্য সমর্থন বর্ণনা করে।
অভিযোজিত স্ট্রিমিং
ড্যাশ
ExoPlayer একাধিক ধারক বিন্যাস সহ DASH সমর্থন করে। মিডিয়া স্ট্রীমগুলিকে অবশ্যই ডিমাক্স করতে হবে, অর্থাৎ ভিডিও, অডিও এবং পাঠ্যকে অবশ্যই DASH ম্যানিফেস্টের স্বতন্ত্র AdaptationSet
উপাদানগুলিতে সংজ্ঞায়িত করতে হবে (নিচের সারণীতে বর্ণিত হিসাবে CEA-608 একটি ব্যতিক্রম)৷ অন্তর্ভুক্ত অডিও এবং ভিডিও নমুনা ফর্ম্যাটগুলিকে অবশ্যই সমর্থিত হতে হবে (বিশদ বিবরণের জন্য নমুনা বিন্যাস বিভাগটি দেখুন)৷
বৈশিষ্ট্য | সমর্থিত | মন্তব্য |
---|---|---|
পাত্রে | ||
FMP4 | হ্যাঁ | শুধুমাত্র Demuxed স্ট্রীম |
ওয়েবএম | হ্যাঁ | শুধুমাত্র Demuxed স্ট্রীম |
ম্যাট্রোস্কা | হ্যাঁ | শুধুমাত্র Demuxed স্ট্রীম |
MPEG-TS | না | কোন সমর্থন পরিকল্পিত |
ক্লোজড ক্যাপশন/সাবটাইটেল | ||
টিটিএমএল | হ্যাঁ | ISO/IEC 14496-30 অনুযায়ী কাঁচা বা FMP4 এ এমবেড করা |
ওয়েবভিটিটি | হ্যাঁ | ISO/IEC 14496-30 অনুযায়ী কাঁচা বা FMP4 এ এমবেড করা |
CEA-608 | হ্যাঁ | SCTE অ্যাক্সেসিবিলিটি বর্ণনাকারী ব্যবহার করে সংকেত দিলে FMP4 এ এমবেড করা হয় |
CEA-708 | হ্যাঁ | SCTE অ্যাক্সেসিবিলিটি বর্ণনাকারী ব্যবহার করে সংকেত দিলে FMP4 এ এমবেড করা হয় |
মেটাডেটা | ||
EMSG মেটাডেটা | হ্যাঁ | FMP4 এ এমবেড করা হয়েছে |
বিষয়বস্তু সুরক্ষা | ||
ওয়াইডভাইন | হ্যাঁ | "cenc" স্কিম: API 19+; "cbcs" স্কিম: API 25+ |
PlayReady SL2000 | হ্যাঁ | Android TV, শুধুমাত্র "cenc" স্কিম |
ক্লিয়ারকি | হ্যাঁ | API 21+, শুধুমাত্র "cenc" স্কিম |
লাইভ প্লেব্যাক | ||
নিয়মিত লাইভ প্লেব্যাক | হ্যাঁ | |
আল্ট্রা লো-লেটেন্সি CMAF লাইভ প্লেব্যাক | হ্যাঁ | |
কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) | হ্যাঁ | ইন্টিগ্রেশন গাইড |
স্মুথস্ট্রিমিং
ExoPlayer FMP4 কন্টেইনার ফর্ম্যাটের সাথে স্মুথস্ট্রিমিং সমর্থন করে। মিডিয়া স্ট্রীমগুলিকে অবশ্যই ডিমক্স করা উচিত, যার অর্থ ভিডিও, অডিও এবং পাঠ্যকে স্মুথস্ট্রিমিং ম্যানিফেস্টে স্বতন্ত্র স্ট্রিমইন্ডেক্স উপাদানগুলিতে সংজ্ঞায়িত করা আবশ্যক৷ অন্তর্ভুক্ত অডিও এবং ভিডিও নমুনা ফর্ম্যাটগুলিকে অবশ্যই সমর্থিত হতে হবে (বিশদ বিবরণের জন্য নমুনা বিন্যাস বিভাগটি দেখুন)৷
বৈশিষ্ট্য | সমর্থিত | মন্তব্য |
---|---|---|
পাত্রে | ||
FMP4 | হ্যাঁ | শুধুমাত্র Demuxed স্ট্রীম |
ক্লোজড ক্যাপশন/সাবটাইটেল | ||
টিটিএমএল | হ্যাঁ | FMP4 এ এমবেড করা হয়েছে |
বিষয়বস্তু সুরক্ষা | ||
PlayReady SL2000 | হ্যাঁ | শুধুমাত্র Android TV |
লাইভ প্লেব্যাক | ||
নিয়মিত লাইভ প্লেব্যাক | হ্যাঁ | |
কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) | হ্যাঁ | ইন্টিগ্রেশন গাইড |
এইচএলএস
ExoPlayer একাধিক ধারক বিন্যাস সহ HLS সমর্থন করে। অন্তর্ভুক্ত অডিও এবং ভিডিও নমুনা ফর্ম্যাটগুলিকে অবশ্যই সমর্থিত হতে হবে (বিশদ বিবরণের জন্য নমুনা বিন্যাস বিভাগটি দেখুন)৷ আমরা দৃঢ়ভাবে HLS বিষয়বস্তু প্রযোজকদের উচ্চ মানের HLS স্ট্রীম তৈরি করতে উৎসাহিত করি, যেমন এখানে বর্ণনা করা হয়েছে।
বৈশিষ্ট্য | সমর্থিত | মন্তব্য |
---|---|---|
পাত্রে | ||
MPEG-TS | হ্যাঁ | |
FMP4/CMAF | হ্যাঁ | |
ADTS (AAC) | হ্যাঁ | |
MP3 | হ্যাঁ | |
ক্লোজড ক্যাপশন/সাবটাইটেল | ||
CEA-608 | হ্যাঁ | |
CEA-708 | হ্যাঁ | |
ওয়েবভিটিটি | হ্যাঁ | |
মেটাডেটা | ||
ID3 | হ্যাঁ | |
SCTE-35 | না | |
বিষয়বস্তু সুরক্ষা | ||
AES-128 | হ্যাঁ | |
নমুনা AES-128 | না | |
ওয়াইডভাইন | হ্যাঁ | API 19+ ("cenc" স্কিম) এবং 25+ ("cbcs" স্কিম) |
PlayReady SL2000 | হ্যাঁ | শুধুমাত্র Android TV |
সার্ভার নিয়ন্ত্রণ | ||
ডেল্টা আপডেট | হ্যাঁ | |
প্লেলিস্ট পুনরায় লোড ব্লক করা হচ্ছে | হ্যাঁ | |
প্রিলোড ইঙ্গিত লোড ব্লক করা | হ্যাঁ | অনির্ধারিত দৈর্ঘ্য সহ বাইটরেঞ্জ ব্যতীত |
লাইভ প্লেব্যাক | ||
নিয়মিত লাইভ প্লেব্যাক | হ্যাঁ | |
কম লেটেন্সি HLS (অ্যাপল) | হ্যাঁ | |
কম লেটেন্সি HLS (সম্প্রদায়) | না | |
কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) | হ্যাঁ | ইন্টিগ্রেশন গাইড |
প্রগতিশীল ধারক বিন্যাস
নিম্নলিখিত ধারক বিন্যাসে স্ট্রীম সরাসরি ExoPlayer দ্বারা চালানো যেতে পারে। অন্তর্ভুক্ত অডিও এবং ভিডিও নমুনা বিন্যাসগুলিকে অবশ্যই সমর্থিত হতে হবে (বিশদ বিবরণের জন্য নমুনা বিন্যাস বিভাগটি দেখুন)। চিত্র ধারক এবং বিন্যাস সমর্থনের জন্য, চিত্রগুলি দেখুন।
ধারক বিন্যাস | সমর্থিত | মন্তব্য |
---|---|---|
MP4 | হ্যাঁ | |
M4A | হ্যাঁ | |
FMP4 | হ্যাঁ | |
ওয়েবএম | হ্যাঁ | |
ম্যাট্রোস্কা | হ্যাঁ | |
MP3 | হ্যাঁ | কিছু স্ট্রীম শুধুমাত্র ধ্রুবক বিটরেট অনুসন্ধান ব্যবহার করে অনুসন্ধানযোগ্য** |
ওগ | হ্যাঁ | ভরবিস, ওপাস এবং FLAC ধারণ করে |
WAV | হ্যাঁ | |
MPEG-TS | হ্যাঁ | |
MPEG-PS | হ্যাঁ | |
FLV | হ্যাঁ | খোঁজা যায় না* |
ADTS (AAC) | হ্যাঁ | শুধুমাত্র ধ্রুবক বিটরেট ব্যবহার করে অনুসন্ধানযোগ্য** |
FLAC | হ্যাঁ | ExoPlayer লাইব্রেরিতে FLAC লাইব্রেরি বা FLAC এক্সট্র্যাক্টর ব্যবহার করা *** |
এএমআর | হ্যাঁ | শুধুমাত্র ধ্রুবক বিটরেট ব্যবহার করে অনুসন্ধানযোগ্য** |
* চাওয়া অসমর্থিত কারণ ধারকটি মেটাডেটা (উদাহরণস্বরূপ, একটি নমুনা সূচক) সরবরাহ করে না যাতে একটি মিডিয়া প্লেয়ারকে একটি দক্ষ উপায়ে একটি অনুসন্ধান সম্পাদন করার অনুমতি দেওয়া হয়। যদি চাওয়া প্রয়োজন হয়, আমরা আরও উপযুক্ত কন্টেইনার বিন্যাস ব্যবহার করার পরামর্শ দিই।
** এই এক্সট্র্যাক্টরগুলির একটি ধ্রুবক বিটরেট অনুমান ব্যবহার করে আনুমানিক অনুসন্ধান সক্ষম করার জন্য FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
পতাকা রয়েছে৷ এই কার্যকারিতা ডিফল্টরূপে সক্রিয় করা হয় না. এটিকে সমর্থন করে এমন সমস্ত এক্সট্র্যাক্টরের জন্য এই কার্যকারিতা সক্ষম করার সবচেয়ে সহজ উপায় হল DefaultExtractorsFactory.setConstantBitrateSeekingEnabled
ব্যবহার করা, যেমন এখানে বর্ণনা করা হয়েছে।
*** FLAC লাইব্রেরি এক্সট্র্যাক্টর কাঁচা অডিও আউটপুট করে, যা সমস্ত API স্তরে ফ্রেমওয়ার্ক দ্বারা পরিচালনা করা যেতে পারে। ExoPlayer লাইব্রেরি FLAC এক্সট্র্যাক্টর FLAC অডিও ফ্রেমগুলি আউটপুট করে এবং তাই একটি FLAC ডিকোডার থাকার উপর নির্ভর করে (উদাহরণস্বরূপ, একটি MediaCodec
ডিকোডার যা FLAC পরিচালনা করে (এপিআই স্তর 27 থেকে প্রয়োজনীয়), বা FLAC সক্ষম সহ FFmpeg লাইব্রেরি )। DefaultExtractorsFactory
এক্সটেনশন এক্সট্র্যাক্টর ব্যবহার করে যদি অ্যাপ্লিকেশনটি FLAC লাইব্রেরি দিয়ে তৈরি করা হয়। অন্যথায়, এটি ExoPlayer লাইব্রেরি এক্সট্র্যাক্টর ব্যবহার করে।
আরটিএসপি
ExoPlayer লাইভ এবং অন ডিমান্ড RTSP সমর্থন করে। সমর্থিত নমুনা বিন্যাস এবং নেটওয়ার্ক প্রকারগুলি নীচে তালিকাভুক্ত করা হয়েছে৷
সমর্থিত নমুনা বিন্যাস
- H264 (ডিকোডার ইনিশিয়ালাইজেশনের জন্য এফএমটিপি অ্যাট্রিবিউটে এসডিপি মিডিয়া বিবরণে অবশ্যই এসপিএস/পিপিএস ডেটা অন্তর্ভুক্ত করতে হবে)।
- AAC (ADTS বিটস্ট্রিম সহ)।
- AC3.
সমর্থিত নেটওয়ার্ক প্রকার
- UDP ইউনিকাস্টের উপর RTP (মাল্টিকাস্ট সমর্থিত নয়)।
- ইন্টারলিভড RTSP, TCP ব্যবহার করে RTSP এর উপর RTP।
নমুনা বিন্যাস
ডিফল্টরূপে ExoPlayer Android এর প্ল্যাটফর্ম ডিকোডার ব্যবহার করে। তাই সমর্থিত নমুনা ফর্ম্যাটগুলি ExoPlayer-এর পরিবর্তে অন্তর্নিহিত প্ল্যাটফর্মের উপর নির্ভর করে। Android ডিভাইস দ্বারা সমর্থিত নমুনা বিন্যাসে ডকুমেন্টেশনের জন্য সমর্থিত মিডিয়া ফর্ম্যাটগুলি পড়ুন৷ মনে রাখবেন যে পৃথক ডিভাইসগুলি তালিকাভুক্তগুলির বাইরে অতিরিক্ত ফর্ম্যাটগুলিকে সমর্থন করতে পারে৷
অ্যান্ড্রয়েডের প্ল্যাটফর্ম ডিকোডার ছাড়াও, ExoPlayer সফ্টওয়্যার ডিকোডার এক্সটেনশন ব্যবহার করতে পারে। এগুলিকে ম্যানুয়ালি তৈরি করতে হবে এবং সেগুলিকে ব্যবহার করতে ইচ্ছুক প্রকল্পগুলিতে অন্তর্ভুক্ত করতে হবে৷ আমরা বর্তমানে AV1 , VP9 , FLAC , Opus , FFmpeg , MIDI এবং IAMF- এর জন্য সফ্টওয়্যার ডিকোডার লাইব্রেরি প্রদান করি।
FFmpeg লাইব্রেরি
FFmpeg লাইব্রেরি বিভিন্ন অডিও নমুনা ফরম্যাটের ডিকোডিং সমর্থন করে। লাইব্রেরির README.md- এ নথিভুক্ত হিসাবে আপনি লাইব্রেরি তৈরি করার সময় কোন ডিকোডারগুলি অন্তর্ভুক্ত করবেন তা চয়ন করতে পারেন। নিম্নলিখিত টেবিলটি অডিও নমুনা বিন্যাস থেকে সংশ্লিষ্ট FFmpeg ডিকোডার নামের একটি ম্যাপিং প্রদান করে।
নমুনা বিন্যাস | ডিকোডার নাম(গুলি) |
---|---|
ভরবিস | ভর্বিস |
ওপাস | রচনা |
FLAC | flac |
ALAC | alac |
PCM μ-আইন | pcm_mulaw |
পিসিএম এ-আইন | pcm_alaw |
MP1, MP2, MP3 | mp3 |
এএমআর-এনবি | amrnb |
AMR-WB | amrwb |
এএসি | aac |
এসি-3 | ac3 |
ই-এসি-3 | eac3 |
ডিটিএস, ডিটিএস-এইচডি | ডিসিএ |
ট্রুএইচডি | mlp truehd |
ছবি
ExoPlayer নিম্নলিখিত চিত্র বিন্যাস সমর্থন করে। বাহ্যিক লাইব্রেরিগুলির সাথে কীভাবে একীভূত করা যায় তার জন্য চিত্র লোডিং লাইব্রেরিগুলি দেখুন যা ফর্ম্যাটের একটি ভিন্ন সেটের জন্য সমর্থন প্রদান করতে পারে।
চিত্র বিন্যাস | সমর্থিত | নোট |
---|---|---|
বিএমপি | হ্যাঁ | |
জিআইএফ | না | এক্সট্রাক্টর সমর্থন নেই |
জেপিইজি | হ্যাঁ | |
JPEG মোশন ছবি | হ্যাঁ | স্থির চিত্র এবং ভিডিও সমর্থিত |
JPEG আল্ট্রা HDR | হ্যাঁ | Android 14 এর আগে বা নন-HDR ডিসপ্লেতে SDR-এ ফিরে যায় |
পিএনজি | হ্যাঁ | |
ওয়েবপি | হ্যাঁ | |
HEIF/HEIC | হ্যাঁ | |
HEIC মোশন ফটো | আংশিকভাবে | শুধুমাত্র স্থির চিত্র সমর্থিত* |
AVIF (বেসলাইন) | হ্যাঁ | শুধুমাত্র Android 14+ এ ডিকোড করা হয়েছে |
* HEIC মোশন ফটোগুলির ভিডিও অংশ মেটাডেটা রিট্রিভারের সাথে প্রাপ্ত করা যেতে পারে এবং একটি স্বতন্ত্র ফাইল হিসাবে চালানো যেতে পারে।
স্বতন্ত্র সাবটাইটেল বিন্যাস
ExoPlayer বিভিন্ন ফরম্যাটে স্বতন্ত্র সাবটাইটেল ফাইল সমর্থন করে। মিডিয়া আইটেম পৃষ্ঠায় বর্ণিত হিসাবে সাবটাইটেল ফাইলগুলি সাইড-লোড করা যেতে পারে।
ধারক বিন্যাস | সমর্থিত | MIME প্রকার |
---|---|---|
ওয়েবভিটিটি | হ্যাঁ | MimeTypes.TEXT_VTT |
TTML/SMPTE-TT | হ্যাঁ | MimeTypes.APPLICATION_TTML |
সাবরিপ | হ্যাঁ | মাইম টাইপস৷APPLICATION_SUBRIP৷ |
সাবস্টেশন আলফা (SSA/ASS) | হ্যাঁ | MimeTypes.TEXT_SSA |
HDR ভিডিও প্লেব্যাক
ExoPlayer MP4-এ Dolby Vision এবং Matroska/WebM-এ HDR10+ সহ বিভিন্ন পাত্রে উচ্চ গতিশীল পরিসর (HDR) ভিডিও নিষ্কাশন পরিচালনা করে। HDR বিষয়বস্তু ডিকোডিং এবং প্রদর্শন করা অ্যান্ড্রয়েড প্ল্যাটফর্ম এবং ডিভাইসের সমর্থনের উপর নির্ভর করে। এইচডিআর ভিডিও প্লেব্যাক দেখুন HDR ডিকোডিং/ডিসপ্লে ক্ষমতা এবং Android সংস্করণ জুড়ে HDR সমর্থনের সীমাবদ্ধতা পরীক্ষা করা সম্পর্কে জানতে।
একটি নির্দিষ্ট কোডেক প্রোফাইলের জন্য সমর্থনের প্রয়োজন এমন একটি HDR স্ট্রীম চালানোর সময়, ExoPlayer-এর ডিফল্ট MediaCodec
নির্বাচক একটি ডিকোডার বেছে নেবে যা সেই প্রোফাইলটিকে সমর্থন করে (যদি উপলব্ধ থাকে), এমনকি একই MIME প্রকারের জন্য অন্য ডিকোডার যা সেই প্রোফাইলটিকে সমর্থন করে না তা উপরের দিকে প্রদর্শিত হলেও কোডেক তালিকা। এর ফলে একটি সফ্টওয়্যার ডিকোডার নির্বাচন করা যেতে পারে যেখানে স্ট্রীম একই MIME প্রকারের জন্য একটি হার্ডওয়্যার ডিকোডারের ক্ষমতা অতিক্রম করে।