ترقی خواه

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

با استفاده از MediaItem

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

کاتلین

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