التنسيقات المتوافقة

عند تحديد التنسيقات التي يتوافق معها 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 نفسه.