SLConfigDescriptor cho rãnh ghi truyền thông được lưu trữ trong tệp bằng cáchsử dụng giá trị mặc định được định trước = 2, ngoại trừ khi bộ mô tả dòng cơ sở tham chiếu tới mộtdòng qua mộ
Trang 1TCVN xxxx:2016(Xuất bản lần 1)
MÃ HÓA CÁC ĐỐI TƯỢNG HÌNH ẢNH ÂM THANH – ĐỊNH
DẠNG TỆP MP4
Coding of audio-visual objects – MP4 file format
HÀ NỘI – 2016
Trang 3Mục lục
Giới thiệu 5
0.1 Nguồn gốc 5
0.2 Sự hoán đổi 5
0.3 Tạo lập nội dung 5
0.4 Phiên trình diễn tạo dòng 6
1 Phạm vi áp dụng 7
2 Tài liệu viện dẫn 7
3 Lưu trữ MPEG-4 7
3.1 Rãnh ghi dòng cơ sở 7
3.1.1 Dữ liệu dòng cơ sở 7
3.1.2 Bộ mô tả dòng cơ sở 8
3.1.3 Bộ mô tả đối tượng 8
3.2 Định danh rãnh ghi 9
3.3 Đồng bộ các dòng 11
3.4 Thành phần 12
3.5 Xử lý của FlexMux 12
4 Định danh tệp 14
5 Các bổ sung đối với định dạng truyền thông cơ sở 14
5.1 Khuôn bộ mô tả đối tượng 14
5.1.1 Cú pháp 15
5.1.2 Giải nghĩa 15
5.2 Các loại Tham chiếu rãnh ghi 15
5.3 Khuôn tiêu đề rãnh ghi 15
5.4 Loại tham chiếu bộ xử lý 16
5.5 Khuôn tiêu đề truyền thông MPEG-4 16
5.5.1 Cú pháp 16
5.5.2 Giải nghĩa 16
5.6 Khuôn mô tả mẫu 16
5.6.1 Cú pháp 17
5.6.2 Giải nghĩa 18
5.7 Sự suy giảm các giá trị ưu tiên 19
6 Các trường mẫu được sử dụng 19
Phụ lục A (Tham khảo) Tuyên bố về bằng sáng chế 20
Phụ lục B (Tham khảo) Xử lý mốc thời gian âm thanh và chỉ thị thông tin hồ sơ/mức 21
Phụ lục C (Quy định) Ký hiệu và thuật ngữ viết tắt 21
Thư mục tài liệu tham khảo 23
Trang 5Lời nói đầu
TCVN xxxx:2016 được xây dựng trên cơ sở ISO/IEC 14496-14
TCVN xxxx:2016 do Học Viện Công nghệ Bưu chính Viễn thông biên soạn, Bộ
Thông tin và Truyền thông đề nghị, Tổng cục Tiêu chuẩn Đo lường Chất lượng
thẩm định, Bộ Khoa học và Công nghệ công bố
Trang 6TCVN xxxx:2016 Giới thiệu
0.2 Sự hoán đổi
Sơ đồ dưới đây đưa ra một ví dụ của một tệp hoán đổi đơn giản, có chứa hai dòng
Hình 1 - Tệp hoán đổi đơn giản
CHÚ THÍCH:
• BIFS: định dạng nhị phân cho phân cảnh (Binary Format for Scene);
• IOD: bộ mô tả đối tượng ban đầu (Initial Object Descriptor);
• OD: bộ mô tả đối tượng (Object Descriptor).
0.3 Tạo lập nội dung
Sơ đồ sau thể hiện một bộ các tệp được sử dụng trong quá trình tạo lập nội dung
IOD
trak (BIFS)trak (OD)trak (video)trak (audio)các khuôn khác…
các đơn vị truy cập o cac nađan xen, theo thứ tự thời gian, BIFS, OD
và âm thanh, hình ảnhTệp mp4
Trang 7Hình 2 – Tệp tạo lập nội dung
0.4 Phiên trình diễn tạo dòng
Sơ đồ dưới đây cho thấy một phiên trình diễn được chuẩn bị để tạo dòng qua một giao thức ghépkênh, chỉ yêu cầu một rãnh ghi gợi ý
Hình 3 – Phiên trình diễn gợi ý cho tạo dòng
Tệp truyền thông
Tệp mp4
Các đơn vị truy cập BIFS có thể không sắp xếp với các dữ liệu không sử dụng
Các đơn vị truy cập âm thanhhình ảnh có thể không sắp xếp với các dữ liệu không sử dụng ải taitruyeeà nhập âm
thanhcác dữ liệu không được sử dụng
mdat
IODmoov
Tệp mp4
trak (BIFS)trak (OD)trak (video)trak (audio)
các khuôn khác
…
Các khuôn khác (inc moov)
IODmoov
Tệp mp4
mdattrak (BIFS)
trak (OD)trak (video)trak (audio)
Các đơn vị truy cập đan xen,theo thứ tự thời gian,
BIFS, OD, truy cập âmthanh, hình ảnh, và cáchướng dẫn gợi ý
hintcác khuôn khác…
Trang 8TIÊU CHUẨN QUỐC GIA TCVN xxxx:2016
Mã hóa các đối tượng hình ảnh âm thanh - Định dạng tệp MP4
1 Phạm vi áp dụng
Tiêu chuẩn này định nghĩa định dạng tệp MP4, một định dạng của tệp truyền thông theo chuẩn ISO
2 Tài liệu viện dẫn
Các tài liệu viện dẫn sau đây là cần thiết để áp dụng tiêu chuẩn này Đối với các tài liệu viện dẫn ghinăm công bố thì áp dụng phiên bản được nêu Đối với các tài liệu viện dẫn không ghi năm công bố thì
áp dụng phiên bản mới nhất (bao gồm cả các sửa đổi, bổ sung)
ISO/IEC 14496-1:2010, Công nghệ thông tin – Mã hóa các đối tượng hình ảnh âm thanh – Phần 1: Các
hệ thống (Information technology — Coding of audio-visual objects — Part 1: Systems)
ISO/IEC 14496-12:2015 Công nghệ thông tin – Mã hóa các đối tượng hình ảnh âm thanh – Phần 12:Định dạng tệp truyền thông cơ sở chuẩn ISO (về mặt kỹ thuật giống với ISO/IEC 15444-12)
(Information technology — Coding of audio-visual objects — Part 12: ISO base media file format) (technically identical to ISO/IEC 15444-12).
“mẫu” cho một dòng truyền thông MPEG-4) Điều này tạo thuận lợi cho quá trình phân mảnh được sửdụng trong các rãnh ghi gợi ý Định dạng tệp có thể mô tả và sử dụng dữ liệu truyền thông được lưutrữ trong các tệp khác, tuy nhiên sự hạn chế này vẫn được áp dụng Vì vậy nếu một tệp được dùng cóchứa dữ liệu truyền thông “trước phân mảnh” (ví dụ một dòng FlexMux trong một đĩa cứng), dữ liệutruyền thông sẽ cần được sao chép để định dạng lại các đơn vị truy cập, nhằm nhập các dữ liệu vàođịnh dạng tệp này
Điều này đúng cho tất cả các loại dòng dữ liệu trong tiêu chuẩn này, bao gồm các dòng “thông tin bổtrợ” như miêu tả đối tượng và tham chiếu thời gian Hệ quả tích cực của việc này là định dạng tệp xử lýcác dòng như nhau, nhưng nhược điểm thì lại tạo ra các liên kết chéo “bên trong” giữa các dòng Điềunày nghĩa là việc thêm và gỡ bỏ các dòng từ một phiên trình diễn sẽ liên quan đến việc thêm vào hoặcxóa bỏ các rãnh ghi dữ liệu và dữ liệu truyền thông liên kết của chính nó Không chỉ các dòng
Trang 9phải được đặt vào hoặc gỡ bỏ khỏi khung hình mà dòng miêu tả đối tượng cũng cần được cập nhật.Đối với mỗi rãnh ghi dữ liệu, toàn bộ bộ mô tả dòng cơ sở ES-descriptor được lưu trữ như là một mô tảhoặc các mô tả mẫu SLConfigDescriptor cho rãnh ghi truyền thông được lưu trữ trong tệp bằng cách
sử dụng giá trị mặc định (được định trước = 2), ngoại trừ khi bộ mô tả dòng cơ sở tham chiếu tới mộtdòng qua một địa chỉ URL, tức là, dòng được tham chiếu đến nằm ngoài phạm vi của tệp MP4 Trongtrường hợp này, SLConfigDescriptor không bị ràng buộc giá trị được định trước
Trong một dòng bít được truyền tải, các đơn vị truy cập trong gói SL được truyền đi gói trong các byte.Điều đó có nghĩa là các rãnh ghi gợi ý sẽ tạo các tiêu đề gói SL bằng cách sử dụng thông tin trong cácrãnh ghi truyền thông và các rãnh ghi gợi ý sẽ tham chiếu đến các đơn vị truy cập từ các rãnh ghitruyền thông Việc đưa tiêu đề vào trong quá trình gợi ý là có thể thực hiện mà không làm dịch bit, vìmỗi gói SL và đơn vị truy cập chứa tương ứng sẽ cùng bắt đầu trên các biên byte
3.1.2 Bộ mô tả dòng cơ sở
ESDescriptor cho mỗi dòng trong phạm vi của tệp MP4 mô tả trong tiêu chuẩn này được lưu trữ trong
mô tả mẫu, các trường và các cấu trúc bao gồm được giới hạn như sau:
• ES_ID - thiết lập là 0 để lưu trữ; khi tạo thành một dòng, 16 bit sau của định danh rãnh TrackIDđược sử dụng
•
StreamDependenceFlag - thiết lập là 0 để lưu trữ; nếu một phụ thuộc tồn tại, nó được chỉ định sửdụng một rãnh ghi tham chiếu loại ‘dpnd’
• URLflag - giữ nguyên, tức là đặt là false, giống như một dòng trong tệp, chứ không phải từ xa
• SLConfigDescriptor - được xác định trước là loại 2
• OCRStreamFlag - thiết lập là false trong tệp
Các ESDescriptor dành cho một dòng được tham chiếu qua một ES URL được lưu trữ trong các mô tảmẫu và trong các trường và bao gồm các cấu trúc được giới hạn như sau
• ES_ID - thiết lập là 0 để lưu trữ; khi tạo thành một dòng, 16 bit thấp của định danh rãnh TrackIDđược sử dụng
• streamDependenceFlag - thiết lập là 0 để lưu trữ; nếu một phụ thuộc tồn tại, nó được chỉ định sửdụng một rãnh ghi tham chiếu loại ‘dpnd’
• URLflag - giữ nguyên, tức là đặt là true, giống như một dòng không nằm trong tệp
• SLConfigDescriptor - giữ nguyên
• OCRStreamFlag - thiết lập là false trong tệp
Cần lưu ý rằng QoSDescriptor có thể phải viết lại khi truyền dẫn vì nó chứa thông tin về kích thướcPDU vv
Trang 10TCVN xxxx:20163.1.3 Bộ mô tả đối tượng
Bộ mô tả đối tượng ban đầu và các dòng bộ mô tả đối tượng được xử lý đặc biệt trong định dạng tệp.Các bộ mô tả đối tượng chứa các bộ mô tả ES, do đó nó chứa những thông tin cụ thể về dòng Ngoài
ra, để tạo điều kiện chỉnh sửa, các thông tin về rãnh ghi được lưu giữ dưới dạng một ESDescriptortrong mô tả mẫu của rãnh ghi đó ESDescriptor phải được lấy từ đó từ đó, viết lại cho phù hợp và đượctruyền dẫn như là một phần của dòng OD khi phiên trình diễn được tạo dòng
Kết quả là, các bộ mô tả ES không được lưu trữ trong các rãnh ghi OD hoặc bộ mô tả đối tượng banđầu Thay vào đó, bộ mô tả đối tượng ban đầu có một mô tả chỉ được sử dụng trong tệp, chứa duynhất ID rãnh ghi của dòng cơ sở Khi được sử dụng, một ESDescriptor đã được viết lại phù hợp từrãnh ghi tham chiếu sẽ thay thế bộ mô tả này Tương tự như vậy, các rãnh ghi OD được liên kết đếncác rãnh ghi ES bằng các tham chiếu rãnh ghi Trong trường hợp một bộ mô tả ES sẽ được sử dụngtrong rãnh ghi OD thì một bộ mô tả khác được sử dụng, nó chỉ diên ra lại trong tệp Nó bao gồm cácchỉ số trong thiết lập của các tham chiếu rãnh ghi mpod mà rãnh ghi OD này sở hữu Một ESDescriptorđược viết lại phù hợp sẽ thay thế nó bởi các gợi ý của rãnh ghi này
Các ES_ID_Inc được sử dụng trong khuôn bộ mô tả đối tượng:
class ES_ID_Inc extends BaseDescriptor : bit(8) tag=ES_IDIncTag {
unsigned int(32) Track_ID; // ID của rãnh ghi sử dụng
}
ES_ID_IncTag = 0x0E được dành riêng cho việc sử dụng định dạng tệp
Các ES_ID_Ref được sử dụng trong dòng OD:
class ES_ID_Ref extends BaseDescriptor : bit(8) tag=ES_IDRefTag {
bit(16) ref_index; // chỉ số track ref của rãnh ghi sử dụng
}
ES_ID_RefTag = 0x0F được dành riêng cho việc sử dụng định dạng tệp
MP4_IOD_Tag = 0x10 được dành riêng cho việc sử dụng định dạng tệp
MP4_OD_Tag = 0x11 được dành riêng cho việc sử dụng định dạng tệp
IPI_DescrPointerRefTag = 0x12 được dành riêng cho việc sử dụng định dạng tệp
ES_DescrRemoveRefTag = 0x07 được dành riêng cho việc sử dụng định dạng tệp (thẻ lệnh)
CHÚ THÍCH: Các giá trị thẻ trên được quy định tại Bảng 1 của 7.2.2.1 và Bảng 2 của 7.2.2.3.2 trong tiêu chuẩn ISO/IEC 14496-1:2010, các giá trị thực tế cần được tham chiếu từ các bảng này.
Một gợi ý có thể phải gửi nhiều sự kiện OD hơn so với thực tế đã xảy ra trong rãnh ghi OD: ví dụ, nếuES_description thay đổi tại thời điểm khi không có sự kiện nào trong rãnh ghi OD Nói chung, bất kỳ sựkiện OD nào đã được xác thực rõ ràng vào rãnh ghi OD cũng phải được gửi cùng với những phần cầnthiết để chỉ rõ những thay đổi khác Bộ mô tả ES đã được gửi trong rãnh ghi OD sẽ được lấy từ phần
mô tả của mẫu tạm thời kế tiếp trong rãnh ghi ES (trong thời gian giải mã)
Các định danh rãnh ghi được sử dụng trong một tệp MP4 là duy nhất trong tệp đó; không có bất kỳ hairãnh ghi nào có thể sử dụng cùng một định danh
Trang 11Mỗi dòng cơ sở trong các tệp được lưu giữ như một rãnh ghi truyền thông Đối với một dòng cơ sở, haibyte sau của bốn byte track_ID phải được thiết lập là định danh dòng cơ sở (ES_ID); hai byte trướccủa track_ID thiết lập là không Các rãnh ghi gợi ý có thể sử dụng các giá trị định danh rãnh ghi trongcùng một dải, nếu khoảng số này là đủ (thường là như vậy) Tuy nhiên, các định danh rãnh ghi gợi ýcũng có thể sử dụng các giá trị lớn hơn giá trị của định danh rãnh ghi, vì định danh của chúng khôngđược ánh xạ đến định danh dòng cơ sở Như vậy các phiên trình diễn rất lớn có thể sử dụng toàn bộkhông gian 16-bit cho các định danh dòng cơ sở.
Giá trị nhận dạng rãnh ghi kế tiếp, chứa trong next_track_ID của khung tiêu đề hình MovieHeaderBox,theo quy định của tiêu chuẩn ISO định dạng truyền thông cơ sở, thường mang một giá trị lớn hơn giátrị định danh rãnh ghi lớn nhất trong tệp Việc này cho phép tạo ra một định danh rãnh ghi rất dễ dàngtrong mọi tình huống Tuy nhiên, nếu giá trị này lớn hơn hoặc bằng 65535 và nếu có thêm một rãnh ghitruyền thông mới, thì việc kiểm tra phải được thực hiện trong tệp cho định danh rãnh ghi tự do Nếumọi giá trị đều là 1 (32-bit maxint) thì cần thực hiện việc kiểm tra này cho tất cả các phần thêm vào.Nếu ta muốn thêm vào một rãnh ghi chứa một định danh rãnh ghi đã biết (định danh dòng cơ sở), thìtệp phải được kiểm tra để đảm bảo rằng không có xung đột Lưu ý rằng, có thể đánh số lại các rãnh ghigợi ý khá dễ dàng nhưng cần lưu tâm các rãnh ghi truyền thông hơn bởi vì có thể có nhiều tham chiếuđến ES_ID (ID rãnh ghi) trong các rãnh ghi khác
Nếu các rãnh ghi gợi ý có các ID rãnh ghi nằm ngoài phạm vi cho phép đối với các rãnh ghi dòng cơ
sở, thì ID rãnh ghi kế tiếp sẽ ghi lại ID rãnh ghi gợi ý có sẵn tiếp theo Vì giá trị này lớn hơn 65535, nênsau đó cần phải kiểm tra để tìm ra một ID rãnh ghi dòng cơ sở hợp lệ
Nếu hai phiên trình diễn được hợp nhất thì có thể xuất hiện xung đột giữa các ID rãnh ghi của chúng.Trong trường hợp này, một hoặc nhiều rãnh ghi sẽ phải đánh số lại Có hai thao tác cần thực hiện nhưsau:
• Thay đổi ID của chính rãnh ghi đó, điều này là khá dễ dàng (ID rãnh ghi nằm trong tiêu đề rãnhghi)
• Thay đổi con trỏ đến rãnh ghi cần đánh số lại
Các con trỏ có thể chỉ xuất hiện trong cấu trúc định dạng tệp đó Định dạng tệp chỉ sử dụng các ID rãnhghi thông qua các tham chiếu rãnh ghi, các tham chiếu rãnh ghi này có thể dễ dàng tìm thấy và sửađổi ID rãnh ghi trở thành ES_ID trong các dữ liệu MPEG-4 và ES_ID xuất hiện trong dòng OD Vì tất
cả các con trỏ đến ES_ID trong dòng OD được thay thế bằng các phương tiện tham chiếu rãnh ghi,nên không cần kiểm tra dòng OD để tham chiếu chéo trong dòng MPEG-4
Trong các định dạng tệp, lệnh ES_DescriptorRemove và bộ mô tả IPI_DescrPointer được chuyển đổithành ES_DescrRemoveRef và IPI_DescrPointerRef, do:
• Thay đổi giá trị của thẻ tương ứng về ES_DescrRemoveRefTag hoặc IPI_DescrPointerRefTag ;
• Thay đổi ES_ID bất kỳ về chỉ số tham chiếu rãnh ghi phù hợp (sử dụng các tham chiếu tương
Trang 12TCVN xxxx:2016
ứng của loại mpod và ipir - xem 5.2)
Khi thực hiện hoặc đưa ra gợi ý, các thay đổi chỉ số rãnh ghi tham chiếu và giá trị thẻ sẽ đảo ngược
• MPEG-4 ESDescriptor, được lưu trữ trong tệp, thường chứa OCRStreamFlag thiết lập là FALSE
và không có OCR_ES_ID Nếu một OCR_ES_ID được thiết lập, nó sẽ bị bỏ qua
• Nếu một rãnh ghi (dòng) chứa một tham chiếu rãnh ghi loại 'đồng bộ' có giá trị là 0, thì bộ gợi ýhoặc máy chủ sẽ thiết lập các trường OCRStreamFlag trong MPEG-4 ESDescriptor là FALSE vàkhông chèn thêm bất kỳ trường OCR_ES_ID nào Điều này có nghĩa rằng dòng này không đồng
bộ với dòng khác nữa, nhưng các dòng khác vẫn có thể được đồng bộ với nó
• Nếu một rãnh ghi (dòng) chứa một tham chiếu rãnh ghi loại 'đồng bộ' có giá trị là 0, thì bộ gợi ýhoặc máy chủ sẽ thiết lập các trường OCRStreamFlag trong MPEG-4 ESDescriptor là TRUE vàchèn thêm một trường OCR_ES_ID có cùng giá trị chứa trong rãnh tham chiếu ‘đồng bộ’ Điều này
có nghĩa rằng dòng này sẽ đồng bộ với các dòng chứa trong OCR_ES_ID Các dòng khác cũng cóthể được đồng bộ trong cùng một dòng, hiển nhiên hoặc ngầm định
• Nếu một rãnh ghi (dòng) không chứa một tham chiếu rãnh ghi loại 'đồng bộ', thì các trường hợpmặc định sẽ được áp dụng Các bộ gợi ý hoặc máy chủ sẽ thiết lập các trường OCRStreamFlagtrong MPEG-4 ESDescriptor là TRUE và sẽ chèn một trường OCR_ES_ID có giá trị được lựa chọndựa trên các quy tắc dưới đây Điều này có nghĩa rằng, dòng này được đồng bộ với các dòng ghitrong OCR_ES_ID Các quy tắc để chọn OCR_ES_ID như sau:
o Nếu không có rãnh ghi (dòng) trong tệp có chứa một tham chiếu rãnh ghi loại 'đồng bộ', thì bộgợi ý chọn một TrackID và sử dụng giá trị đó cho các trường OCR_ES_ID của tất cả cácESDescriptors Trường hợp ngoại lệ có thể xảy ra ở ESDescriptor của dòng tương ứng vớiTrackID đó, ở đó OCRStreamFlag có thể được thiết lập thành FALSE
o Nếu một hoặc nhiều rãnh ghi (dòng) trong tệp chứa một tham chiếu rãnh ghi loại 'đồng bộ' vàtất cả các tham chiếu rãnh ghi như vậy đều biểu thị một TrackID đơn, thì bộ gợi ý sẽ sử dụngTrackID đó Trong một tham chiếu rãnh ghi loại 'đồng bộ', giá trị 0 sẽ tương đương với TrackIDcủa chính rãnh ghi đó
o Nếu hai hoặc nhiều rãnh ghi (dòng) trong tệp chứa một tham chiếu rãnh ghi loại 'đồng bộ' và