فرمت های پشتیبانی شده

هنگام تعریف فرمت هایی که ExoPlayer پشتیبانی می کند، مهم است که توجه داشته باشید که "فرمت های رسانه ای" در چندین سطح تعریف شده اند. از پایین ترین سطح تا بالاترین، اینها عبارتند از:

  • قالب نمونه‌های رسانه‌ای جداگانه (مانند فریم ویدیو یا فریم صدا). اینها فرمت های نمونه هستند. توجه داشته باشید که یک فایل ویدئویی معمولی حاوی رسانه حداقل در دو فرمت نمونه است. یکی برای ویدئو (به عنوان مثال، H.264) و یکی برای صدا (به عنوان مثال، AAC).
  • قالب ظرفی که نمونه های رسانه و ابرداده های مرتبط را در خود جای می دهد. اینها فرمت های کانتینری هستند. یک فایل رسانه ای دارای یک فرمت محفظه واحد است (به عنوان مثال MP4) که معمولاً با پسوند فایل نشان داده می شود. توجه داشته باشید که برای برخی از فرمت‌های فقط صوتی (مثلا MP3)، قالب‌های نمونه و کانتینر ممکن است یکسان باشند.
  • فناوری‌های جریان تطبیقی ​​مانند DASH، SmoothStreaming و HLS. اینها فرمت های رسانه ای نیستند، اما هنوز باید مشخص شود که ExoPlayer چه سطحی از پشتیبانی را ارائه می دهد.

بخش های زیر پشتیبانی ExoPlayer را در هر سطح، از بالاترین تا پایین ترین، تعریف می کند. دو بخش آخر پشتیبانی از فرمت‌های زیرنویس مستقل و پخش ویدیوی HDR را توضیح می‌دهند.

جریان تطبیقی

خط تیره

ExoPlayer از DASH با چندین فرمت کانتینر پشتیبانی می کند. جریان‌های رسانه باید دموکس شوند، به این معنی که ویدیو، صدا و متن باید در عناصر AdaptationSet مجزا در مانیفست DASH تعریف شوند (CEA-608 یک استثنا است که در جدول زیر توضیح داده شده است). فرمت‌های نمونه صوتی و تصویری موجود نیز باید پشتیبانی شوند (برای جزئیات به بخش قالب‌های نمونه مراجعه کنید).

ویژگی پشتیبانی نظرات
ظروف
FMP4 آره فقط جریان های دیموکس
WebM آره فقط جریان های دیموکس
ماتروسکا آره فقط جریان های دیموکس
MPEG-TS نه هیچ حمایتی برنامه ریزی نشده است
زیرنویس‌ها/زیرنویس‌های بسته
TTML آره خام، یا تعبیه شده در FMP4 طبق ISO/IEC 14496-30
WebVTT آره خام، یا تعبیه شده در FMP4 طبق ISO/IEC 14496-30
CEA-608 آره هنگامی که با استفاده از توصیفگرهای دسترسی SCTE سیگنال داده می شود، در FMP4 تعبیه شده است
CEA-708 آره هنگامی که با استفاده از توصیفگرهای دسترسی SCTE سیگنال داده می شود، در FMP4 تعبیه شده است
فراداده
فراداده EMSG آره تعبیه شده در FMP4
حفاظت از محتوا
وایدواین آره طرح "cenc": API 19+; طرح "cbcs": API 25+
PlayReady SL2000 آره Android TV، فقط طرح "cenc".
ClearKey آره API 21+، فقط طرح "cenc".
پخش زنده
پخش زنده منظم آره
پخش زنده CMAF با تاخیر بسیار کم آره
داده های مشترک رسانه مشتری (CMCD) آره راهنمای ادغام

SmoothStreaming

ExoPlayer از SmoothStreaming با فرمت ظرف FMP4 پشتیبانی می کند. جریان‌های رسانه باید دموکس شوند، به این معنی که ویدیو، صدا و متن باید در عناصر StreamIndex مجزا در مانیفست SmoothStreaming تعریف شوند. فرمت‌های نمونه صوتی و تصویری موجود نیز باید پشتیبانی شوند (برای جزئیات به بخش قالب‌های نمونه مراجعه کنید).

ویژگی پشتیبانی نظرات
ظروف
FMP4 آره فقط جریان های دیموکس
زیرنویس‌ها/زیرنویس‌های بسته
TTML آره تعبیه شده در FMP4
حفاظت از محتوا
PlayReady SL2000 آره فقط Android TV
پخش زنده
پخش زنده منظم آره
داده های مشترک رسانه مشتری (CMCD) آره راهنمای ادغام

HLS

ExoPlayer از HLS با چندین فرمت کانتینر پشتیبانی می کند. فرمت‌های نمونه صوتی و تصویری موجود نیز باید پشتیبانی شوند (برای جزئیات به بخش قالب‌های نمونه مراجعه کنید). ما قویاً تولیدکنندگان محتوای HLS را تشویق می‌کنیم که جریان‌های HLS با کیفیت بالا تولید کنند، همانطور که در اینجا توضیح داده شده است.

ویژگی پشتیبانی نظرات
ظروف
MPEG-TS آره
FMP4/CMAF آره
ADTS (AAC) آره
MP3 آره
زیرنویس‌ها/زیرنویس‌های بسته
CEA-608 آره
CEA-708 آره
WebVTT آره
فراداده
ID3 آره
SCTE-35 نه
حفاظت از محتوا
AES-128 آره
نمونه AES-128 نه
وایدواین آره API 19+ (طرح "cenc") و 25+ (طرح "cbcs")
PlayReady SL2000 آره فقط Android TV
کنترل سرور
به روز رسانی دلتا آره
مسدود کردن بارگیری مجدد لیست پخش آره
مسدود کردن بار نکات پیش بارگذاری آره به جز فرگهای فرعی با طول نامشخص
پخش زنده
پخش زنده منظم آره
HLS کم تاخیر (Apple) آره
HLS با تأخیر کم (انجمن) نه
داده های مشترک رسانه مشتری (CMCD) آره راهنمای ادغام

فرمت های کانتینری پیشرفته

استریم‌ها در قالب‌های کانتینر زیر می‌توانند مستقیماً توسط ExoPlayer پخش شوند. فرمت‌های نمونه صوتی و تصویری موجود نیز باید پشتیبانی شوند (برای جزئیات به بخش فرمت‌های نمونه مراجعه کنید). برای پشتیبانی از محفظه تصویر و فرمت، به تصاویر مراجعه کنید.

قالب کانتینر پشتیبانی نظرات
MP4 آره
M4A آره
FMP4 آره
WebM آره
ماتروسکا آره
MP3 آره برخی از جریان‌ها فقط با استفاده از جستجوی نرخ بیت ثابت قابل جستجو هستند**
اوگ آره حاوی Vorbis، Opus و FLAC
WAV آره
MPEG-TS آره
MPEG-PS آره
FLV آره جستجو نشدنی*
ADTS (AAC) آره فقط با استفاده از جستجوی نرخ بیت ثابت قابل جستجو است**
FLAC آره استفاده از کتابخانه FLAC یا استخراج کننده FLAC در کتابخانه ExoPlayer ***
AMR آره فقط با استفاده از جستجوی نرخ بیت ثابت قابل جستجو است**

* جستجو پشتیبانی نمی‌شود زیرا کانتینر متادیتا (مثلاً یک نمایه نمونه) ارائه نمی‌کند تا به یک پخش کننده رسانه اجازه دهد جستجو را به روشی کارآمد انجام دهد. در صورت نیاز به جستجو، پیشنهاد می کنیم از قالب کانتینر مناسب تری استفاده کنید.

** این استخراج‌کننده‌ها دارای پرچم‌های FLAG_ENABLE_CONSTANT_BITRATE_SEEKING برای فعال کردن جستجوی تقریبی با استفاده از یک فرض نرخ بیت ثابت هستند. این عملکرد به طور پیش فرض فعال نیست. ساده ترین راه برای فعال کردن این عملکرد برای همه استخراج کننده هایی که از آن پشتیبانی می کنند، استفاده از DefaultExtractorsFactory.setConstantBitrateSeekingEnabled است، همانطور که در اینجا توضیح داده شده است.

*** استخراج‌کننده کتابخانه FLAC صدای خام را خروجی می‌دهد که می‌تواند توسط چارچوب در تمام سطوح API کنترل شود. استخراج کننده FLAC کتابخانه ExoPlayer فریم های صوتی FLAC را خروجی می دهد و بنابراین به داشتن یک رمزگشا FLAC متکی است (به عنوان مثال، رمزگشای MediaCodec که FLAC را کنترل می کند (مورد نیاز سطح API 27) یا کتابخانه FFmpeg با FLAC فعال است. اگر برنامه با کتابخانه FLAC ساخته شده باشد، DefaultExtractorsFactory از استخراج کننده افزونه استفاده می کند. در غیر این صورت، از استخراج کننده کتابخانه ExoPlayer استفاده می کند.

RTSP

ExoPlayer از RTSP زنده و درخواستی پشتیبانی می کند. فرمت های نمونه پشتیبانی شده و انواع شبکه در زیر فهرست شده است.

فرمت های نمونه پشتیبانی شده

  • H264 (توضیح رسانه SDP باید شامل داده های SPS/PPS در ویژگی fmtp برای مقداردهی اولیه رمزگشا باشد).
  • AAC (با جریان بیت ADTS).
  • AC3.

انواع شبکه های پشتیبانی شده

  • RTP روی UDP unicast (چندپست پشتیبانی نمی شود).
  • RTSP درهم، RTP روی RTSP با استفاده از TCP.

فرمت های نمونه

به طور پیش فرض ExoPlayer از رمزگشاهای پلتفرم اندروید استفاده می کند. از این رو فرمت‌های نمونه پشتیبانی شده به جای ExoPlayer به پلتفرم اصلی بستگی دارند. برای مستندات مربوط به قالب‌های نمونه پشتیبانی شده توسط دستگاه‌های Android، به فرمت‌های رسانه پشتیبانی شده مراجعه کنید. توجه داشته باشید که دستگاه‌های جداگانه ممکن است فرمت‌های دیگری فراتر از موارد ذکر شده را پشتیبانی کنند.

علاوه بر رمزگشاهای پلتفرم اندروید، ExoPlayer می تواند از پسوندهای رمزگشای نرم افزاری نیز استفاده کند. اینها باید به صورت دستی ساخته شده و در پروژه هایی که مایل به استفاده از آنها هستند گنجانده شوند. ما در حال حاضر کتابخانه های رمزگشای نرم افزاری را برای AV1 , VP9 , FLAC , Opus و FFmpeg ارائه می دهیم .

کتابخانه FFmpeg

کتابخانه FFmpeg از رمزگشایی انواع فرمت های نمونه صوتی مختلف پشتیبانی می کند. همانطور که در README.md کتابخانه مستند شده است، می‌توانید انتخاب کنید که کدام رمزگشاها در هنگام ساخت کتابخانه شامل شوند. جدول زیر یک نگاشت از فرمت نمونه صوتی به نام رمزگشا FFmpeg مربوطه را ارائه می دهد.

فرمت نمونه نام(های) رمزگشا
وربیس گرداب
اپوس اپوس
FLAC flac
ALAC الک
PCM μ-قانون pcm_mulaw
قانون PCM A pcm_alaw
MP1، MP2، MP3 mp3
AMR-NB امرنب
AMR-WB amrwb
AAC aac
AC-3 ac3
E-AC-3 eac3
DTS، DTS-HD dca
TrueHD mlp truehd

تصاویر

ExoPlayer از فرمت های تصویر زیر پشتیبانی می کند. برای نحوه ادغام با کتابخانه های خارجی که ممکن است از مجموعه فرمت های متفاوتی پشتیبانی کنند، به کتابخانه های بارگیری تصویر مراجعه کنید.

فرمت تصویر پشتیبانی یادداشت
BMP آره
GIF نه بدون پشتیبانی Extractor
JPEG آره
عکس حرکت JPEG آره تصویر ثابت و ویدیو پشتیبانی می شود
PNG آره
وب پی آره
HEIF/HEIC آره
عکس حرکت HEIC تا اندازه ای فقط تصویر ثابت پشتیبانی می شود*
AVIF (خط پایه) آره فقط در Android 14+ رمزگشایی شده است

* بخش ویدیویی عکس های حرکتی HEIC را می توان با MetadataRetriever دریافت کرد و به عنوان یک فایل مستقل پخش کرد.

فرمت های زیرنویس مستقل

ExoPlayer از فایل های زیرنویس مستقل در فرمت های مختلف پشتیبانی می کند. فایل‌های زیرنویس را می‌توان به‌صورت جانبی بارگذاری کرد، همانطور که در صفحه موارد رسانه توضیح داده شده است.

قالب کانتینر پشتیبانی نوع MIME
WebVTT آره MimeTypes.TEXT_VTT
TTML / SMPTE-TT آره MimeTypes.APPLICATION_TTML
SubRip آره MimeTypes.APPLICATION_SUBRIP
SubstationAlpha (SSA/ASS) آره MimeTypes.TEXT_SSA

پخش ویدئو HDR

ExoPlayer استخراج ویدیو با محدوده دینامیکی بالا (HDR) را در کانتینرهای مختلف، از جمله Dolby Vision در MP4 و HDR10+ در Matroska/WebM انجام می‌دهد. رمزگشایی و نمایش محتوای HDR به پشتیبانی از پلتفرم و دستگاه اندروید بستگی دارد. برای آشنایی با بررسی قابلیت‌های رمزگشایی/نمایش HDR و محدودیت‌های پشتیبانی HDR در نسخه‌های Android، به پخش ویدیوی HDR مراجعه کنید.

هنگام پخش یک جریان HDR که نیاز به پشتیبانی از یک نمایه کدک خاص دارد، انتخابگر MediaCodec پیش‌فرض ExoPlayer رمزگشایی را انتخاب می‌کند که از آن نمایه (در صورت موجود بودن) پشتیبانی می‌کند، حتی اگر رمزگشای دیگری برای همان نوع MIME که آن نمایه را پشتیبانی نمی‌کند در بالاترین قسمت ظاهر شود. لیست کدک این می تواند منجر به انتخاب یک رمزگشای نرم افزاری در مواردی شود که جریان از قابلیت های یک رمزگشای سخت افزاری برای همان نوع MIME فراتر رود.