يمكن تشغيل مجموعات البث بتنسيقات الحاويات التالية مباشرةً من خلال 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 على إخراج صوت أوّلي يمكن التعامل معه.
من خلال إطار العمل على جميع مستويات واجهة برمجة التطبيقات. نتائج أداة استخراج ملفات FLAC في مكتبة ExoPlayer
تعتمد إطارات الصوت بتنسيق FLAC ولذلك على توفُّر برنامج فك ترميز FLAC (على سبيل المثال، MediaCodec
برنامج فك الترميز الذي يعالج تنسيق FLAC (مطلوب من المستوى 27 لواجهة برمجة التطبيقات)
مكتبة FFmpeg مع تفعيل FLAC). يستخدم DefaultExtractorsFactory
أداة استخراج الإضافات إذا تم إنشاء التطبيق باستخدام مكتبة FLAC.
وبخلاف ذلك، يتم استخدام أداة استخراج مكتبة ExoPlayer.
استخدام MediaItem
لتشغيل بث تقدّمي، أنشِئ MediaItem
باستخدام معرّف الموارد المنتظم (URI) للوسائط، ثم أنشِئه.
إلى المشغّل.
Kotlin
// Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(progressiveUri)) // Prepare the player. player.prepare()
Java
// Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(progressiveUri)); // Prepare the player. player.prepare();
استخدام ProgressiveMediaSource
لمزيد من خيارات التخصيص، يمكنك إنشاء ProgressiveMediaSource
تمريره مباشرةً إلى المشغّل بدلاً من تمرير MediaItem
.
Kotlin
// Create a data source factory. val dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory() // Create a progressive media source pointing to a stream uri. val mediaSource: MediaSource = ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(MediaItem.fromUri(progressiveUri)) // Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media source to be played. player.setMediaSource(mediaSource) // Prepare the player. player.prepare()
Java
// Create a data source factory. DataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory(); // Create a progressive media source pointing to a stream uri. MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(MediaItem.fromUri(progressiveUri)); // Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media source to be played. player.setMediaSource(mediaSource); // Prepare the player. player.prepare();
تخصيص عملية التشغيل
يوفّر لك ExoPlayer العديد من الطرق لتخصيص تجربة التشغيل بما يتناسب مع واحتياجاته. اطّلِع على صفحة التخصيص للحصول على أمثلة.