پیش‌رونده

جاری‌سازی‌ها در قالب‌های محتوی زیر را می‌توان مستقیماً با 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 صدای خام را برون‌برد می‌کند که در همه سطوح API توسط چارچوب قابل مدیریت است. برونداد استخراج‌کننده FLAC در کتابخانه ExoPlayer قاب‌های صوتی FLAC است و بنابراین به داشتن کدبند FLAC متکی است (برای مثال، MediaCodec کدبندی که FLAC را مدیریت می‌کند (از سطح API 27 الزامی است)، یا کتابخانه FFmpeg با فعال بودن FLAC). اگر برنامه با کتابخانه FLAC ساخته شده باشد، DefaultExtractorsFactory از استخراج‌کننده افزونه استفاده می‌کند. درغیراین‌صورت، از استخراج‌کننده کتابخانه ExoPlayer استفاده می‌کند.

درحال استفاده از MediaItem

برای پخش جاری‌سازی پیش‌رونده، MediaItem را با نشانی وب رسانه ایجاد کنید و آن را به پخش‌کننده ارسال کنید.

کاتلین

// 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()

جاوا

// 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، آن را مستقیماً به پخش‌کننده منتقل کنید.

کاتلین

// 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()

جاوا

// 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 روش‌های متعددی برای سفارشی‌سازی تجربه بازپخش براساس نیازهای برنامه شما ارائه می‌دهد. برای نمونه‌ها، صفحه سفارشی‌سازی را ببینید.