Định dạng tệp MP4 có đuôi tệp của kênh phụ trợ (MP4-AT) 0.9

Định dạng tệp MP4-AT hỗ trợ lưu trữ các kênh phụ hữu ích cho việc chỉnh sửa và kết hợp sau khi quay (ví dụ: kênh video bản đồ độ sâu) cùng với dữ liệu phương tiện có thể phát trong cấu trúc ISOBMFF/MP4.

Mục tiêu của định dạng này là lưu trữ các kênh phụ sao cho các kênh đó bị ẩn khỏi những ứng dụng không triển khai thông số kỹ thuật này. Điều này giúp ứng dụng không diễn giải các kênh phụ là dữ liệu có thể phát.

Phần phụ thuộc

Sau đây là các tài liệu tham khảo quy phạm cho quy cách này:

Giới thiệu

Việc sử dụng các từ "PHẢI", "KHÔNG ĐƯỢC", "BẮT BUỘC", "NÊN", "KHÔNG NÊN", "NÊN DÙNG", "CÓ THỂ" và "KHÔNG BẮT BUỘC" là theo tiêu chuẩn IETF được xác định trong RFC2119.

Định dạng tệp MP4-AT

Định dạng tệp MP4-AT bao gồm các kênh chính và kênh phụ để hỗ trợ nhiều thao tác chỉnh sửa. Các kênh chính (ví dụ: kênh video đã áp dụng hiệu ứng bokeh) được ghi trong tệp MP4 như bình thường, trong khi các kênh phụ được ghi trong Auxiliary Tracks MP4 (Tệp MP4 kênh phụ). Auxiliary Tracks MP4 (MP4 kênh phụ) là một vùng chứa tuân thủ MP4 khác và được đặt trong hộp axte(Auxiliary Tracks Extension) (Tiện ích kênh phụ). Bạn nên đặt hộp axte là hộp cuối cùng trong tệp để thuận tiện cho việc xoá dữ liệu phụ bằng cách cắt bớt tệp.

Định dạng này có khả năng tương thích ngược: những trình phát không hỗ trợ phần còn lại của định dạng này sẽ đọc và phát các kênh video chính khi tải tệp.

Sơ đồ đường thẳng minh hoạ cách sắp xếp các phần tử trong tệp MP4-AT

Tệp này có một hộp moov.meta với trình xử lý mdta chứa siêu dữ liệu sau. Siêu dữ liệu có thể xuất hiện theo thứ tự bất kỳ.

Khoá siêu dữ liệu

Chỉ báo loại

Giá trị

auxiliary.tracks.offset

78 (số nguyên 64 bit big endian chưa ký)

Độ dời tệp (tính bằng byte) của hộp axte

auxiliary.tracks.length

78 (số nguyên 64 bit big endian chưa ký)

Độ dài (tính bằng byte) của hộp axte

Hộp phần mở rộng kênh phụ (axte)

Cú pháp

Hộp axte được mô tả bằng cách sử dụng ngữ nghĩa của hộp được xác định trong ISO/IEC 14496-12:2022: 4.2

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

trong đó trường dữ liệu chứa Auxiliary Tracks MP4 (Đường dẫn phụ MP4).

Dung lượng

Trọng tải của hộp axteAuxiliary Tracks MP4 (Đường dẫn phụ MP4). Tệp MP4 của kênh phụ có cấu trúc MP4 thông thường.

Sơ đồ đường biểu thị cách sắp xếp các phần tử trong tệp MP4 của kênh phụ

Tệp MP4 của bản nhạc phụ chứa siêu dữ liệu mẫu cho tất cả các bản nhạc phụ. Tất cả tải trọng mẫu của kênh phụ đều phải được lưu trữ trong hộp mdat của MP4 kênh phụ hoặc trong hộp mdat của MP4 bên ngoài (nhưng không được lưu trữ trong cả hai).

Trong trường hợp trước, bạn phải đặt auxiliary.tracks.interleaved thành 0 (xem "Siêu dữ liệu tĩnh" bên dưới) và độ lệch mẫu trong hộp axte.moov sẽ tương ứng với vị trí bắt đầu của Auxiliary Tracks MP4 (Đường dẫn phụ MP4). Điều này giúp Auxiliary Tracks MP4 tự chứa, nghĩa là Auxiliary Tracks MP4 có thể được đọc độc lập mà không cần tham chiếu đến MP4 bên ngoài.

Trong trường hợp sau, bạn phải đặt auxiliary.tracks.interleaved thành 1 (xem phần "Siêu dữ liệu tĩnh" bên dưới) và độ dời mẫu trong hộp axte.moov sẽ tương ứng với vị trí bắt đầu của tệp và tải trọng mẫu của kênh chính và phụ có thể được xen kẽ. Hộp axte.mdat có thể không có trong trường hợp này.

Siêu dữ liệu tĩnh

Auxiliary Tracks MP4 (Đường dẫn phụ MP4) chứa một hộp moov.meta có trình xử lý mdta chứa siêu dữ liệu sau. Siêu dữ liệu có thể xuất hiện theo thứ tự bất kỳ.

Khoá siêu dữ liệu

Chỉ báo loại

Giá trị

(Không bắt buộc) auxiliary.tracks.interleaved

75 (Số nguyên 8 bit không dấu)

0: Cho biết các mẫu không được xen kẽ và nằm trong hộp axte.mdat

1: Cho biết các mẫu được xen kẽ trong hộp mdat của kênh video chính

Tất cả các giá trị khác đều được dành riêng và không được sử dụng.

Nếu không có siêu dữ liệu này, giá trị mặc định sẽ là 0.

auxiliary.tracks.map

0 (đã đặt trước)

Định dạng tệp nhị phân:

  • Phiên bản 1 byte = 1
  • 1 byte số lượng bản nhạc = n
  • n byte loại kênh theo dõi từ tập hợp sau
    • 0 = Video sắc nét
    • 1 = Video có chiều sâu (tuyến tính)
    • 2 = Video có chiều sâu (ngược)
    • 3 = Siêu dữ liệu về độ sâu theo thời gian
    • 4 = Video mờ
    • 5-127 = Dành để sử dụng trong tương lai
    • 128-255 = Loại kênh tuỳ chỉnh

Thứ tự của các loại kênh trong auxiliary.tracks.map cho biết thứ tự của các loại kênh đó trong tải trọng của Kênh phụ MP4.

Các loại kênh phụ

Tệp MP4 có các kênh phụ có thể chứa các kênh video và siêu dữ liệu sau đây rất hữu ích cho việc chỉnh sửa.

Phiên bản video sắc nét

Video ở độ phân giải đầy đủ mà chưa áp dụng hiệu ứng có thể chỉnh sửa. Luồng video có thể được lưu trữ ở độ phân giải khác với luồng video chính. Đường dẫn video sắc nét có thể sử dụng bất kỳ bộ mã hoá và giải mã video phổ biến nào và có thể ở dải động tiêu chuẩn hoặc cao.

Phiên bản video có chiều sâu

Đường dẫn video độ sâu cung cấp thông tin độ sâu được mã hoá dưới dạng video thang màu xám tiêu chuẩn. Điều này cho phép giải mã và mã hoá các kênh độ sâu trên các thiết bị không có tính năng hỗ trợ giải mã hoặc mã hoá đặc biệt cho độ sâu. Đường dẫn video độ sâu có thể sử dụng H.264/AVC, H.265/HEVC, VP9, AV1 hoặc bất kỳ bộ mã hoá và giải mã video phổ biến nào khác. Đường dẫn video độ sâu có thể là 8 bit hoặc 10 bit và được mã hoá tuyến tính hoặc nghịch đảo (tham khảo Thông số kỹ thuật về độ sâu động 1.0).

Kênh siêu dữ liệu về độ sâu theo thời gian

Đường dẫn siêu dữ liệu độ sâu theo thời gian chứa các giá trị chuẩn hoá để tính toán độ sâu và bảng tiêu điểm có thể dùng để tính bán kính làm mờ cho hiệu ứng bokeh.

Loại MIME mẫu

application/x-depth-metadata

Cú pháp mẫu

Định dạng tệp nhị phân (tất cả ints little endian):

  • Khoảng cách gần (số thực 16 bit)
  • Khoảng cách xa (số thực 16 bit)
  • Số mục nhập bảng tiêu điểm (số nguyên 16 bit)
  • Mục nhập bảng tiêu điểm
    • Khoảng cách nhập (số thực 16 bit)
    • Bán kính đầu vào (số thực 16 bit)
Phiên bản video mờ

Một kênh video lưu trữ giá trị alpha (độ trong suốt) cho mỗi pixel trong khung tương ứng. Giá trị tối thiểu cho biết hoàn toàn trong suốt, còn giá trị tối đa cho biết hoàn toàn mờ. Các giá trị ở giữa thể hiện các mức độ mờ khác nhau trên thang tuyến tính và tính năng kết hợp sử dụng chế độ kết hợp thông thường với các giá trị màu không được nhân trước. Tương tự như bản âm thanh video độ sâu, bản âm thanh này cũng phải được mã hoá dưới dạng video thang màu xám chuẩn.

Ví dụ về trường hợp sử dụng

  • Lưu trữ video bokeh đã kết xuất có thể phát trong một kênh chính, với các kênh video phụ cho dữ liệu màu sắc sắc nét ban đầu (trước khi làm mờ) và bản đồ độ sâu, cũng như một kênh siêu dữ liệu phụ theo thời gian có siêu dữ liệu độ sâu phản ánh tiêu điểm tại mỗi khung hình. Sau đó, bạn có thể sử dụng các kênh phụ trong trình chỉnh sửa video để sửa đổi đối tượng lấy nét và kết xuất lại kênh video bokeh chất lượng cao.

  • Lưu trữ video "miếng dán" trong suốt được kết xuất trước, ví dụ: video biểu tượng cảm xúc động trên nền trắng trong một kênh video chính, với một kênh video phụ chứa bản đồ alpha. Sau đó, trình kết hợp có thể sử dụng kênh phụ để kết hợp hình dán với nền bằng cách sử dụng thông tin về độ mờ từ kênh phụ.