מבוא ל-Jetpack Media3

‫Jetpack Media3 הוא הבית החדש של ספריות המדיה שמאפשרות לאפליקציות ל-Android להציג חוויות אודיו ווידאו עשירות. ‫Media3 מציע ארכיטקטורה פשוטה עם התאמה אישית מתקדמת, אמינות ואופטימיזציות שמבוססות על יכולות המכשיר, כדי להפחית את המורכבות שנובעת מפרגמנטציה.

במסמך הזה מוסבר על ממשקי API מרכזיים להטמעה של תרחישים לדוגמה של הפעלה ועריכה באמצעות Media3.

רכיבי הפעלה

‫Media3 מציעה כמה רכיבים מרכזיים לתרחישי שימוש של הפעלה. אם עבדתם עם ספריות מדיה קודמות של Android, אתם כבר מכירים את המחלקות שמרכיבות את הרכיבים האלה.

התרשים הבא ממחיש איך הרכיבים האלה משתלבים באפליקציה טיפוסית.

הרכיבים השונים של אפליקציית מדיה שמשתמשת ב-Media3 מתחברים יחד בכמה דרכים פשוטות, כי הם משתפים ממשקים ומחלקות.
איור 1: רכיבים של אפליקציית מדיה

נגן המדיה

נגן מדיה הוא רכיב באפליקציה שמאפשר להפעיל קובצי מדיה. ב-Media3 אפשר למצוא:

כיתה תיאור הערה לגבי ההטמעה
Player ‫Player הוא ממשק שמגדיר יכולות מסורתיות ברמה גבוהה לנגן מדיה, כמו היכולת להפעיל, להשהות ולחפש. ב-Media3, הממשק Player הוא API נפוץ שמוטמע בכמה רכיבים או משמש אותם, למשל MediaSession ו-MediaController.
ExoPlayer ‫ExoPlayer הוא הטמעת ברירת המחדל של ממשק Player ב-Media3.

מידע נוסף על Media3 ExoPlayer

סשן המדיה

סשן מדיה מספק דרך אוניברסלית לאינטראקציה עם נגן מדיה. ההרשאה הזו מאפשרת לאפליקציה לפרסם הפעלת מדיה למקורות חיצוניים ולקבל בקשות לשליטה בהפעלה ממקורות חיצוניים. ב-Media3 אפשר למצוא:

כיתה תיאור הערה לגבי ההטמעה
MediaSession סשנים של מדיה מאפשרים לאפליקציה לקיים אינטראקציה עם נגן אודיו או וידאו. הם מפרסמים את הפעלת המדיה באופן חיצוני ומקבלים פקודות הפעלה ממקורות חיצוניים. ב-Media3, כדי להריץ פקודות ולקבל את המצב הנוכחי, MediaSession צריך Player.
MediaSessionService ה-MediaSessionService מכיל סשן מדיה ואת הנגן שמשויך אליו בשירות נפרד מה-Activity הראשי של האפליקציה, כדי לאפשר הפעלה ברקע.
MediaController בדרך כלל משתמשים במחלקה MediaController כדי לשלוח פקודות מחוץ לאפליקציה, למשל מאפליקציות אחרות או מהמערכת עצמה. הפקודות נשלחות אל Player הבסיסי של MediaSession המשויך. המחלקה MediaController מטמיעה את הממשק Player, אבל כשמפעילים שיטה, MediaController שולחת את הפקודה שנשלחה אל MediaSession המחובר. אפליקציות לקוח כמו Google Assistant יכולות להשתמש ב-MediaController כדי לשלוט בהפעלה בסשן מחובר.
MediaLibraryService ‫MediaLibraryService דומה ל-MediaSessionService, אבל הוא כולל ממשקי API נוספים שמאפשרים להציג את ספריית התוכן לאפליקציות לקוח.
MediaBrowser הכיתה MediaBrowser מאפשרת למשתמש לנווט בספריית התוכן של אפליקציית המדיה ולבחור אילו פריטים להפעיל. המחלקה MediaBrowser מטמיעה את הממשקים MediaController ו-Player. בדומה ל-MediaController, אפליקציות לקוח כמו Android Auto בדרך כלל מטמיעות את MediaBrowser.

מידע נוסף על Media3 MediaSession

רכיבי ממשק המשתמש

‫Media3 מספק רכיבי ממשק משתמש שמוגדרים כברירת מחדל לצפייה בסרטונים ולשליטה בהפעלה.

כיתה תיאור הערה לגבי ההטמעה
PlayerView ‫View כברירת מחדל להצגת הסרטון ורכיבי ה-UI להפעלה. מתחבר אל ExoPlayer,‏ MediaController או כל Player אחר בהתאמה אישית.
PlayerSurface רכיב קומפוזבילי שמייצג משטח ציור ייעודי Surface להצגת סרטון. מתחבר לכל Player, אבל לא מכיל רכיבי UI להפעלה. משמש רק לעיבוד של פריימים ואפשר לשנות את הגודל שלו בהתאם לסוגים שונים של ContentScale. אפשר למצוא את הרכיב הזה ורכיבים קומפוזביליים רבים אחרים בכלי העזר של ממשק המשתמש של Compose.

מידע נוסף על ממשק המשתמש של Media3

עריכת רכיבים

‫Media3 כולל את ממשקי ה-API של Transformer לתרחישי שימוש של עריכת מדיה, כולל:

  • עיבוד אודיו ווידאו, כמו הוספת פילטרים ואפקטים
  • טיפול בפורמטים מיוחדים, כמו סרטוני HDR וסרטונים בהילוך איטי
  • קומפוזיציה, כמו שילוב של כמה קובצי קלט
  • ייצוא הפלט הסופי לקובץ
כיתה תיאור הערה לגבי ההטמעה
Transformer משתמשים במחלקה Transformer כדי להתחיל ולהפסיק טרנספורמציות, וכדי לבדוק אם יש עדכונים לגבי ההתקדמות של טרנספורמציה שפועלת.
Effects אובייקט Effects הוא אוסף של אפקטים של אודיו ווידאו שאפשר להחיל על קובץ מדיה. אפשר להשתמש ב-ExoPlayer כדי לראות תצוגה מקדימה של האפקטים שנוספו לקובץ מדיה לפני שמתחילים את תהליך הייצוא.
EditedMediaItem ‫EditedMediaItem מייצג קובץ מדיה לעיבוד ואת העריכות שצריך להחיל עליו.

מידע נוסף על Media3 Transformer

סרטון היכרות

בסרטון הבא יש מבוא ל-Media3 מהמהנדסים שפיתחו את הספרייה: