פורמט קובץ MP4 עם סיומת של טראקים משניים (MP4-AT) 0.9

פורמט הקובץ MP4-AT תומך באחסון טראקים משניים שיעזרו לכם לערוך ולבנות את הסרטון לאחר הצילום (לדוגמה, טראק וידאו של מפת עומק) לצד נתוני מדיה שניתן להפעיל, במבנה ISOBMFF/MP4.

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

יחסי תלות

אלה ההפניות התקניות למפרט הזה:

מבוא

השימוש במילים 'חובה', 'אסור', 'נדרש', 'מומלץ', 'לא מומלץ', 'אופציונלי' ו'יכול להיות' הוא בהתאם לתקן IETF שמוגדר ב-RFC2119.

פורמט קובץ MP4-AT

פורמט הקובץ MP4-AT מורכב מטרקים ראשיים ומטרקים משניים, שמאפשרים לבצע פעולות עריכה שונות. הטראקים הראשיים (לדוגמה, טראק וידאו שהוחל עליו אפקט בוקה) נכתבים בקובץ ה-MP4 כרגיל, ואילו הטראקים המשניים נכתבים בקובץ MP4 של טראקים משניים. Auxiliary Tracks MP4 הוא מאגר נוסף תואם MP4, והוא ממוקם בתוך התיבה axte(Auxiliary Tracks Extension). מומלץ שהתיבה axte תהיה התיבה האחרונה בקובץ, כדי שיהיה קל להסיר נתונים משניים על ידי חיתוך הקובץ.

הפורמט הזה תואם לאחור: נגנים שלא תומכים בשאר הפורמט הזה יקריאו ויפעילו את הטראקים הראשיים של הסרטון בזמן טעינת הקובץ.

תרשים קו שבו מוצגת ההתאמה של הרכיבים בקובץ MP4-AT

הקובץ מכיל את התיבה moov.meta עם הטיפולן mdta שמכיל את המטא-נתונים הבאים. המטא-נתונים יכולים להופיע בכל סדר.

מפתח מטא-נתונים

אינדיקטור הסוג

הערך

auxiliary.tracks.offset

78 (מספר שלם ללא סימן באורך 64 ביט ב-big endian)

ההיסט בקובץ (בבייטים) של התיבה axte

auxiliary.tracks.length

78 (מספר שלם ללא סימן באורך 64 ביט ב-big endian)

האורך (בבייטים) של התיבה axte

התיבה Auxiliary tracks extension‏ (axte)

תחביר

התיבה axte מתוארת באמצעות הסמנטיקה של התיבה שמוגדרת ב-ISO/IEC 14496-12:2022: 4.2

aligned(8) class AuxiliaryTracksExtensionBox extends Box('axte') {
  bit(8) data[];
}

כאשר שדה הנתונים מכיל את קובץ ה-MP4 של הטראקים המשניים.

מטען ייעודי (payload)

תוכן העל של התיבה axte הוא קובץ MP4 של טראקים משניים. קובץ ה-MP4 של הטראקים המשניים כולל את המבנה הרגיל של קובץ MP4.

תרשים קו שבו מוצגת ההסדרה של הרכיבים בקובץ ה-MP4 של הטראקים המשניים

קובץ ה-MP4 של הטראקים המשניים מכיל מטא-נתונים לדוגמה של כל הטראקים המשניים. כל נתוני העומס של טעימות הטראקים המשניים חייבים להיות מאוחסנים בתיבה mdat של קובץ ה-MP4 של הטראקים המשניים, או בתיבה mdat של קובץ ה-MP4 החיצוני (אבל לא בשתיהן).

במקרה הראשון, צריך להגדיר את auxiliary.tracks.interleaved לערך 0 (ראו 'מטא-נתונים סטטיים' בהמשך), וההיסטים של הדגימות בתיבה axte.moov הם ביחס להתחלה של קובץ ה-MP4 של הטראקים המשניים. כך קובץ ה-Auxiliary Tracks MP4 הוא עצמאי, כלומר אפשר לקרוא את קובץ ה-Auxiliary Tracks MP4 בנפרד, בלי הפניות לקובץ ה-MP4 החיצוני.

במקרה השני, צריך להגדיר את auxiliary.tracks.interleaved לערך 1 (ראו 'מטא-נתונים סטטיים' בהמשך), וההיסטים של הדגימות בתיבה axte.moov הם ביחס לתחילת הקובץ, ויכול להיות שנתוני העומס של הדגימות בטראקים הראשי והמשני יהיו משולבים. תיבת axte.mdat עשויה להיות לא קיימת במקרה כזה.

מטא-נתונים סטטיים

קובץ ה-Auxiliary Tracks MP4 מכיל את התיבה moov.meta עם הטיפולן mdta שמכיל את המטא-נתונים הבאים. המטא-נתונים יכולים להופיע בכל סדר.

מפתח מטא-נתונים

אינדיקטור הסוג

הערך

(אופציונלי) auxiliary.tracks.interleaved

75 (מספר שלם ללא סימן באורך 8 ביט)

0: מציין שהטעימות לא משובצות ונמצאות בתיבה axte.mdat

1: מציין שהטעימות משובצות בתיבה mdat של טראק הווידאו הראשי

כל שאר הערכים שמורים ואי אפשר להשתמש בהם.

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

auxiliary.tracks.map

0 (שמור)

פורמט בינארי:

  • גרסה של בייט אחד = 1
  • מספר הטראקים בבייט אחד = n
  • n bytes track types from following set
    • 0 = וידאו חד
    • 1 = סרטון עומק (לינארי)
    • 2 = סרטון עומק (הפוך)
    • 3 = מטא-נתונים של עומק מתוזמן
    • 4 = סרטון שקוף למחצה
    • 5-127 = שמור לשימוש בעתיד
    • 128-255 = סוגי טראקים בהתאמה אישית

הסדר של סוגי הטראקים ב-auxiliary.tracks.map מציין את הסדר שלהם בעומס העבודה של Auxiliary Tracks MP4.

סוגי טראקים משניים

קובץ ה-Auxiliary Tracks MP4 עשוי להכיל את הטראקים הבאים של הסרטון והמטא-נתונים, שיעזרו לכם לערוך את הסרטון.

טראק וידאו חד

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

טראק של סרטון עומק

טראק הווידאו של עומק התמונה מספק את נתוני העומק שמקודדים כווידאו רגיל בשחור-לבן. המטרה היא לאפשר פענוח וקידוד של טראקים של עומק במכשירים שאין להם תמיכה מיוחדת בפענוח או בקידוד של עומק. טראק הווידאו של העומק יכול להשתמש בקודק H.264/AVC,‏ H.265/HEVC,‏ VP9,‏ AV1 או בכל קודק וידאו נפוץ אחר. טראק הווידאו של העומק יכול להיות 8 ביט או 10 ביט, עם קידוד לינארי או הפוך (ראו מפרט Dynamic depth 1.0).

טראק של מטא-נתונים של עומק מתוזמן

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

סוג MIME לדוגמה

application/x-depth-metadata

תחביר לדוגמה

פורמט בינארי (כל המספרים השלמים הם little endian):

  • מרחק קרוב (מספר ממשי (float) ב-16 ביט)
  • מרחק רחוק (float של 16 ביט)
  • מספר הרשומות בטבלת המוקד (int‏ 16-bit)
  • הרשומה בטבלה המרכזית
    • מרחק הכניסה (מספר ממשי (float) ב-16 ביט)
    • רדיוס הכניסה (מספר ממשי (float) ב-16 ביט)
טראק וידאו שקוף

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

תרחישים לדוגמה

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

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