عند تحديد التنسيقات التي يتوافق معها ExoPlayer، من المهم ملاحظة أنّه يتم تحديد "تنسيقات الوسائط" على مستويات متعدّدة. من المستوى الأدنى إلى الأكثر أهمية، إليك المستويات:
- تنسيق عيّنات الوسائط الفردية (مثل لقطة من الفيديو أو لقطة من الصوت) هذه هي أمثلة على التنسيقات. يُرجى العِلم أنّ ملف الفيديو العادي سيتضمّن وسائط بتنسيقَين نموذجيَّين على الأقل، أحدهما للفيديو (مثل H.264) وأحدهما للصوت (مثل AAC).
- تنسيق الحاوية التي تحتوي على نماذج الوسائط والبيانات الوصفية المرتبطة بها هذه هي تنسيقات الحاويات. يحتوي ملف الوسائط على حاوية واحدة بتنسيق معيّن (مثل MP4)، ويُشار إلى ذلك عادةً من خلال امتداد الملف. يُرجى العلم أنّه في بعض تنسيقات الصوت فقط (مثل MP3)، قد يكون تنسيق العيّنة والحاوية متطابقًا.
- تقنيات البث التكيُّفي، مثل DASH وSmoothStreaming وHLS هذه الأنواع ليست تنسيقات وسائط بحد ذاتها، ولكن لا يزال من الضروري تحديد مستوى التوافق الذي يوفّره ExoPlayer.
تحدِّد الأقسام التالية مدى توافق ExoPlayer مع كل مستوى، من الأعلى إلى الأدنى. يوضّح القسمان الأخيران مدى توافق المحتوى مع تنسيقات الترجمة والشرح المستقلة وتشغيل الفيديوهات بنطاق عالي الديناميكية (HDR).
البث التكيُّفي
DASH
يتوافق ExoPlayer مع DASH باستخدام تنسيقات حاويات متعددة. يجب إزالة الترميز من مصادر الوسائط، ما يعني أنّه يجب تحديد الفيديو والصوت والنص في عناصر
AdaptationSet
منفصلة في بيان DASH (CEA-608 هو استثناء كما هو описан في الجدول أدناه). يجب أيضًا أن تكون تنسيقات عيّنات الصوت والفيديو المضمّنة متوافقة (اطّلِع على القسم
تنسيقات العيّنات لمعرفة التفاصيل).
الميزة | معلومات معتمَدة | التعليقات |
---|---|---|
الحاويات | ||
FMP4 | نعم | أحداث البث التي تم فك ترميزها فقط |
WebM | نعم | أحداث البث التي تم فك ترميزها فقط |
Matroska | نعم | أحداث البث التي تم فك ترميزها فقط |
MPEG-TS | لا | لا يتوفّر دعم |
الترجمة والشرح / الترجمة | ||
TTML | نعم | تنسيق RAW أو مضمّن في FMP4 وفقًا لمعيار ISO/IEC 14496-30 |
WebVTT | نعم | تنسيق RAW أو مضمّن في FMP4 وفقًا لمعيار ISO/IEC 14496-30 |
CEA-608 | نعم | تكون مضمّنة في FMP4 عند الإشارة إليها باستخدام وصفي تسهيل الاستخدام في SCTE |
CEA-708 | نعم | تكون مضمّنة في FMP4 عند الإشارة إليها باستخدام وصفي تسهيل الاستخدام في SCTE |
البيانات الوصفية | ||
البيانات الوصفية لتنسيق EMSG | نعم | مضمّنة في FMP4 |
حماية المحتوى | ||
Widevine | نعم | مخطّط "cenc": الإصدار 19 من واجهة برمجة التطبيقات والإصدارات الأحدث مخطّط "cbcs": الإصدار 25 من واجهة برمجة التطبيقات والإصدارات الأحدث |
PlayReady SL2000 | نعم | Android TV، مخطّط "cenc" فقط |
ClearKey | نعم | الإصدار 21 من واجهة برمجة التطبيقات والإصدارات الأحدث، مخطّط "cenc" فقط |
إدراج الإعلانات | ||
تشغيل بيانات لعدة فترات زمنية | نعم | |
إدراج الإعلانات بتوجيه من الخادم (xlinks) | لا | |
إعلانات IMA من جهة العميل وخادم | نعم | دليل إدراج الإعلانات |
التشغيل المباشر | ||
التشغيل المباشر العادي | نعم | |
تشغيل البث المباشر باستخدام CMAF بوقت استجابة فائق السرعة | نعم | |
بيانات العميل المشترك للوسائط (CMCD) | نعم | دليل دمج 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 | نعم | |
البيانات الوصفية | ||
رقم التعريف 3 | نعم | |
SCTE-35 | لا | |
حماية المحتوى | ||
AES-128 | نعم | |
نموذج AES-128 | لا | |
Widevine | نعم | الإصدار 19 من واجهة برمجة التطبيقات والإصدارات الأحدث ("مخطط cenc") و الإصدار 25 من واجهة برمجة التطبيقات والإصدارات الأحدث ("مخطط cbcs") |
PlayReady SL2000 | نعم | Android TV فقط |
التحكّم في الخادم | ||
تعديلات دلتا | نعم | |
حظر إعادة تحميل قائمة التشغيل | نعم | |
حظر تحميل إشارات التحميل المُسبَق | نعم | باستثناء نطاقات البايت التي تتضمن أطوالًا غير محدّدة |
إدراج الإعلانات | ||
إدراج الإعلانات بتوجيه من الخادم (الإعلانات البينية) | جزئيًا | الفيديوهات عند الطلب فقط مع X-ASSET-URI
ستتم إضافة أحداث البث المباشر وX-ASSET-LIST
لاحقًا. |
إعلانات IMA من جهة العميل وخادم | نعم | دليل إدراج الإعلانات |
التشغيل المباشر | ||
التشغيل المباشر العادي | نعم | |
البث المباشر وفق بروتوكول HTTP (HLS) بوقت استجابة منخفض (Apple) | نعم | |
البث المباشر وفق بروتوكول HTTP (HLS) بوقت استجابة منخفض (المنتدى) | لا | |
بيانات العميل المشترك في الوسائط CMCD | نعم | دليل دمج CMCD |
تنسيقات الحاويات المتقدّمة
يمكن لتطبيق ExoPlayer تشغيل أحداث البث بتنسيقات الحاويات التالية مباشرةً. يجب أيضًا أن تكون تنسيقات عيّنات الصوت والفيديو المضمّنة متوافقة (اطّلِع على القسم تنسيقات العيّنات لمعرفة التفاصيل). للاطّلاع على معلومات حول الحاويات والتنسيقات المتوافقة مع الصور، يُرجى الاطّلاع على مقالة الصور.
تنسيق الحاوية | معلومات معتمَدة | التعليقات |
---|---|---|
MP4 | نعم | |
M4A | نعم | |
FMP4 | نعم | |
WebM | نعم | |
Matroska | نعم | |
MP3 | نعم | يمكن تقديم/ترجيع بعض أحداث البث باستخدام ميزة تقديم/ترجيع بمعدل نقل بيانات ثابت فقط** |
Ogg | نعم | أن تحتوي على Vorbis وOpus وFLAC |
WAV | نعم | |
MPEG-TS | نعم | |
MPEG-PS | نعم | |
FLV | نعم | لا يمكن تقديم أو ترجيع الفيديو* |
ADTS (AAC) | نعم | يمكن تقديم/ترجيع الفيديو باستخدام ميزة تقديم/ترجيع الفيديو بمعدّل نقل بيانات ثابت فقط** |
FLAC | نعم | باستخدام مكتبة FLAC أو أداة استخراج FLAC في مكتبة ExoPlayer*** |
AMR | نعم | يمكن تقديم/ترجيع الفيديو باستخدام ميزة تقديم/ترجيع الفيديو بمعدّل نقل بيانات ثابت فقط** |
* لا تتوفّر ميزة التقديم/الترجيع لأنّ الحاوية لا توفّر بيانات وصفية (مثل فهرس عيّنات) للسماح لمشغّل الوسائط بإجراء عملية تقديم/ترجيع بطريقة فعّالة. إذا كان من الضروري تقديم ميزة التقديم/الترجيع، ننصحك باستخدام تنسيق حاوية أكثر ملاءمةً.
** تحتوي هذه النازعات على علامات FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
لأجل
تفعيل التقديم/الترجيع التقريبي باستخدام افتراض معدل نقل بيانات ثابت. لا تكون هذه الميزة مفعّلة تلقائيًا. إنّ أبسط طريقة لتفعيل هذه الميزة في جميع برامج الاستخراج المتوافقة معها هي استخدام DefaultExtractorsFactory.setConstantBitrateSeekingEnabled
، كما هو موضّح هنا.
*** تُخرج أداة استخراج مكتبة FLAC ملفًا صوتيًا خامًا يمكن التعامل معه
من خلال إطار العمل على جميع مستويات واجهة برمجة التطبيقات. تُخرج أداة استخراج FLAC في مكتبة ExoPlayer ملفًا يحتوي على
إطارات صوت FLAC، لذا تعتمد على توفُّر برنامج ترميز FLAC (على سبيل المثال، MediaCodec
برنامج ترميز يعالج FLAC (مطلوب من المستوى 27 من واجهة برمجة التطبيقات) أو
مكتبة FFmpeg مع تفعيل FLAC). يستخدم DefaultExtractorsFactory
أداة استخراج الإضافات إذا تم إنشاء التطبيق باستخدام مكتبة FLAC.
وبخلاف ذلك، يستخدم أداة استخراج مكتبة ExoPlayer.
RTSP
يتوافق ExoPlayer مع بروتوكول RTSP للبث المباشر والمسجّل. في ما يلي تنسيقات العيّنات المتوافقة وأنواع الشبكات.
تنسيقات العيّنات المتوافقة
- H264 (يجب أن يتضمّن وصف وسائط SDP بيانات SPS/PPS في سمة fmtp لبدء تشغيل وحدة الترميز)
- الترميز المتقدّم للصوت (مع بث ADTS)
- AC3
أنواع الشبكات المتوافقة
- بروتوكول RTP عبر بروتوكول UDP للبث المباشر إلى مستخدم واحد (لا يتوفّر البث المتعدد)
- RTSP وRTP المُدرَجَين عبر RTSP باستخدام بروتوكول TCP
نماذج التنسيقات
يستخدم ExoPlayer بشكلٍ تلقائي برامج ترميز النظام الأساسي في Android. وبالتالي، تعتمد التنسيقات المتوافقة للعيّنات على النظام الأساسي بدلاً من ExoPlayer. يُرجى الرجوع إلى تنسيقات الوسائط المتوافقة للحصول على مستندات حول نماذج التنسيقات المتوافقة مع أجهزة Android. يُرجى العِلم أنّه قد تتيح الأجهزة الفردية تنسيقات إضافية غير تلك المُدرَجة.
بالإضافة إلى برامج الترميز الخاصة بمنصّة Android، يمكن أن يستخدِم ExoPlayer أيضًا إضافات برامج الترميز. ويجب إنشاء هذه العناصر يدويًا وتضمينها في المشاريع التي تريد الاستفادة منها. نوفّر حاليًا مكتبات برمجية لفك ترميز AV1 وVP9 وFLAC وOpus وFFmpeg وMIDI وIAMF وMPEG-H.
مكتبة FFmpeg
تتيح مكتبة FFmpeg فك ترميز مجموعة متنوعة من تنسيقات ملفّات محتوى الصوت المختلفة. يمكنك اختيار برامج الترميز المطلوب تضمينها عند إنشاء المكتبة، كما هو موضّح في README.md الخاص بالمكتبة. يقدّم الجدول التالي تعيينًا من تنسيق عيّنة الصوت إلى اسم رمز ترميز FFmpeg المقابل.
نموذج العينة | أسماء برامج فك الترميز |
---|---|
Vorbis | vorbis |
Opus | opus |
FLAC | flac |
ALAC | alac |
ترميز PCM μ-law | pcm_mulaw |
PCM A-law | pcm_alaw |
MP1 وMP2 وMP3 | mp3 |
AMR-NB | amrnb |
AMR-WB | amrwb |
الترميز المتقدّم للصوت | aac |
AC-3 | ac3 |
E-AC-3 | eac3 |
DTS وDTS-HD | dca |
TrueHD | mlp truehd |
صور
يتوافق ExoPlayer مع تنسيقات الصور التالية. اطّلِع على مكتبات تحميل الصور للتعرّف على كيفية الدمج مع المكتبات الخارجية التي قد توفّر دعمًا لمجموعة مختلفة من التنسيقات.
تنسيق الصورة | معلومات معتمَدة | الملاحظات |
---|---|---|
BMP | نعم | |
ملف GIF | لا | لا تتوفّر أداة استخراج |
JPEG | نعم | |
صورة متحركة بتنسيق JPEG | نعم | الصور الثابتة والفيديوهات متوافقة |
دقة HDR فائقة بتنسيق JPEG | نعم | يتم الرجوع إلى النطاق الديناميكي العادي (SDR) قبل Android 14 أو على الشاشات غير المزوّدة بتقنية النطاق العالي الديناميكية |
PNG | نعم | |
WebP | نعم | |
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 وعرضه على مدى توافقه مع نظام التشغيل Android والجهاز. اطّلِع على مقالة تشغيل الفيديوهات بنطاق عالي الديناميكية (HDR) للتعرّف على إمكانيات فك ترميز/عرض الفيديوهات بنطاق عالي الديناميكية (HDR) والقيود المفروضة على استخدام ميزة النطاق العالي الديناميكية (HDR) في جميع إصدارات Android.
عند تشغيل بث بدقة عالية واتّباع ملف شخصي معيّن لبرنامج الترميز، سيختار MediaCodec
التلقائي في ExoPlayer وحدة فك ترميز متوافقة مع هذا الملف الشخصي (إذا كان متاحًا)، حتى إذا كانت وحدة فك ترميز أخرى من النوع نفسه MediaCodec
ومتاحة في أعلى قائمة برامج الترميز لا تتوافق مع هذا الملف الشخصي. ويمكن أن يؤدي ذلك
إلى اختيار برنامج ترميز في الحالات التي يتجاوز فيها البث
إمكانات برنامج ترميز الأجهزة لنوع MIME نفسه.