מבוא ל-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 מחזיק בסשן מדיה ובנגן המשויך שלו בשירות נפרד מה-MediaSessionService הראשי של האפליקציה כדי לאפשר הפעלה ברקע.Activity
MediaController המחלקות MediaController משמשות בדרך כלל לשליחת פקודות מחוץ לאפליקציה, למשל מאפליקציות אחרות או מהמערכת עצמה. הפקודות נשלחות ל-Player הבסיסי של MediaSession המשויך. המחלקות MediaController מיישמות את הממשק Player, אבל כשמפעילים method, המחלקה MediaController שולחת את הפקודה שנשלחה אל MediaSession המחובר. אפליקציות לקוח כמו Google Assistant יכולות להשתמש ב-MediaController כדי לשלוט בהפעלה בסשן מחובר.
MediaLibraryService MediaLibraryService דומה ל-MediaSessionService, אבל הוא כולל ממשקי API נוספים שמאפשרים להציג את ספריית התוכן באפליקציות לקוח.
MediaBrowser המחלקות MediaBrowser מאפשרות למשתמש לנווט בספריית התוכן של אפליקציית מדיה ולבחור אילו פריטים להפעיל. המחלקה MediaBrowser מטמיעה את הממשקים MediaController ו-Player. בדומה ל-MediaController, אפליקציות לקוח כמו Android Auto בדרך כלל מטמיעות את MediaBrowser.

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

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

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

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

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

עריכת רכיבים

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

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

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

סרטון היכרות

בסרטון הבא מהמהנדסים שיצרו את Media3 יש מבוא לספרייה.