รูปแบบไฟล์ MP4 ที่มีนามสกุลแทร็กเสริม (MP4-AT) 0.9

รูปแบบไฟล์ MP4-AT รองรับการจัดเก็บแทร็กเสริมที่มีประโยชน์สำหรับการแก้ไขและการจัดองค์ประกอบหลังการจับภาพ (เช่น แทร็กวิดีโอแผนที่ความลึก) ควบคู่ไปกับข้อมูลสื่อที่เล่นได้ในโครงสร้าง ISOBMFF/MP4

เป้าหมายของรูปแบบนี้คือจัดเก็บแทร็กเสริมเพื่อให้ซ่อนแทร็กจากลูกค้าที่ไม่ได้ใช้ข้อกำหนดนี้ ซึ่งจะช่วยป้องกันไม่ให้ไคลเอ็นต์ตีความแทร็กเสริมเป็นข้อมูลที่เล่นได้

ทรัพยากร Dependency

ข้อมูลอ้างอิงเชิงบรรทัดฐานสำหรับข้อกำหนดนี้ ได้แก่

ข้อมูลเบื้องต้น

การใช้คําว่า "ต้อง" "ต้องไม่" "ต้องระบุ" "ควร" "ไม่ควร" "แนะนํา" "อาจ" และ "ไม่บังคับ" เป็นไปตามมาตรฐาน IETF ที่ระบุไว้ใน RFC2119

รูปแบบไฟล์ MP4-AT

รูปแบบไฟล์ MP4-AT ประกอบด้วยแทร็กหลักและแทร็กเสริมเพื่อเปิดใช้การดำเนินการแก้ไขต่างๆ ระบบจะเขียนแทร็กหลัก (เช่น แทร็กวิดีโอที่มีการใช้เอฟเฟกต์โบเก้) ในไฟล์ MP4 ตามปกติ ส่วนแทร็กเสริมจะเขียนใน Auxiliary Tracks 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

ช่องส่วนขยายแทร็กเสริม (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 ปกติ

แผนภาพเส้นแสดงการจัดเรียงองค์ประกอบในแทร็กเสริม 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 ซึ่งมีข้อมูลเมตาต่อไปนี้ ข้อมูลเมตาอาจปรากฏในลำดับใดก็ได้

คีย์ข้อมูลเมตา

ตัวบ่งชี้ประเภท

ค่า

(ไม่บังคับ) auxiliary.tracks.interleaved

75 (จำนวนเต็มแบบไม่ลงนาม 8 บิต)

0: บ่งบอกว่าไม่ได้สลับตัวอย่างและอยู่ในช่อง axte.mdat

1: ระบุว่ามีการสลับแท็บเล็ตในช่อง mdat ของแทร็กวิดีโอหลัก

ค่าอื่นๆ ทั้งหมดเป็นค่าที่สงวนไว้และห้ามไม่ให้ใช้

หากไม่มีข้อมูลเมตานี้ แสดงว่าค่าเริ่มต้นคือ 0

auxiliary.tracks.map

0 (สงวนไว้)

รูปแบบไบนารี

  • เวอร์ชัน 1 ไบต์ = 1
  • จำนวนแทร็ก 1 ไบต์ = n
  • n ไบต์ประเภทแทร็กจากชุดต่อไปนี้
    • 0 = วิดีโอคมชัด
    • 1 = วิดีโอเชิงลึก (แบบสด)
    • 2 = วิดีโอความลึก (ผกผัน)
    • 3 = ข้อมูลเมตาความลึกตามเวลา
    • 4 = วิดีโอแบบโปร่งแสง
    • 5-127 = สงวนไว้สำหรับการใช้งานในอนาคต
    • 128-255 = ประเภทแทร็กที่กำหนดเอง

ลำดับของประเภทแทร็กใน auxiliary.tracks.map จะระบุลำดับของแทร็กเหล่านั้นในเพย์โหลดของ Auxiliary Tracks MP4

ประเภทแทร็กเสริม

แทร็กเสริม MP4 อาจมีแทร็กวิดีโอและข้อมูลเมตาต่อไปนี้ซึ่งมีประโยชน์สำหรับการแก้ไข

แทร็กวิดีโอที่คมชัด

วิดีโอแบบเต็มความละเอียดที่ไม่มีการใช้เอฟเฟกต์ที่แก้ไขได้ ระบบอาจจัดเก็บแทร็กวิดีโอที่มีความละเอียดแตกต่างจากแทร็กวิดีโอหลัก แทร็กวิดีโอคมชัดอาจใช้ตัวแปลงรหัสวิดีโอทั่วไปและอาจอยู่ในรูปแบบมาตรฐานหรือ High Dynamic Range

แทร็กวิดีโอความลึก

แทร็กวิดีโอความลึกจะให้ข้อมูลความลึกที่เข้ารหัสเป็นวิดีโอสีเทามาตรฐาน การดำเนินการนี้ช่วยให้สามารถถอดรหัสและเข้ารหัสแทร็กความลึกในอุปกรณ์ที่ไม่มีการสนับสนุนการถอดรหัสหรือการเข้ารหัสพิเศษสำหรับความลึก แทร็กวิดีโอความลึกอาจใช้ H.264/AVC, H.265/HEVC, VP9, AV1 หรือตัวแปลงรหัสวิดีโอทั่วไปอื่นๆ แทร็กวิดีโอความลึกอาจเป็น 8 บิตหรือ 10 บิต และเข้ารหัสแบบเชิงเส้นหรือแบบย้อนกลับ (ดูข้อกำหนดเกี่ยวกับภาพความลึกแบบไดนามิก 1.0)

แทร็กข้อมูลเมตาความลึกตามเวลา

แทร็กข้อมูลเมตาเกี่ยวกับความลึกแบบกำหนดเวลามีค่าการปรับให้เป็นมาตรฐานเพื่อคํานวณความลึก และตารางโฟกัสที่สามารถใช้คํานวณรัศมีความเบลอสำหรับเอฟเฟกต์โบเก้

ตัวอย่างประเภท MIME

application/x-depth-metadata

ไวยากรณ์ตัวอย่าง

รูปแบบไบนารี (int ทั้งหมดเป็น Little Endian):

  • ระยะใกล้ (ทศนิยม 16 บิต)
  • ระยะทางไกล (16 บิตแบบลอย)
  • จํานวนรายการในตารางโฟกัส (int 16 บิต)
  • รายการตารางโฟกัส
    • ระยะทางของทางเข้า (จำนวนลอยตัว 16 บิต)
    • รัศมีของทางเข้า (จำนวนลอยตัว 16 บิต)
แทร็กวิดีโอแบบโปร่งแสง

แทร็กวิดีโอที่จัดเก็บค่าอัลฟ่า (ความโปร่งแสง) สำหรับแต่ละพิกเซลในเฟรมที่สอดคล้องกัน ค่าต่ำสุดหมายถึงโปร่งแสงทั้งหมด ส่วนค่าสูงสุดหมายถึงทึบแสงสนิท ค่าที่อยู่ตรงกลางแสดงระดับความโปร่งแสงที่แตกต่างกันในมาตราส่วนเชิงเส้น และการคอมโพสิตจะใช้โหมดการผสมผสานแบบปกติที่มีค่าสีที่ไม่ได้คูณล่วงหน้า เช่นเดียวกับแทร็กวิดีโอความลึก ควรเข้ารหัสแทร็กนี้เป็นวิดีโอสีเทามาตรฐานด้วย

ตัวอย่าง Use Case

  • การจัดเก็บวิดีโอโบเก้ที่ผ่านการจัดการแสดงผลซึ่งเล่นได้ในแทร็กหลัก มีแทร็กวิดีโอเสริมสำหรับข้อมูลสีคมชัดต้นฉบับ (ก่อนเบลอ) และแมปความลึก และแทร็กข้อมูลเมตาแบบกำหนดเวลาเสริมที่มีข้อมูลเมตาความลึกซึ่งแสดงจุดโฟกัสในแต่ละเฟรม จากนั้นคุณจะใช้แทร็กเสริมในโปรแกรมตัดต่อวิดีโอเพื่อแก้ไขวัตถุโฟกัสและเรนเดอร์แทร็กวิดีโอโบเก้คุณภาพสูงอีกครั้งได้

  • การจัดเก็บวิดีโอ "สติกเกอร์" แบบโปร่งแสงที่ผ่านการจัดการแสดงผลล่วงหน้า เช่น วิดีโออีโมจิแบบเคลื่อนไหวบนพื้นหลังสีขาวในแทร็กวิดีโอหลัก และแทร็กวิดีโอเสริมที่มีแผนที่อัลฟ่า จากนั้นผู้ประกอบภาพจะใช้แทร็กเสริมเพื่อผสมผสานสติกเกอร์เข้ากับพื้นหลังได้โดยใช้ข้อมูลความโปร่งแสงจากแทร็กเสริม