ניתן להפעיל ישירות סטרימינג בפורמטים הבאים של קונטיינרים ב-ExpoPlayer. צריכה להיות תמיכה גם בפורמטים של דגימות האודיו והווידאו שנכללות (אפשר לעיין ב פורמטים לדוגמה. למידע על תמיכה בפורמט ובמאגר תמונות, אפשר לעיין במאמר תמונות.
פורמט מאגר | נתמך | תגובות |
---|---|---|
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). השדה DefaultExtractorsFactory
משתמש
מחלץ תוספים אם האפליקציה נוצרה באמצעות ספריית FLAC.
אחרת, הוא משתמש במחלץ ספריית ExoPlayer.
שימוש ב-MediaItem
כדי להפעיל שידור Progressive, צריך ליצור 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 מספק דרכים רבות להתאמה אישית של חוויית ההפעלה לצרכים של האפליקציה. אפשר לראות דוגמאות בדף ההתאמה האישית.