פתרון בעיות


למה אי אפשר לגשת לקבצים מקומיים באפליקציית ההדגמה?

אכיפה של נפח אחסון מורחב מ-Android 11 (רמת API 30) מונעת גישה ישירה למערכת הקבצים. לבדיקה ידנית במהלך אפשר לגשת לקבצים מקומיים על ידי הוספת הרשאת אחסון בקובץ ההדגמה של אפליקציית ההדגמה:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

לאחר מכן מעניקים את ההרשאה דרך adb:

adb shell appops set --uid androidx.media3.demo.transformer \
    MANAGE_EXTERNAL_STORAGE allow

למה הייצוא נכשל במכשיר מסוים?

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

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

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

כשיש תנאי רשת גרועים מאוד, הייצוא עלול להיכשל עקב אגירת הנתונים. הפעלת מדיה מרחוק למשך זמן ארוך מדי מפעילה בדיקות בשרת שנועדו לזהות שצינור עיבוד הנתונים תקוע. אפשר לשנות את התנהגות ברירת המחדל על ידי הגדרה של maxDelayBetweenMuxerSamplesMs ב-Transformer.Builder:

Kotlin

Transformer.Builder(context)
    .setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET)
    .build()

Java

new Transformer.Builder(context)
    .setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET)
    .build();

העברה של C.TIME_UNSET מסירה לגמרי את הזמן הקצוב לתפוגה, אבל אם האפליקציה פועלת ערכות שבבים שבהן MediaCodec יכול להיתקע, כדאי להגדיר מכשיר גדול יותר שאינו אפס הזמן הקצוב לתפוגה.

האם הטרנספורמר תומך בקלט 8k?

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

מה הקשר של טרנספורמר להמרת קידוד של מדיה שתואמת לפלטפורמה?

המרת קידוד תואמת של מדיה היא תכונה של פלטפורמת Android מ-Android 12 (רמת API 31) שמבצעת המרה מדיה באורך של עד דקה לפורמטים שנתמכים על ידי האפליקציה. אם להצטרף לשימוש בתכונה הזו, לקרוא קובץ מדיה בפורמט לא תואם גורמת להמרת הקידוד שלו לפי דרישה, והתוצאה נשמרת במטמון לקריאה במועד מאוחר יותר ב-AI.

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

איך אפשר לקצר את זמן האחזור בייצוא או להגדיל את התפוקה?

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

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