MP4 With Auxiliary Tracks Extension (MP4-AT) File Format 0.9

MP4-AT फ़ाइल फ़ॉर्मैट में, ऐसे सहायक ट्रैक स्टोर किए जा सकते हैं जो ISOBMFF/MP4 स्ट्रक्चर में चलने वाले मीडिया डेटा के साथ-साथ, रिकॉर्डिंग के बाद होने वाली एडिटिंग और कॉम्पोज़िशन (उदाहरण के लिए, डेप्थ मैप वीडियो ट्रैक) के लिए काम के होते हैं.

इस फ़ॉर्मैट का मकसद, सहायक ट्रैक को इस तरह से सेव करना है कि वे इस स्पेसिफ़िकेशन को लागू न करने वाले क्लाइंट से छिपे रहें. इससे क्लाइंट, सहायक ट्रैक को चलाए जा सकने वाले डेटा के तौर पर नहीं समझ पाते.

डिपेंडेंसी

इस स्पेसिफ़िकेशन के लिए, यहां दिए गए रेफ़रंस मान्य हैं:

परिचय

RFC2119 में बताए गए IETF स्टैंडर्ड के मुताबिक, "ज़रूरी है", "ज़रूरी नहीं है", "ज़रूरी है", "चाहिए", "चाहिए नहीं", "सुझाया गया", "हो सकता है", और "ज़रूरी नहीं है" का इस्तेमाल किया जाता है.

MP4-AT फ़ाइल फ़ॉर्मैट

MP4-AT फ़ाइल फ़ॉर्मैट में प्राइमरी ट्रैक और सहायक ट्रैक होते हैं, ताकि वीडियो में बदलाव करने की अलग-अलग कार्रवाइयां की जा सकें. मुख्य ट्रैक (उदाहरण के लिए, ऐसा वीडियो ट्रैक जिस पर बोकेह इफ़ेक्ट लागू किया गया है) को आम तौर पर MP4 फ़ाइल में लिखा जाता है. वहीं, सहायक ट्रैक को सहायक ट्रैक MP4 में लिखा जाता है. अतिरिक्त ट्रैक का MP4, MP4 फ़ॉर्मैट का पालन करने वाला एक और कंटेनर है. इसे axte(अतिरिक्त ट्रैक एक्सटेंशन) बॉक्स में रखा जाता है. हमारा सुझाव है कि axte बॉक्स, फ़ाइल का आखिरी बॉक्स हो. इससे फ़ाइल को छोटा करके, सहायक डेटा को आसानी से हटाया जा सकता है.

यह फ़ॉर्मैट, पुराने वर्शन के साथ काम करता है: ऐसे प्लेयर जो इस फ़ॉर्मैट के बाकी हिस्सों के साथ काम नहीं करते वे फ़ाइल लोड करते समय मुख्य वीडियो ट्रैक को पढ़ेंगे और चलाएंगे.

लाइन डायग्राम, जिसमें MP4-AT फ़ाइल में एलिमेंट के क्रम को दिखाया गया है

फ़ाइल में mdta हैंडलर वाला moov.meta बॉक्स है, जिसमें यह मेटाडेटा शामिल है. मेटाडेटा किसी भी क्रम में दिख सकता है.

मेटाडेटा कुंजी

टाइप इंडिकेटर

वैल्यू

auxiliary.tracks.offset

78 (बिग इंडियन 64-बिट बिना साइन वाला इंटिजर)

axte बॉक्स का फ़ाइल ऑफ़सेट (बाइट में)

auxiliary.tracks.length

78 (बिग इंडियन 64-बिट बिना साइन वाला इंटिजर)

axte बॉक्स की लंबाई (बाइट में)

सहायक ट्रैक एक्सटेंशन (axte) बॉक्स

वाक्य-विन्यास

axte बॉक्स के बारे में, ISO/IEC 14496-12:2022: 4.2 में बताए गए बॉक्स के सेमेटिक्स का इस्तेमाल करके बताया गया है

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

जहां डेटा फ़ील्ड में अतिरिक्त ट्रैक MP4 शामिल हैं.

पेलोड

axte बॉक्स का पेलोड, ऑक्ज़िलरी ट्रैक MP4 है. अतिरिक्त ट्रैक MP4 में, MP4 का सामान्य स्ट्रक्चर होता है.

ऐक्सेसरी ट्रैक MP4 में एलिमेंट के क्रम को दिखाने वाला लाइन डायग्राम

अतिरिक्त ट्रैक के तौर पर इस्तेमाल होने वाले MP4 में, सभी अतिरिक्त ट्रैक का सैंपल मेटाडेटा होता है. सभी सहायक ट्रैक के सैंपल पेलोड को सहायक ट्रैक के एमपी4 के mdat बॉक्स या बाहरी एमपी4 के mdat बॉक्स में से किसी एक में सेव किया जाना चाहिए.

पहले मामले में, auxiliary.tracks.interleaved को 0 पर सेट करना होगा (यहां "स्टैटिक मेटाडेटा" देखें) और axte.moov बॉक्स में सैंपल ऑफ़सेट, अतिरिक्त ट्रैक MP4 की शुरुआत के हिसाब से होते हैं. इससे अतिरिक्त ट्रैक का MP4, अपने-आप काम करता है. इसका मतलब है कि अतिरिक्त ट्रैक का MP4, बाहरी MP4 के रेफ़रंस के बिना, स्टैंडअलोन तौर पर पढ़ा जा सकता है.

बाद वाले मामले में, auxiliary.tracks.interleaved को 1 पर सेट किया जाना चाहिए (यहां "स्टैटिक मेटाडेटा" देखें). साथ ही, axte.moov बॉक्स में सैंपल ऑफ़सेट, फ़ाइल की शुरुआत के हिसाब से होते हैं. साथ ही, प्राइमरी और सहायक ट्रैक के सैंपल पेलोड को इंटरलीव किया जा सकता है. इस मामले में, axte.mdat बॉक्स मौजूद नहीं हो सकता.

स्टैटिक मेटाडेटा

अतिरिक्त ट्रैक MP4 में, mdta हैंडलर वाला एक moov.meta बॉक्स होता है. इसमें यह मेटाडेटा होता है. मेटाडेटा किसी भी क्रम में दिख सकता है.

मेटाडेटा कुंजी

टाइप इंडिकेटर

वैल्यू

(ज़रूरी नहीं) auxiliary.tracks.interleaved

75 (8-बिट का बिना हस्ताक्षर वाला इंटिजर)

0: इससे पता चलता है कि सैंपल इंटरलीव नहीं किए गए हैं और वे axte.mdat बॉक्स में हैं

1: इससे पता चलता है कि सैंपल, प्राइमरी वीडियो ट्रैक के mdat बॉक्स में इंटरलीव किए गए हैं

अन्य सभी वैल्यू रिज़र्व हैं और इनका इस्तेमाल नहीं किया जाना चाहिए.

इस मेटाडेटा के मौजूद न होने का मतलब है कि डिफ़ॉल्ट वैल्यू 0 है.

auxiliary.tracks.map

0 (रिज़र्व किया गया)

बाइनरी फ़ॉर्मैट:

  • 1 बाइट वाला वर्शन = 1
  • 1 बाइट वाले ट्रैक की संख्या = n
  • नीचे दिए गए सेट में से n बाइट वाले ट्रैक टाइप
    • 0 = शार्प वीडियो
    • 1 = 3D वीडियो (लीनियर)
    • 2 = डीप वीडियो (इनवर्स)
    • 3 = टाइमेड डेप्थ मेटाडेटा
    • 4 = ट्रांसलूसंट वीडियो
    • 5 से 127 = आने वाले समय में इस्तेमाल के लिए रिज़र्व किया गया
    • 128-255 = कस्टम ट्रैक टाइप

auxiliary.tracks.map में ट्रैक टाइप का क्रम, अतिरिक्त ट्रैक MP4 के पेलोड में उनके क्रम को दिखाता है.

सहायक ट्रैक के टाइप

अतिरिक्त ट्रैक MP4 में, वीडियो और मेटाडेटा के ये ट्रैक शामिल हो सकते हैं. ये ट्रैक, वीडियो में बदलाव करने के लिए काम के होते हैं.

शार्प वीडियो ट्रैक

पूरा रिज़ॉल्यूशन वाला ऐसा वीडियो जिसमें बदलाव किए जा सकने वाले इफ़ेक्ट न हों. वीडियो ट्रैक को मुख्य वीडियो ट्रैक से अलग रिज़ॉल्यूशन में सेव किया जा सकता है. शार्प वीडियो ट्रैक में किसी भी सामान्य वीडियो कोडेक का इस्तेमाल किया जा सकता है. साथ ही, यह स्टैंडर्ड या हाई डाइनैमिक रेंज में हो सकता है.

डेप्थ वीडियो ट्रैक

डेप्थ वीडियो ट्रैक, स्टैंडर्ड ग्रेस्केल वीडियो के तौर पर एन्कोड की गई डेप्थ की जानकारी देता है. ऐसा इसलिए किया गया है, ताकि उन डिवाइसों पर डीपथ ट्रैक को डिकोड और एन्कोड किया जा सके जिनमें डीपथ के लिए, डिकोड या एन्कोड करने की कोई खास सुविधा नहीं है. डेप्थ वीडियो ट्रैक में H.264/एवीसी, H.265/एचईवीसी, VP9, AV1 या कोई अन्य सामान्य वीडियो कोडेक इस्तेमाल किया जा सकता है. डेप्थ वीडियो ट्रैक 8-बिट या 10-बिट और लीनियर या इनवर्स-कोड किया जा सकता है (डाइनैमिक डेप्थ 1.0 स्पेसिफ़िकेशन देखें).

टाइमेड डेप्थ मेटाडेटा ट्रैक

समय के साथ डीपथ मेटाडेटा ट्रैक में, डीपथ का हिसाब लगाने के लिए सामान्य वैल्यू होती हैं. साथ ही, इसमें फ़ोकल टेबल होती है, जिसका इस्तेमाल बोकेह इफ़ेक्ट के लिए, ब्लर रेडियस का हिसाब लगाने के लिए किया जा सकता है.

MIME टाइप का सैंपल

application/x-depth-metadata

सिंटैक्स का सैंपल

बाइनरी फ़ॉर्मैट (सभी ints little endian):

  • आस-पास की दूरी (16-बिट फ़्लोट)
  • दूरी (16-बिट फ़्लोट)
  • फ़ोकल टेबल में मौजूद एंट्री की संख्या (16-बिट इंटिजर)
  • फ़ोकल टेबल एंट्री
    • एंट्री की दूरी (16-बिट फ़्लोट)
    • एंट्री रेडियस (16-बिट फ़्लोट)
पारभासी वीडियो ट्रैक

यह एक वीडियो ट्रैक है, जिसमें उससे जुड़े फ़्रेम के हर पिक्सल के लिए, अल्फा वैल्यू (ट्रांसपेरेंसी) सेव की जाती है. कम से कम वैल्यू का मतलब है कि पूरी तरह से पारदर्शी है, जबकि ज़्यादा से ज़्यादा वैल्यू का मतलब है कि पूरी तरह से अपारदर्शी है. इन वैल्यू के बीच की वैल्यू, लीनियर स्केल पर अलग-अलग लेवल की पारदर्शिता दिखाती हैं. साथ ही, कॉम्पोज़िटिंग में, पहले से मल्टीप्लाई नहीं की गई कलर वैल्यू के साथ सामान्य ब्लेंडिंग मोड का इस्तेमाल किया जाता है. डेप्थ वीडियो ट्रैक की तरह ही, इस ट्रैक को भी स्टैंडर्ड ग्रेस्केल वीडियो के तौर पर एन्कोड किया जाना चाहिए.

इस्तेमाल के उदाहरण

  • प्राइमरी ट्रैक में, रेंडर किया गया बोकेह वीडियो सेव किया जा रहा है. इसमें ओरिजनल (धुंधला होने से पहले) शार्प कलर डेटा और डेप्थ मैप के लिए सहायक वीडियो ट्रैक और हर फ़्रेम में फ़ोकस पॉइंट दिखाने वाले डेप्थ मेटाडेटा के साथ, टाइम मेटाडेटा वाला सहायक ट्रैक भी शामिल है. इसके बाद, वीडियो एडिटर में सहायक ट्रैक का इस्तेमाल करके, फ़ोकस किए गए ऑब्जेक्ट में बदलाव किया जा सकता है. साथ ही, अच्छी क्वालिटी का बोकेह वीडियो ट्रैक फिर से रेंडर किया जा सकता है.

  • पहले से रेंडर किया गया पारदर्शी 'स्टिकर' वीडियो सेव करना. उदाहरण के लिए, मुख्य वीडियो ट्रैक में सफ़ेद बैकग्राउंड पर ऐनिमेशन वाला इमोजी वीडियो. साथ ही, सहायक वीडियो ट्रैक में अल्फा मैप. इसके बाद, कंपोजिटर, सहायक ट्रैक का इस्तेमाल करके स्टिकर को बैकग्राउंड के साथ ब्लेंड कर सकता है. इसके लिए, वह सहायक ट्रैक में मौजूद ट्रांसलूसिंसी की जानकारी का इस्तेमाल करता है.