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