פורמטים נתמכים

הפורמטים הנתמכים של ExoPlayer להיכרות עם במדיה הכללית באופן כללי. אותן מגבלות על טעינה, חילוץ, למרות שטרנספורמר לא תומך בטרנספורמר, אפשר לפענח אותו. המודולים של מפענחי תוכנה בחבילה של ExoPlayer.

הטרנספורמר מסתמך גם על MediaCodec לקידוד והוא צריך לבצע ריבוי עיבודים, או mux, קובצי מדיה לפלט, שמגביל את הפורמטים הנתמכים של פלט. צפייה קודקי וידאו של MediaCodec לקבלת מידע נוסף על מגבלות קידוד MediaMuxer מגבלות שחלות על קונטיינר המדיה של הפלט. Transformer בלבד יוצרת פלט של קובצי MP4.

כברירת מחדל, Transformer משתמש ב-MediaMuxer, אבל InAppMuxer בשלבי עבודה זמינה באופן אופציונלי כדי להימנע מחלק מהמגבלות של MediaMuxer למבנים של מסגרות הפניה ולפורמטים נתמכים לדוגמה. ברירת המחדל תהיה שיהפכו לכשירים בתוך האפליקציה במהדורה עתידית.

תמיכה בתמונות

הטרנספורמר משתמש ב-BitmapFactory כדי לטעון ולפענח את כל נכסי התמונות, לכן ה-Transformer תומך בכל הפורמטים הנתמכים ב-Bitmapworks. צפייה תמיכה בתמונות לקבלת סוגי תמונות נתמכים. בפורמטים של כמה תמונות (למשל קובצי GIF), צריך להוסיף תמונה אחת מוצגת מסגרת מהמאגר אם DefaultAssetLoaderFactory בשימוש.

פורמטים מיוחדים

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

טיפול בסרטוני HDR

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

ב-Transformer יש תמיכה בעריכה של סרטוני HDR מ-Android 13 (רמת API 33) ואילך במכשירים עם תמיכה בקידוד הנדרשת. בזמן עריכת סרטוני HDR, כל נתוני GL האפקטים של הווידאו צריכים לטפל ברכיבי צבע של נקודה צפה (floating-point) של 16 ביט וב-BT.2020 מרחב צבעים. HDR_MODE_KEEP_HDR הוא מצב ברירת המחדל בתהליך הפיתוח של Composition. אם אין תמיכה בעריכת HDR, הטרנספורמר חוזרים להשתמש ב-HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL.

ב-Android יש תמיכה בהמרת HDR ל-SDR, שנקרא גם מיפוי גוונים. 10 (רמת API 29) ואילך במכשירים עם הפענוח הנדרש ו-OpenGL תמיכה. האפשרות הזו שימושית כשמשתפים מדיה באיכות HDR עם אפליקציות או שירותים אחרים לא תומכים בהטמעת נתונים של תוכן HDR. כדי להפעיל מיפוי טונים באמצעות שיחת OpenGL setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) בזמן היצירה של Composition. החל מ-Android 12 (רמת API 31) ואילך, MediaCodec יש תמיכה גם במיפוי טונים במכשירים מסוימים, כולל כל המכשירים שפועלים מכשירי Android מגרסה 13 ואילך שיכולים לצלם סרטוני HDR. כדי להפעיל מיפוי טונים באמצעות MediaCodec שיחה אל setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC).

טיפול במדיה בהילוך איטי

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

כדי להשרות על סטרימינג בהילוך איטי, צריך להשתמש ב-builder setFlattenForSlowMotion ב-EditedMediaItem.

Kotlin

val editedMediaItem =
    EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build()
val transformer =
    Transformer.Builder(context).addListener(transformerListener).build()
transformer.start(editedMediaItem, outputPath)

Java

EditedMediaItem editedMediaItem =
    new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build();
Transformer transformer =
    new Transformer.Builder(context).addListener(transformerListener).build();
transformer.start(editedMediaItem, outputPath);

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