מהו קובץ QT?
קובץ עם סיומת qt הוא קובץ מכיל מולטימדיה המשמש את מסגרת QuickTime לאחסון תוכן קובץ מולטימדיה. פותח על ידי Apple Inc. פורמט הקובץ QuickTime (QTFF) הוא קובץ מיכל מולטימדיה המכיל אודיו, וידאו או טקסט להשמעה מאוחר יותר. זהו פורמט הבחירה להחלפת מדיה דיגיטלית בין מכשירים, יישומים ומערכות הפעלה. קבצי QT נשמרים גם בפורמט MOV שפותח גם על ידי Apple Inc. חלק מהיישומים שיכולים לפתוח קבצי QT כוללים נגן Apple QuickTime, נגן מדיה VLC ו-Media Player Classic עם K- חבילת Codec Lite.
פורמט קובץ QT
ה-QTFF מונחה עצמים שחושף אוסף גמיש של אובייקטים כדי להקל על הניתוח וההרחבה. כל רצועה בקובץ QT מכילה זרם מדיה מקודד דיגיטלית או הפניה לנתונים לזרם המדיה שנמצא בקובץ אחר. מבנה הנתונים ההיררכי המורכב מאובייקטים הנקראים אטומים פועל כמכולות מסלולים. מפרטי פורמט הקובץ עבור פורמט קובץ QT זמינים רשמית על ידי Apple Inc לעיונ המפתח.
תיאור מדיה
תיאור המדיה של קובץ QuickTime מאוחסן בנפרד מנתוני המדיה. מידע כגון מספר הרצועות, פורמט דחיסת הווידאו ומידע התזמון מאוחסן בתיאור המדיה (הידוע גם כמשאב הסרט, אטום הסרט או פשוט הסרט). נתוני המדיה מופנים על ידי אינדקס במבנה מדיה זה. נתוני המדיה הם נתוני הדוגמה בפועל, כגון מסגרות וידאו ודגימות אודיו, המשמשים בסרט.
אטומים
Atom היא היחידה הבסיסית של קובץ QuickTime. ישנם שני שדות עיקריים בכל אטום לפני כל שדה אחר: שדות גודל וסוג. שדה הגודל מציג את גודל האטום בעוד ששדה הסוג מציין את סוג הנתונים המאוחסנים באטום. מטבעם, אטומים הם היררכיים, מה שאומר שאטום אחד יכול להכיל אטומים אחרים שעדיין יכולים להכיל אחרים. הפריסה של אטום לדוגמה מוצגת בתמונה הבאה.
לכל אטום שני חלקים, כותרת ונתונים. הכותרת מכילה את שדות הגודל והסוג וחלק הנתונים מכיל את הנתונים בפועל. בהמשך, כל שדה מוסבר להלן:
גודל אטום
הכותרת והתוכן של האטום מסומנים על ידי מספר שלם של 32 סיביות המכונה גודל האטום. שדה הגודל מכיל את גודל האטום בבתים, המבוטא במספר שלם של 32 סיביות ללא סימן.
סוג אטום
סוג האטום מוצג גם על ידי מספר שלם של 32 סיביות, שלרוב מתייחסים אליו כשדה בן ארבעה תווים עם ערך קנמוני, כגון ‘moov’ (0x6D6F6F76) עבור אטום סרט, או ’trak’ (0x7472616B) עבור אטום מסלול. ברגע שסוג האטום ידוע, הוא מאפשר לפרש את הנתונים שלו.
מבנה קובץ
קבצי QT/MOV מורכבים מנתחים רצופים. לכל נתח יש כותרת של 8 בתים: גודל נתח של 4 בתים (ביג-אנדיאן, בייט גבוה ראשון) וסוג נתח של 4 בתים - אחת מהחתימות המוגדרות מראש: “ftyp”, “mdat”, “moov”, “pnot” “, “udta”, “uuid”, “moof”, “free”, “spring”, “jP2”, “wide”, “load”, “ctab”, “imap”, “matt”, “kmat”, “קליפ”, “crgn”, “sync”, “chap”, “tmcd”, “scpt”, “ssrc”, “PICT”. הנתח הראשון הוא מסוג “ftype” ויש לו תת-סוג בהיסט 8. MOV מוגדר על ידי תת-סוג שחייב להיות “qt”. כדי להרכיב קובץ MOV, יש צורך באיטרציה של נתחים עד לזיהוי סוג לא ידוע.
הנה דוגמה לדוגמה: בדיקת הנתונים הבינאריים לדוגמה של קובץ MOV ברור שהוא מתחיל בחתימה ftyp (hex: 66 74 79 70) בהיסט 4, המגדיר את סוג הקובץ QuickTime Container. תת-סוג הקובץ הוא qt~~ (hex: 71 74 20 20) מה שמצביע על סוג קובץ MOV. גודל הבלוק הראשון הוא 32 (hex: 00 00 00 20, big-endian, בייט גבוה ראשון), הגודל ממוקם בהיסט 0. בהיסט 32 (hex: 20) ממוקם הנתח השני, שגודלו 8 ו סוג mdat (hex: 6D 64 61 74).
הנתח הבא ממוקם ב-offset 32+8#40 (hex: 28) ויש לו גודל 3,263,028 (hex: 00 31 CA 34) וסוג mdat (hex: 6D 64 61 74) ב-offset 44 (hex : 2C). הנתח הבא ממוקם ב-offset 40 + 3,263,028#3,263,068 (hex: 00 31 CA 5C) ויש לו גודל 21,189 (hex: 00 00 52 C5) וסוג moov (hex: 6D 6F 6F 76) 1,836,019,574 (משקס: 00 31 CA 60). זהו הנתח האחרון, כך שגודל הקובץ הכולל הוא 3,263,068+21,189#3,284,257 בתים.