รูปแบบไฟล์ MP4-AT รองรับการจัดเก็บแทร็กเสริมที่มีประโยชน์สำหรับการแก้ไขและการจัดองค์ประกอบหลังการจับภาพ (เช่น แทร็กวิดีโอแผนที่ความลึก) ควบคู่ไปกับข้อมูลสื่อที่เล่นได้ในโครงสร้าง ISOBMFF/MP4
เป้าหมายของรูปแบบนี้คือจัดเก็บแทร็กเสริมเพื่อให้ซ่อนแทร็กจากลูกค้าที่ไม่ได้ใช้ข้อกำหนดนี้ ซึ่งจะช่วยป้องกันไม่ให้ไคลเอ็นต์ตีความแทร็กเสริมเป็นข้อมูลที่เล่นได้
ทรัพยากร Dependency
ข้อมูลอ้างอิงเชิงบรรทัดฐานสำหรับข้อกำหนดนี้ ได้แก่
- คีย์เวิร์ดสำหรับใช้ใน RFC เพื่อระบุระดับข้อกำหนด
- ISO/IEC 14496-12:2022 รูปแบบไฟล์สื่อ ISO Box (ISOBMFF/MP4)
- ISO/IEC 14496-10:2022 การเข้ารหัสออบเจ็กต์ภาพและเสียงส่วนที่ 10: การเข้ารหัสวิดีโอขั้นสูง (AVC)
- ISO/IEC 23008-2:2023 การเขียนโค้ดที่มีประสิทธิภาพสูงและการนำส่งสื่อในสภาพแวดล้อมที่หลากหลาย ส่วนที่ 2: การเขียนโค้ดวิดีโอที่มีประสิทธิภาพสูง (HEVC)
- ตัวแปลงรหัสวิดีโอ VP9 (VP9)
- ข้อกำหนดเกี่ยวกับบิตสตรีมและการถอดรหัสของ AV1 (AV1)
- ข้อกำหนดเกี่ยวกับการปรับระยะความคมชัด 1.0
ข้อมูลเบื้องต้น
การใช้คําว่า "ต้อง" "ต้องไม่" "ต้องระบุ" "ควร" "ไม่ควร" "แนะนํา" "อาจ" และ "ไม่บังคับ" เป็นไปตามมาตรฐาน IETF ที่ระบุไว้ใน RFC2119
รูปแบบไฟล์ MP4-AT
รูปแบบไฟล์ MP4-AT ประกอบด้วยแทร็กหลักและแทร็กเสริมเพื่อเปิดใช้การดำเนินการแก้ไขต่างๆ ระบบจะเขียนแทร็กหลัก (เช่น แทร็กวิดีโอที่มีการใช้เอฟเฟกต์โบเก้) ในไฟล์ MP4 ตามปกติ ส่วนแทร็กเสริมจะเขียนใน Auxiliary Tracks MP4
Auxiliary Tracks MP4 เป็นคอนเทนเนอร์ MP4 ที่เข้ากันได้อีกประเภทหนึ่ง และวางไว้ภายในช่อง axte
(Auxiliary Tracks Extension) เราขอแนะนำให้ช่อง axte
เป็นช่องสุดท้ายในไฟล์ ซึ่งจะทำให้นำข้อมูลเสริมออกได้สะดวกด้วยการตัดไฟล์
รูปแบบนี้ใช้งานย้อนหลังได้ โดยโปรแกรมเล่นที่ไม่รองรับรูปแบบอื่นๆ ของไฟล์นี้จะอ่านและเล่นแทร็กวิดีโอหลักเมื่อโหลดไฟล์
ไฟล์มีช่อง moov.meta
ที่มีตัวแฮนเดิล mdta
ซึ่งมีข้อมูลเมตาต่อไปนี้ ข้อมูลเมตาอาจปรากฏในลำดับใดก็ได้
คีย์ข้อมูลเมตา |
ตัวบ่งชี้ประเภท |
ค่า |
|
78 (จำนวนเต็มแบบไม่ลงนาม 64 บิตตามรูปแบบ Big Endian) |
การเลื่อนไฟล์ (ในไบต์) ของช่อง |
|
78 (จำนวนเต็มแบบไม่ลงนาม 64 บิตตามรูปแบบ Big Endian) |
ความยาว (เป็นไบต์) ของช่อง |
ช่องส่วนขยายแทร็กเสริม (axte)
วากยสัมพันธ์
กล่อง axte
อธิบายโดยใช้ความหมายของกล่องที่ระบุไว้ใน ISO/IEC 14496-12:2022: 4.2
aligned(8) class AuxiliaryTracksExtensionBox extends Box('axte') {
bit(8) data[];
}
โดยที่ฟิลด์ข้อมูลมี Auxiliary Tracks MP4
เพย์โหลด
เพย์โหลดของช่อง axte
คือ MP4 แทร็กเสริม
แทร็กเสริม MP4 มีโครงสร้าง MP4 ปกติ
Auxiliary Tracks MP4 มีข้อมูลเมตาตัวอย่างสำหรับแทร็กเสริมทั้งหมด
ต้องจัดเก็บเพย์โหลดตัวอย่างแทร็กเสริมทั้งหมดในช่อง mdat
ของ Auxiliary Tracks MP4 หรือในช่อง mdat
ของ MP4 ภายนอก (แต่ต้องไม่จัดเก็บทั้ง 2 อย่าง)
ในกรณีแรก คุณต้องตั้งค่า auxiliary.tracks.interleaved
เป็น 0 (ดู "ข้อมูลเมตาแบบคงที่" ด้านล่าง) และระยะห่างตัวอย่างในช่อง axte.moov
จะสัมพันธ์กับจุดเริ่มต้นของ แทร็กเสริม MP4 ซึ่งทำให้ Auxiliary Tracks MP4 ทำงานได้ด้วยตัวเอง ซึ่งหมายความว่า Auxiliary Tracks MP4 สามารถอ่านได้แบบสแตนด์อโลนโดยไม่มีการอ้างอิงถึง MP4 ภายนอก
ในกรณีหลัง auxiliary.tracks.interleaved
ต้องตั้งค่าเป็น 1 (ดู "ข้อมูลเมตาแบบคงที่" ด้านล่าง) และระยะของออฟเซ็ตตัวอย่างในช่อง axte.moov
จะสัมพันธ์กับจุดเริ่มต้นของไฟล์ และอาจมีการสลับแพ็กเก็ตข้อมูลตัวอย่างของแทร็กหลักและแทร็กเสริม
ในกรณีนี้ช่อง axte.mdat
อาจไม่มีอยู่
ข้อมูลเมตาแบบคงที่
แทร็กเสริม MP4 มีช่อง moov.meta
ที่มีตัวแฮนเดิล mdta
ซึ่งมีข้อมูลเมตาต่อไปนี้ ข้อมูลเมตาอาจปรากฏในลำดับใดก็ได้
คีย์ข้อมูลเมตา |
ตัวบ่งชี้ประเภท |
ค่า |
(ไม่บังคับ) |
75 (จำนวนเต็มแบบไม่ลงนาม 8 บิต) |
0: บ่งบอกว่าไม่ได้สลับตัวอย่างและอยู่ในช่อง 1: ระบุว่ามีการสลับแท็บเล็ตในช่อง ค่าอื่นๆ ทั้งหมดเป็นค่าที่สงวนไว้และห้ามไม่ให้ใช้ หากไม่มีข้อมูลเมตานี้ แสดงว่าค่าเริ่มต้นคือ 0 |
|
0 (สงวนไว้) |
รูปแบบไบนารี
|
ลำดับของประเภทแทร็กใน auxiliary.tracks.map
จะระบุลำดับของแทร็กเหล่านั้นในเพย์โหลดของ Auxiliary Tracks MP4
ประเภทแทร็กเสริม
แทร็กเสริม MP4 อาจมีแทร็กวิดีโอและข้อมูลเมตาต่อไปนี้ซึ่งมีประโยชน์สำหรับการแก้ไข
แทร็กวิดีโอที่คมชัด
วิดีโอแบบเต็มความละเอียดที่ไม่มีการใช้เอฟเฟกต์ที่แก้ไขได้ ระบบอาจจัดเก็บแทร็กวิดีโอที่มีความละเอียดแตกต่างจากแทร็กวิดีโอหลัก แทร็กวิดีโอคมชัดอาจใช้ตัวแปลงรหัสวิดีโอทั่วไปและอาจอยู่ในรูปแบบมาตรฐานหรือ High Dynamic Range
แทร็กวิดีโอความลึก
แทร็กวิดีโอความลึกจะให้ข้อมูลความลึกที่เข้ารหัสเป็นวิดีโอสีเทามาตรฐาน การดำเนินการนี้ช่วยให้สามารถถอดรหัสและเข้ารหัสแทร็กความลึกในอุปกรณ์ที่ไม่มีการสนับสนุนการถอดรหัสหรือการเข้ารหัสพิเศษสำหรับความลึก แทร็กวิดีโอความลึกอาจใช้ H.264/AVC, H.265/HEVC, VP9, AV1 หรือตัวแปลงรหัสวิดีโอทั่วไปอื่นๆ แทร็กวิดีโอความลึกอาจเป็น 8 บิตหรือ 10 บิต และเข้ารหัสแบบเชิงเส้นหรือแบบย้อนกลับ (ดูข้อกำหนดเกี่ยวกับภาพความลึกแบบไดนามิก 1.0)
แทร็กข้อมูลเมตาความลึกตามเวลา
แทร็กข้อมูลเมตาเกี่ยวกับความลึกแบบกำหนดเวลามีค่าการปรับให้เป็นมาตรฐานเพื่อคํานวณความลึก และตารางโฟกัสที่สามารถใช้คํานวณรัศมีความเบลอสำหรับเอฟเฟกต์โบเก้
ตัวอย่างประเภท MIME |
|
ไวยากรณ์ตัวอย่าง |
รูปแบบไบนารี (int ทั้งหมดเป็น Little Endian):
|
แทร็กวิดีโอแบบโปร่งแสง
แทร็กวิดีโอที่จัดเก็บค่าอัลฟ่า (ความโปร่งแสง) สำหรับแต่ละพิกเซลในเฟรมที่สอดคล้องกัน ค่าต่ำสุดหมายถึงโปร่งแสงทั้งหมด ส่วนค่าสูงสุดหมายถึงทึบแสงสนิท ค่าที่อยู่ตรงกลางแสดงระดับความโปร่งแสงที่แตกต่างกันในมาตราส่วนเชิงเส้น และการคอมโพสิตจะใช้โหมดการผสมผสานแบบปกติที่มีค่าสีที่ไม่ได้คูณล่วงหน้า เช่นเดียวกับแทร็กวิดีโอความลึก ควรเข้ารหัสแทร็กนี้เป็นวิดีโอสีเทามาตรฐานด้วย
ตัวอย่าง Use Case
การจัดเก็บวิดีโอโบเก้ที่ผ่านการจัดการแสดงผลซึ่งเล่นได้ในแทร็กหลัก มีแทร็กวิดีโอเสริมสำหรับข้อมูลสีคมชัดต้นฉบับ (ก่อนเบลอ) และแมปความลึก และแทร็กข้อมูลเมตาแบบกำหนดเวลาเสริมที่มีข้อมูลเมตาความลึกซึ่งแสดงจุดโฟกัสในแต่ละเฟรม จากนั้นคุณจะใช้แทร็กเสริมในโปรแกรมตัดต่อวิดีโอเพื่อแก้ไขวัตถุโฟกัสและเรนเดอร์แทร็กวิดีโอโบเก้คุณภาพสูงอีกครั้งได้
การจัดเก็บวิดีโอ "สติกเกอร์" แบบโปร่งแสงที่ผ่านการจัดการแสดงผลล่วงหน้า เช่น วิดีโออีโมจิแบบเคลื่อนไหวบนพื้นหลังสีขาวในแทร็กวิดีโอหลัก และแทร็กวิดีโอเสริมที่มีแผนที่อัลฟ่า จากนั้นผู้ประกอบภาพจะใช้แทร็กเสริมเพื่อผสมผสานสติกเกอร์เข้ากับพื้นหลังได้โดยใช้ข้อมูลความโปร่งแสงจากแทร็กเสริม