בתרחישים פשוטים, תחילת העבודה עם ExoPlayer
כוללת הטמעה
את השלבים הבאים:
- מוסיפים את ExoPlayer כתלות לפרויקט.
- יוצרים מכונה של
ExoPlayer
. - מחברים את הנגן לתצוגה (לפלט וידאו ולקלט של משתמשים).
- אפשר להכין את השחקן עם
MediaItem
למשחק. - שחרור הנגן בסיום.
השלבים האלה מתוארים בפירוט בהמשך. דוגמה מלאה זמינה במאמר בנושא
PlayerActivity
באפליקציית ההדגמה הראשית.
הוספת ExoPlayer כתלות
הוספת מודולים של ExoPlayer
הדרך הקלה ביותר להתחיל להשתמש ב-AndroidX Media3 היא להוסיף אפשרות
תלויות בספריות שדרושות לך בקובץ build.gradle
של האפליקציה
של מודל טרנספורמר.
לדוגמה, כדי להסתמך על ExoPlayer עם תמיכה בהפעלה DASH ורכיבי ממשק משתמש אפשר להוסיף יחסי תלות במודולים, באופן הבא:
Kotlin
implementation("androidx.media3:media3-exoplayer:1.4.1") implementation("androidx.media3:media3-exoplayer-dash:1.4.1") implementation("androidx.media3:media3-ui:1.4.1")
Groovy
implementation "androidx.media3:media3-exoplayer:1.4.1" implementation "androidx.media3:media3-exoplayer-dash:1.4.1" implementation "androidx.media3:media3-ui:1.4.1"
כאשר 1.4.1 היא הגרסה המועדפת עליך (ניתן למצוא את הגרסה העדכנית ביותר לעיין בנתוני הגרסה). כל המודולים חייבים להיות באותה גרסה.
ב-AndroidX Media3 יש מודולים של ספריות שתלויים ב- ספריות חיצוניות כדי לספק פונקציונליות נוספת. חלק מהם יהיו זמינים ממאגר Maven, ואילו סוגים אחרים צריכים להיבנות באופן ידני. ניתן לעיין בספריית הספריות ולעיין בקובצי README ספציפיים לפרטים נוספים.
מידע נוסף על המודולים של הספרייה הזמינים זמין ב דף המדיה של Google Maven ל-AndroidX.
הפעלת התמיכה ב-Java 8
אם האפשרות לא מופעלת עדיין, עליך להפעיל תמיכה ב-Java 8 בכל הbuild.gradle
קבצים שתלויים ב-ExoPlayer, על ידי הוספת הקוד הבא לקטע android
:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
הפעלת Multidex
אם ערך Gradle minSdkVersion
שלך הוא 20 ומטה, עליך
להפעיל Multidex לפי הסדר
כדי למנוע שגיאות build.
יצירת הנגן
אפשר ליצור מכונה של ExoPlayer
באמצעות ExoPlayer.Builder
, שמספקת
מגוון אפשרויות להתאמה אישית. הקוד הבא הוא הדוגמה הפשוטה ביותר
כשיוצרים מכונה.
Kotlin
val player = ExoPlayer.Builder(context).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build();
הערה לגבי שרשור
צריך לגשת למכונות של ExoPlayer משרשור של אפליקציה אחת. עבור ברוב המקרים, זה צריך להיות ה-thread הראשי של האפליקציה. באמצעות כשמשתמשים ברכיבי ממשק המשתמש של ExoPlayer, ה-thread הראשי של האפליקציה נדרש. או בתוסף IMA.
ניתן לגשת באופן מפורש לשרשור שבו צריך לגשת למופע של ExoPlayer
שצוינו על ידי העברת Looper
במהלך יצירת הנגן. אם לא, Looper
שצוין, אז ה-Looper
בשרשור שבו נוצר הנגן
נעשה בו שימוש, או אם השרשור לא מכיל Looper
, ב-Looper
נעשה שימוש ב-thread הראשי של האפליקציה. בכל המקרים, Looper
של השרשור מ-
שאליו צריך לגשת לנגן, אפשר לשלוח שאילתה באמצעות
Player.getApplicationLooper
.
למידע נוסף על מודל השרשורים של ExoPlayer אפשר לעיין ב 'מודל שרשורים' של ExoPlayer Javadoc.
צירוף הנגן לתצוגה
ספריית ExoPlayer מספקת מגוון רכיבים מוכנים מראש של ממשק המשתמש למדיה
להפעלה. למשל PlayerView
, שכולל
PlayerControlView
, SubtitleView
ו-Surface
שבהם הסרטון
שעבר עיבוד. אפשר לכלול PlayerView
בקובץ ה-XML של הפריסה של האפליקציה.
לדוגמה, כדי לקשר את הנגן לתצוגה:
Kotlin
// Bind the player to the view. playerView.player = player
Java
// Bind the player to the view. playerView.setPlayer(player);
אפשר גם להשתמש ב-PlayerControlView
כרכיב עצמאי,
הוא שימושי בתרחישים לדוגמה של אודיו בלבד.
השימוש ברכיבי ממשק המשתמש המוכנים מראש של ExoPlayer הוא אופציונלי. באפליקציות וידאו
שמטמיעים ממשק משתמש משלהם, היעד SurfaceView
, TextureView
,
אפשר להגדיר את SurfaceHolder
או את Surface
באמצעות ExoPlayer
setVideoSurfaceView
, setVideoTextureView
, setVideoSurfaceHolder
וגם
setVideoSurface
שיטות בהתאמה. ה-method addTextOutput
של ExoPlayer יכולה
כדי לקבל כיתובים שאמורים להיות מוצגים במהלך הפעלה.
אכלוס הפלייליסט והכנת הנגן
ב-ExoPlayer, כל קטע מדיה מיוצג על ידי MediaItem
. כדי לשחק
קטע מדיה, צריך ליצור MediaItem
תואם, להוסיף אותו
הנגן, מכינים את הנגן וקוראים לפונקציה play
כדי להתחיל את ההפעלה:
Kotlin
// Build the media item. val mediaItem = MediaItem.fromUri(videoUri) // Set the media item to be played. player.setMediaItem(mediaItem) // Prepare the player. player.prepare() // Start the playback. player.play()
Java
// Build the media item. MediaItem mediaItem = MediaItem.fromUri(videoUri); // Set the media item to be played. player.setMediaItem(mediaItem); // Prepare the player. player.prepare(); // Start the playback. player.play();
ExoPlayer תומך בפלייליסטים ישירות, כך שאפשר להכין את הנגן שכוללים פריטי מדיה רבים שיושמעו אחד אחרי השני:
Kotlin
// Build the media items. val firstItem = MediaItem.fromUri(firstVideoUri) val secondItem = MediaItem.fromUri(secondVideoUri) // Add the media items to be played. player.addMediaItem(firstItem) player.addMediaItem(secondItem) // Prepare the player. player.prepare() // Start the playback. player.play()
Java
// Build the media items. MediaItem firstItem = MediaItem.fromUri(firstVideoUri); MediaItem secondItem = MediaItem.fromUri(secondVideoUri); // Add the media items to be played. player.addMediaItem(firstItem); player.addMediaItem(secondItem); // Prepare the player. player.prepare(); // Start the playback. player.play();
ניתן לעדכן את הפלייליסט במהלך ההפעלה ללא צורך להכין את לנגן שוב. לקבלת מידע נוסף על אכלוס ושינוי של פלייליסט הדף 'פלייליסטים'. מידע נוסף על האפשרויות השונות שזמינות כאשר לבניית פריטי מדיה, כגון חיתוך וצירוף קובצי כתוביות, דף פריטי מדיה.
שליטה בנגן
לאחר שהנגן מוכן, אפשר לשלוט בהפעלה באמצעות שיטות קריאה בנגן. אלה כמה מהשיטות הנפוצות ביותר:
play
ו-pause
מתחילים ולהשהות את ההפעלה.seekTo
מאפשר דילוג בתוך המדיה.- ב
hasPrevious
, בhasNext
, בprevious
ובnext
אפשר לנווט דרך פלייליסט. setRepeatMode
קובע אם המדיה תופעל בלופ ובאיזה אופן.- מצב אקראי של פלייליסטים נקבע על ידי
setShuffleModeEnabled
. setPlaybackParameters
שינוי מהירות ההפעלה וגובה הצליל.
אם הנגן כפוף לPlayerView
או ל-PlayerControlView
,
האינטראקציה של המשתמש עם הרכיבים האלה תגרום לשיטות המתאימות
את הנגן שרוצים להפעיל.
שחרור הנגן
חשוב לשחרר את הנגן כשכבר אין בו צורך, כדי בחינם
ליצור משאבים מוגבלים כמו מפענחי וידאו לשימוש של אפליקציות אחרות. הזה
אפשר להתקשר אל ExoPlayer.release
.