عند تحديد التنسيقات التي يتوافق معها ExoPlayer، من المهم ملاحظة أنّ "تنسيقات الوسائط" يتم تحديدها على مستويات متعددة. في ما يلي مستويات الوصول، من الأدنى إلى الأعلى:
- تنسيق عيّنات الوسائط الفردية (مثل إطار فيديو أو إطار صوت). هذه نماذج للتنسيقات. يُرجى العِلم أنّ ملف الفيديو العادي يحتوي على وسائط بتنسيقَين على الأقل، أحدهما للفيديو (مثل H.264) والآخر للصوت (مثل AAC).
- تنسيق الحاوية التي تضم عيّنات الوسائط والبيانات الوصفية المرتبطة بها هذه تنسيقات حاوية. يحتوي ملف الوسائط على تنسيق حاوية واحد (مثل MP4)، ويتم الإشارة إليه عادةً من خلال امتداد الملف. يُرجى العِلم أنّه بالنسبة إلى بعض التنسيقات الصوتية فقط (مثل MP3)، قد يكون تنسيق العيّنة وتنسيق الحاوية متطابقَين.
- تقنيات البث التكيُّفي، مثل DASH وSmoothStreaming وHLS هذه ليست تنسيقات وسائط بحد ذاتها، ولكن لا يزال من الضروري تحديد مستوى التوافق الذي يوفّره ExoPlayer.
تحدّد الأقسام التالية مستوى توافق ExoPlayer مع كل مستوى من مستويات الترميز، بدءًا من الأعلى إلى الأدنى. يصف القسمان الأخيران إمكانية استخدام صيغ الترجمة والشرح المستقلة وتشغيل الفيديوهات بنطاق عالي الديناميكية.
البث التكيّفي
DASH
يتوافق ExoPlayer مع DASH بتنسيقات حاويات متعددة. يجب فصل تدفقات الوسائط، ما يعني أنّه يجب تحديد الفيديو والصوت والنص في عناصر AdaptationSet منفصلة في بيان DASH (يُستثنى من ذلك CEA-608 كما هو موضّح في الجدول أدناه). يجب أن تكون تنسيقات عيّنات الصوت والفيديو المضمّنة متوافقة أيضًا (راجِع قسم تنسيقات العيّنات لمعرفة التفاصيل).
| الميزة | متاح | التعليقات |
|---|---|---|
| الحاويات | ||
| FMP4 | نعم | مقاطع الفيديو التي تم فصل الصوت عن الفيديو فيها فقط |
| WebM | نعم | مقاطع الفيديو التي تم فصل الصوت عن الفيديو فيها فقط |
| Matroska | نعم | مقاطع الفيديو التي تم فصل الصوت عن الفيديو فيها فقط |
| MPEG-TS | لا | لم يتم التخطيط لتوفير الدعم |
| الترجمة والشرح / الترجمة | ||
| TTML | نعم | تنسيق خام أو مضمّن في FMP4 وفقًا لمعيار ISO/IEC 14496-30 |
| WebVTT | نعم | تنسيق خام أو مضمّن في FMP4 وفقًا لمعيار ISO/IEC 14496-30 |
| CEA-608 | نعم | مضمّنة في FMP4 عند الإشارة إليها باستخدام واصفات SCTE Accessibility |
| CEA-708 | نعم | مضمّنة في FMP4 عند الإشارة إليها باستخدام واصفات SCTE Accessibility |
| البيانات الوصفية | ||
| البيانات الوصفية لرسائل الطوارئ | نعم | مضمّنة في FMP4 |
| حماية المحتوى | ||
| Widevine | نعم | مخطط "cenc": الإصدار 19 من واجهة برمجة التطبيقات أو الإصدارات الأحدث مخطط "cbcs": الإصدار 25 من واجهة برمجة التطبيقات أو الإصدارات الأحدث |
| PlayReady SL2000 | نعم | Android TV، نظام "cenc" فقط |
| ClearKey | نعم | الإصدار 21 من واجهة برمجة التطبيقات أو الإصدارات الأحدث، نظام "cenc" فقط |
| إدراج الإعلانات | ||
| تشغيل متعدد الفترات | نعم | |
| إدراج الإعلانات الموجّه من الخادم (xlinks) | لا | |
| إعلانات الوسائط التفاعلية من جهة الخادم ومن جهة العميل | نعم | دليل إدراج الإعلانات |
| التشغيل المباشر | ||
| التشغيل العادي للبث المباشر | نعم | |
| تشغيل المحتوى المباشر بتنسيق CMAF مع وقت استجابة سريع جدًا | نعم | |
| بيانات عميل الوسائط الشائعة (CMCD) | نعم | دليل دمج CMCD |
SmoothStreaming
يتوافق ExoPlayer مع SmoothStreaming باستخدام تنسيق حاوية FMP4. يجب فصل تدفقات الوسائط، ما يعني أنّه يجب تحديد الفيديو والصوت والنص في عناصر StreamIndex منفصلة في بيان SmoothStreaming. يجب أيضًا أن تكون تنسيقات عيّنات الصوت والفيديو المضمّنة متوافقة (لمزيد من التفاصيل، يُرجى الاطّلاع على قسم تنسيقات العيّنات).
| الميزة | متاح | التعليقات |
|---|---|---|
| الحاويات | ||
| FMP4 | نعم | مقاطع الفيديو التي تم فصل الصوت عن الفيديو فيها فقط |
| الترجمة والشرح | ||
| TTML | نعم | مضمّنة في FMP4 |
| حماية المحتوى | ||
| PlayReady SL2000 | نعم | Android TV فقط |
| التشغيل المباشر | ||
| التشغيل العادي للبث المباشر | نعم | |
| بيانات عميل الوسائط الشائعة (CMCD) | نعم | دليل الدمج |
HLS
يتوافق ExoPlayer مع HLS بتنسيقات حاويات متعددة. يجب أن تكون تنسيقات عيّنات الصوت والفيديو المضمّنة متوافقة أيضًا (راجِع قسم تنسيقات العيّنات للحصول على التفاصيل). ننصح بشدة منتجي المحتوى المتوافق مع بروتوكول HLS بإنشاء بث مباشر عالي الجودة وفق هذا البروتوكول، كما هو موضح في منشور المدونة هذا.
| الميزة | متاح | التعليقات |
|---|---|---|
| الحاويات | ||
| MPEG-TS | نعم | |
| FMP4/CMAF | نعم | |
| ADTS (AAC) | نعم | |
| MP3 | نعم | |
| الترجمة والشرح / الترجمة | ||
| CEA-608 | نعم | |
| CEA-708 | نعم | |
| WebVTT | نعم | |
| البيانات الوصفية | ||
| ID3 | نعم | |
| SCTE-35 | لا | |
| حماية المحتوى | ||
| AES-128 | نعم | |
| نموذج AES-128 | لا | |
| Widevine | نعم | الإصدار 19 من واجهة برمجة التطبيقات أو الإصدارات الأحدث (مخطط "cenc") والإصدار 25 أو الإصدارات الأحدث (مخطط "cbcs") |
| PlayReady SL2000 | نعم | Android TV فقط |
| التحكّم في الخادم | ||
| تحديثات دلتا | نعم | |
| حظر إعادة تحميل قائمة التشغيل | نعم | |
| حظر تحميل تلميحات التحميل المُسبَق | نعم | باستثناء نطاقات البايتات التي تتضمّن أطوالاً غير محدّدة |
| إدراج الإعلانات | ||
| إدراج الإعلانات الموجّه من الخادم (الإعلانات البينية) | جزئيًا | فيديوهات عند الطلب فقط مع X-ASSET-URI
ستتم إضافة فيديوهات البث المباشر وX-ASSET-LIST لاحقًا. |
| إعلانات الوسائط التفاعلية من جهة الخادم ومن جهة العميل | نعم | دليل إدراج الإعلانات |
| التشغيل المباشر | ||
| التشغيل العادي للبث المباشر | نعم | |
| البث المباشر وفق بروتوكول 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 | aac |
| AC-3 | ac3 |
| E-AC-3 | eac3 |
| DTS وDTS-HD | dca |
| TrueHD | mlp truehd |
صور
يتوافق ExoPlayer مع تنسيقات الصور التالية. يمكنك الاطّلاع على مكتبات تحميل الصور لمعرفة كيفية الدمج مع المكتبات الخارجية التي قد توفّر دعمًا لمجموعة مختلفة من التنسيقات.
| تنسيق الصورة | متاح | الملاحظات |
|---|---|---|
| BMP | نعم | |
| ملف GIF | لا | لا تتوفّر أداة الاستخراج |
| JPEG | نعم | |
| صورة Motion JPEG | نعم | صور ثابتة وفيديوهات متوافقة |
| JPEG Ultra HDR | نعم | الرجوع إلى النطاق العادي الديناميكية (SDR) قبل Android 14 أو على شاشات غير متوافقة مع النطاق العالي الديناميكية (HDR) |
| PNG | نعم | |
| WebP | نعم | |
| HEIF/HEIC | نعم | |
| صورة حيّة بتنسيق HEIC | نعم | |
| AVIF (المرجع) | نعم | يمكن فك ترميزها على أجهزة Android 14 والإصدارات الأحدث فقط |
تنسيقات الترجمة والشرح المستقلة
يتوافق 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 المختلفة.
عند تشغيل بث HDR يتطلّب التوافق مع ملف تعريف برنامج ترميز معيّن، سيختار أداة اختيار MediaCodec التلقائية في ExoPlayer برنامج ترميز متوافقًا مع ملف التعريف هذا (إذا كان متاحًا)، حتى إذا ظهر برنامج ترميز آخر لنوع MIME نفسه لا يتوافق مع ملف التعريف هذا في أعلى قائمة برامج الترميز. وقد يؤدي ذلك إلى اختيار برنامج فك ترميز في الحالات التي يتجاوز فيها البث إمكانات برنامج فك الترميز للأجهزة لنوع MIME نفسه.