Codec trong các loại media phổ biến
Ở mức cơ bản, bạn có thể chỉ định kiểu của một tệp media bằng một loại MIME cơ bản, chẳng hạn video/mp4 hoặc audio/mpeg. Tuy nhiên, nhiều kiểu media - đặc biệt là những kiểu hỗ trợ track video - sẽ được lợi nếu có khả năng mô tả chính xác hơn định dạng của dữ liệu bên trong. Chẳng hạn, chỉ mô tả một video trong tệp MPEG-4 bằng MIME type video/mp4 không nói gì về định dạng thực tế của media bên trong.
Vì lý do đó, có thể thêm tham số codecs vào MIME type mô tả nội dung media. Nhờ đó, ta có thể cung cấp thông tin riêng cho container. Thông tin này có thể bao gồm như profile của video codec, kiểu được dùng cho các track âm thanh, và những thứ tương tự.
Hướng dẫn này xem nhanh cú pháp của tham số codecs trong media type và cách nó được dùng cùng chuỗi MIME type để cung cấp chi tiết về nội dung của media âm thanh hoặc video, vượt ra ngoài việc chỉ ra kiểu container.
MIME type của định dạng container
MIME type cho một định dạng container được biểu diễn bằng cách nêu kiểu media (audio, video, v.v.), sau đó là dấu gạch chéo (/), rồi đến định dạng được dùng để chứa media:
audio/mpeg-
An audio file using the MPEG file type, such as an MP3.
video/ogg-
A video file using the Ogg file type.
video/mp4-
A video file using the MPEG-4 file type.
video/quicktime-
A video file in Apple's QuickTime format. As noted elsewhere, this format was once commonly used on the web but no longer is, since it required a plugin to use.
Tuy nhiên, mỗi MIME type này đều khá mơ hồ. Tất cả các kiểu tệp này đều hỗ trợ nhiều codec khác nhau, và các codec đó có thể có bất kỳ số lượng profile, level và yếu tố cấu hình nào khác. Vì lý do đó, bạn có thể muốn kèm thêm tham số codecs cùng với media type.
Cú pháp cơ bản
Bạn có thể thêm tham số codecs vào media type. Để làm vậy, hãy thêm dấu chấm phẩy (;), sau đó là codecs= rồi đến chuỗi mô tả định dạng nội dung của tệp. Một số media type chỉ cho phép bạn chỉ định tên các codec sẽ dùng, trong khi những loại khác còn cho phép chỉ định các ràng buộc khác nhau cho các codec đó. Bạn có thể chỉ định nhiều codec bằng cách ngăn cách chúng bằng dấu phẩy.
Giống như mọi tham số MIME type khác, codecs phải được đổi thành codecs* (chú ý ký tự dấu sao *) nếu bất kỳ thuộc tính nào của codec dùng các ký tự đặc biệt phải được mã hóa phần trăm theo RFC 2231, section 4: MIME Parameter Value and Encoded Word Extensions. Bạn có thể dùng hàm JavaScript encodeURI() để mã hóa danh sách tham số; tương tự, bạn có thể dùng decodeURI() để giải mã một danh sách tham số đã được mã hóa trước đó.
Note:
Khi dùng tham số codecs, danh sách codec được chỉ định phải bao gồm mọi codec được dùng cho nội dung của tệp. Danh sách cũng có thể chứa các codec không có trong tệp.
Tùy chọn codec theo container
Các container dưới đây hỗ trợ các tùy chọn codec mở rộng trong tham số codecs của chúng:
Một số liên kết bên trên trỏ tới cùng một phần; đó là vì các media type đó đều dựa trên ISO Base Media File Format (ISO BMFF), nên chúng dùng chung một cú pháp.
AV1
Cú pháp của tham số codecs cho AV1 được định nghĩa trong đặc tả AV1 Codec ISO Media File Format Binding, mục 5: Codecs Parameter String.
av01.P.LLT.DD[.M.CCC.cp.tc.mc.F]
Note: Các trình duyệt dựa trên Chromium sẽ chấp nhận bất kỳ tập con nào của các tham số tùy chọn (thay vì tất cả hoặc không có gì, như đặc tả yêu cầu).
Các thành phần của chuỗi tham số codec này được mô tả chi tiết hơn trong bảng dưới đây. Mỗi thành phần có độ dài cố định; nếu giá trị ngắn hơn độ dài đó, nó phải được đệm bằng các số 0 ở đầu.
| Thành phần | Chi tiết | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
P |
Số profile một chữ số:
|
||||||||||||||||||||
LL |
Số mức hai chữ số, được chuyển sang định dạng mức X.Y, trong đó X = 2 + (LL >> 2) và Y = LL & 3.
Xem Phụ lục A, mục 3 trong đặc tả AV1 để biết chi tiết.
|
||||||||||||||||||||
T |
Ký hiệu tier một ký tự. Với tier Main (seq_tier bằng 0), ký tự này là chữ M.
Với tier High (seq_tier bằng 1), ký tự này là chữ H.
Tier High chỉ có ở mức 4.0 trở lên.
|
||||||||||||||||||||
DD |
Độ sâu bit của thành phần hai chữ số. Giá trị này phải là một trong 8, 10 hoặc 12; các giá trị hợp lệ thay đổi tùy theo profile và các thuộc tính khác. | ||||||||||||||||||||
M |
Cờ đơn sắc một chữ số; nếu là 0, video bao gồm các plane U và V ngoài plane Y. Ngược lại, dữ liệu video hoàn toàn nằm trên plane Y và do đó là đơn sắc. Xem YUV để biết chi tiết cách hệ màu YUV hoạt động. Giá trị mặc định là 0 (không đơn sắc). | ||||||||||||||||||||
CCC |
Chữ số thứ ba trong Giá trị mặc định là |
||||||||||||||||||||
cp |
Giá trị hai chữ số color_primaries cho biết hệ màu được media sử dụng.
Ví dụ, màu BT.2020/BT.2100, dùng cho video HDR, là 09.
Thông tin cho mục này và các thành phần còn lại nằm trong phần Color config semantics của đặc tả AV1.
Giá trị mặc định là 01 (ITU-R BT.709).
|
||||||||||||||||||||
tc |
Giá trị hai chữ số transfer_characteristics. Giá trị này định nghĩa hàm dùng để ánh xạ gamma (trong thuật ngữ kỹ thuật gọi rất đẹp là "opto-electronic transfer function") từ nguồn sang màn hình.
Ví dụ, BT.2020 10-bit là 14.
Giá trị mặc định là 01 (ITU-R BT.709).
|
||||||||||||||||||||
mc |
Hằng số hai chữ số matrix_coefficients chọn các hệ số ma trận dùng để chuyển đổi các kênh đỏ, xanh lam và xanh lục thành tín hiệu luma và chroma.
Ví dụ, các hệ số chuẩn dùng cho BT.709 được biểu thị bằng giá trị 01.
Giá trị mặc định là 01 (ITU-R BT.709).
|
||||||||||||||||||||
F |
Cờ một chữ số cho biết màu có được phép dùng toàn bộ dải giá trị có thể (1) hay phải bị giới hạn trong các giá trị được coi là hợp lệ cho cấu hình màu đã chỉ định (tức là studio swing representation).
Mặc định là 0 (dùng studio swing representation).
|
Tất cả các trường từ M (cờ đơn sắc) trở đi đều là tùy chọn; bạn có thể dừng thêm trường ở bất kỳ điểm nào (nhưng không thể bỏ qua các trường một cách tùy tiện). Các giá trị mặc định được liệt kê trong bảng ở trên. Một số chuỗi codec AV1 ví dụ:
av01.2.15M.10.0.100.09.16.09.0-
AV1 Professional Profile, mức 5.3, Main tier, 10 bit mỗi thành phần màu, lấy mẫu sắc độ 4:2:2, dùng màu gốc ITU-R BT.2100, đặc tính chuyển đổi và ma trận màu YCbCr. Thể hiện theo studio swing representation.
av01.0.15M.10-
AV1 Main Profile, mức 5.3, Main tier, 10 bit mỗi thành phần màu. Các thuộc tính còn lại lấy từ mặc định: lấy mẫu sắc độ 4:2:0, màu gốc BT.709, đặc tính chuyển đổi và hệ số ma trận. Studio swing representation.
VP9
ISO Base Media File Format syntax
Cú pháp của tham số codecs cho VP9 được định nghĩa trong đặc tả VP Codec ISO Media File Format Binding, ở mục Codecs Parameter String.
Trong định dạng này, giá trị của tham số codecs bắt đầu bằng một mã bốn ký tự xác định codec được dùng trong container, sau đó là một chuỗi các giá trị hai chữ số được ngăn cách bằng dấu chấm (.).
cccc.PP.LL.DD cccc.PP.LL.DD.CC.cp.tc.mc.FF
Bốn thành phần đầu tiên là bắt buộc; mọi thứ từ CC (lấy mẫu sắc độ) trở đi đều là tùy chọn, nhưng phải dùng trọn gói hoặc bỏ hẳn. Mỗi thành phần được mô tả trong bảng sau. Sau bảng là một số ví dụ.
| Thành phần | Chi tiết | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cccc |
A four-character code indicating which indicates which of the possible codecs is being described. Potential values are:
|
||||||||||||||||||||||||||||||||||
PP |
Số profile hai chữ số, được đệm số 0 ở đầu nếu cần để đủ đúng hai chữ số.
|
||||||||||||||||||||||||||||||||||
LL |
Số mức hai chữ số.
Số mức là ký hiệu số cố định, trong đó chữ số đầu là hàng đơn vị và chữ số thứ hai biểu thị phần mười.
Ví dụ, mức 3 là 30 và mức 6.1 là 61.
|
||||||||||||||||||||||||||||||||||
DD |
Độ sâu bit của các giá trị luma và thành phần màu; các giá trị được phép là 8, 10 và 12. | ||||||||||||||||||||||||||||||||||
CC |
A two-digit value indicating which chroma subsampling format to use. Bảng sau liệt kê các giá trị được phép; xem Lấy mẫu sắc độ trong hướng dẫn "Khái niệm video số" để biết thêm thông tin về chủ đề này và các chủ đề khác.
|
||||||||||||||||||||||||||||||||||
cp |
Một số nguyên hai chữ số chỉ định màu cơ bản nào trong Mục 8.1 của tiêu chuẩn ISO/IEC 23001-8:2016 được sử dụng. Thành phần này và mọi thành phần phía sau nó đều là tùy chọn. Các giá trị có thể có của thành phần màu cơ bản là:
|
||||||||||||||||||||||||||||||||||
tc |
Một số nguyên hai chữ số cho biết
transferCharacteristics của video.
Giá trị này lấy từ Mục 8.2 của
ISO/IEC 23001-8:2016
và chỉ ra đặc tính truyền cần dùng khi điều chỉnh màu đã giải mã sang
mục tiêu hiển thị.
|
||||||||||||||||||||||||||||||||||
mc |
Giá trị hai chữ số cho thuộc tính matrixCoefficients.
Giá trị này lấy từ bảng trong Mục 8.3 của đặc tả
ISO/IEC 23001-8:2016.
Giá trị này cho biết cần dùng bộ hệ số nào khi ánh xạ từ các màu cơ bản
đỏ, lam và lục gốc sang tín hiệu luma và chroma.
Các hệ số này sau đó được dùng với các phương trình được nêu trong cùng
mục đó.
|
||||||||||||||||||||||||||||||||||
FF |
Cho biết có giới hạn mức đen và dải màu của từng thành phần màu vào dải
hợp lệ hay không.
Với mẫu màu 8 bit, dải hợp lệ là 16-235.
Giá trị 00 cho biết các giới hạn này phải được áp dụng,
trong khi giá trị 01 cho phép dùng toàn bộ dải giá trị có
thể có của từng thành phần, ngay cả khi màu kết quả nằm ngoài giới hạn
của hệ màu.
|
Examples
video/webm;codecs="vp09.02.10.10.01.09.16.09.01,opus"-
Video VP9, profile 2 level 1.0, với nội dung YUV 10 bit dùng chroma subsampling 4:2:0, màu cơ bản BT.2020, ST 2084 EOTF (HDR SMPTE), ma trận màu BT.2020 không độ chói hằng, cùng mã hóa chroma và luma toàn dải. Âm thanh ở định dạng Opus.
ISO Base Media File Format: MP4, QuickTime, and 3GP
Tất cả các media type dựa trên ISO Base Media File Format (ISO BMFF) đều dùng chung cú pháp cho tham số codecs. Những media type này bao gồm MPEG-4 (và thực tế là cả định dạng tệp QuickTime mà MPEG-4 dựa trên) cũng như 3GP. Cả track video lẫn audio đều có thể được mô tả bằng tham số codecs với các MIME type sau:
| MIME type | Mô tả |
|---|---|
audio/3gpp |
Âm thanh 3GP (RFC 3839: MIME Type Registrations for 3rd generation Partnership Project (3GP) Multimedia files) |
video/3gpp |
Video 3GP (RFC 3839: MIME Type Registrations for 3rd generation Partnership Project (3GP) Multimedia files) |
audio/3gp2 |
Âm thanh 3GP2 (RFC 4393: MIME Type Registrations for 3GPP2 Multimedia files) |
video/3gp2 |
Video 3GP2 (RFC 4393: MIME Type Registrations for 3GPP2 Multimedia files) |
audio/mp4 |
Âm thanh MP4 (RFC 4337: MIME Type Registration for MPEG-4) |
video/mp4 |
Video MP4 (RFC 4337: MIME Type Registration for MPEG-4) |
application/mp4 |
Media không phải âm thanh hoặc hình ảnh được đóng gói trong MPEG-4 |
Mỗi codec được mô tả bởi tham số codecs có thể được chỉ định hoặc bằng tên của container (3gp, mp4, quicktime, v.v.) hoặc bằng tên container cộng với các tham số bổ sung để chỉ rõ codec và cấu hình của nó. Mỗi mục trong danh sách codec có thể chứa một số thành phần, được phân tách bằng dấu chấm (.).
Cú pháp của giá trị codecs khác nhau tùy codec; tuy nhiên, nó luôn bắt đầu bằng mã định danh bốn ký tự của codec, theo sau là dấu chấm (.), rồi đến giá trị Object Type Indication (OTI) cho định dạng dữ liệu cụ thể. Với hầu hết codec, OTI là số thập lục phân hai chữ số; riêng AVC (H.264) dùng sáu chữ số thập lục phân.
Vì vậy, cú pháp cho từng codec được hỗ trợ có dạng như sau:
cccc[.pp]*(Generic ISO BMFF)-
Trong đó
cccclà mã ID bốn ký tự của codec vàpplà nơi chứa không hoặc nhiều giá trị thuộc tính đã mã hóa bằng hai ký tự. mp4a.oo[.A](MPEG-4 audio)-
Trong đó
oolà giá trị Object Type Indication mô tả chính xác hơn nội dung của media vàAlà audio OTI một chữ số. Các giá trị có thể có của OTI có trên trang Object Types của MP4 Registration Authority. Ví dụ, âm thanh Opus trong tệp MP4 làmp4a.ad. Xem Âm thanh MPEG-4 để biết thêm chi tiết. mp4v.oo[.V](MPEG-4 video)-
Ở đây,
ootiếp tục là OTI mô tả nội dung chính xác hơn, cònVlà video OTI một chữ số. avc1[.PPCCLL](AVC video)-
PPCCLLlà sáu chữ số thập lục phân chỉ định số profile (PP), cờ constraint set (CC) và level (LL). Xem Các profile AVC để biết các giá trị có thể có củaPP.Byte cờ constraint set gồm các cờ Boolean một bit, trong đó bit có trọng số cao nhất được gọi là cờ 0 (hoặc
constraint_set0_flagtrong một số tài liệu), và mỗi bit tiếp theo tăng số thứ tự thêm một. Hiện tại chỉ dùng các cờ từ 0 đến 2; năm bit còn lại phải bằng 0. Ý nghĩa của các cờ thay đổi tùy profile đang dùng.Level là số dấu phẩy cố định, vì vậy giá trị
14(thập phân 20) nghĩa là level 2.0, còn giá trị3D(thập phân 61) nghĩa là level 6.1. Nói chung, số level càng cao thì luồng càng dùng nhiều băng thông và hỗ trợ kích thước video tối đa càng lớn. avc3[.PPCCLL](Variable resolution AVC)-
Tham số codec
avc3có cùng cú pháp với tham số codecavc1.
AVC profiles
Sau đây là các profile AVC cùng số profile tương ứng để dùng trong tham số codecs, cũng như giá trị cần chỉ định cho thành phần ràng buộc CC.
| Profile | Số (Hex) | Byte ràng buộc |
|---|---|---|
| Constrained Baseline Profile (CBP) CBP chủ yếu là giải pháp cho các tình huống có tài nguyên hạn chế, hoặc cần kiểm soát việc dùng tài nguyên để giảm nguy cơ media hoạt động kém. | 42 |
40 |
| Baseline Profile (BP) Tương tự CBP nhưng có thêm cơ chế bảo vệ chống mất dữ liệu và phục hồi. Profile này hiện không còn được dùng rộng rãi như trước khi CBP xuất hiện. Mọi luồng CBP cũng được xem là luồng BP. | 42 |
00 |
| Extended Profile (XP) Được thiết kế cho truyền phát video qua mạng, với khả năng nén cao và cải thiện thêm về độ bền dữ liệu cũng như chuyển đổi luồng. | 58 |
00 |
| Main Profile (MP) Profile dùng cho truyền hình số độ phân giải chuẩn phát ở định dạng MPEG-4. Không dùng cho truyền hình độ nét cao. Tầm quan trọng của profile này đã giảm đi kể từ khi High Profile ra đời vào năm 2004 để phục vụ HDTV. | 4D |
00 |
| High Profile (HiP) Hiện nay, HiP là profile chính được dùng cho video HD phát sóng và phát hành trên đĩa; nó được dùng cho cả truyền hình HD lẫn video Blu-Ray. | 64 |
00 |
| Progressive High Profile (PHiP) Về cơ bản là High Profile nhưng không hỗ trợ field coding. | 64 |
08 |
| Constrained High Profile Là PHiP nhưng không hỗ trợ lát cắt dự đoán hai chiều ("B-slices"). | 64 |
0C |
| High 10 Profile (Hi10P) High Profile, nhưng hỗ trợ tới 10 bit cho mỗi thành phần màu. | 6E |
00 |
| High 4:2:2 Profile (Hi422P) Mở rộng Hi10P bằng cách thêm hỗ trợ chroma subsampling 4:2:2 cùng tối đa 10 bit cho mỗi thành phần màu. | 7A |
00 |
| High 4:4:4 Predictive Profile (Hi444PP) Ngoài các khả năng có trong Hi422P, Hi444PP bổ sung hỗ trợ chroma subsampling 4:4:4 (không loại bỏ thông tin màu). Nó cũng hỗ trợ tới 14 bit cho mỗi mẫu màu và mã hóa vùng không mất dữ liệu hiệu quả. Ngoài ra còn có tùy chọn mã hóa mỗi khung thành ba mặt phẳng màu riêng biệt. | F4 |
00 |
| High 10 Intra Profile High 10 bị ràng buộc chỉ dùng intra-frame. Chủ yếu dùng cho ứng dụng chuyên nghiệp. | 6E |
10 |
| High 4:2:2 Intra Profile Hi422 Profile nhưng chỉ dùng all-intra-frame. | 7A |
10 |
| High 4:4:4 Intra Profile High 4:4:4 Profile bị ràng buộc chỉ dùng intra frame. | F4 |
10 |
| CAVLC 4:4:4 Intra Profile High 4:4:4 Profile bị ràng buộc dùng all-intra và chỉ dùng mã hóa entropy CAVLC. | 44 |
00 |
| Scalable Baseline Profile Được thiết kế cho hội nghị video, giám sát và các tình huống di động; SVC Baseline Profile dựa trên AVC Constrained Baseline profile. Lớp cơ sở của luồng được cung cấp ở chất lượng cao, cùng một số luồng phụ cho các biến thể khác của cùng video trong môi trường bị ràng buộc. | 53 |
00 |
| Scalable Constrained Baseline Profile Chủ yếu dùng cho các ứng dụng giao tiếp thời gian thực. Chưa được WebRTC hỗ trợ, nhưng đang có phần mở rộng của WebRTC API để cho phép SVC. | 53 |
04 |
| Scalable High Profile Chủ yếu dùng trong các ứng dụng phát sóng và streaming. Lớp cơ sở (hoặc chất lượng cao nhất) phải tuân theo AVC High Profile. | 56 |
00 |
| Scalable Constrained High Profile Tập con của Scalable High Profile, được thiết kế chủ yếu cho giao tiếp thời gian thực. | 56 |
04 |
| Scalable High Intra Profile Chủ yếu hữu ích cho ứng dụng sản xuất nội dung; profile này chỉ hỗ trợ all-intra. | 56 |
20 |
| Stereo High Profile Cung cấp video lập thể bằng hai bản dựng của cùng cảnh (mắt trái và mắt phải). Ngoài ra, nó có cùng các tính năng như High Profile. | 80 |
00 |
| Multiview High Profile Hỗ trợ hai hoặc nhiều góc nhìn bằng cả dự đoán liên khung theo thời gian và dự đoán liên góc nhìn MVC. Không hỗ trợ field picture hoặc mã hóa macroblock-adaptive frame-field. | 76 |
00 |
| Multiview Depth High Profile Dựa trên High Profile, mà luồng con chính phải tuân theo. Các luồng con còn lại phải khớp với Stereo High Profile. | 8A |
00 |
MPEG-4 audio
Khi giá trị của một mục trong danh sách codecs bắt đầu bằng mp4a, cú pháp của giá trị đó sẽ là:
mp4a.oo[.A]
Ở đây, oo là mã định danh loại đối tượng (Object Type Indication) thập lục phân hai chữ số, dùng để chỉ định lớp codec được dùng cho media. Các OTI do MP4 Registration Authority cấp, cơ quan này duy trì danh sách các giá trị OTI có thể có. Một giá trị đặc biệt là 40; nó cho biết media là âm thanh MPEG-4 (ISO/IEC 14496 Part 3). Để chỉ rõ hơn nữa, một thành phần thứ ba - Audio Object Type - được thêm vào cho OTI 40 để thu hẹp loại thành một subtype cụ thể của MPEG-4.
Audio Object Type được chỉ định dưới dạng giá trị thập phân một hoặc hai chữ số (khác với hầu hết các giá trị khác trong tham số codecs, vốn dùng hệ thập lục phân). Ví dụ, AAC-LC của MPEG-4 có số audio object type là 2, nên giá trị codecs đầy đủ đại diện cho AAC-LC là mp4a.40.2.
Vì vậy, ER AAC LC, có Audio Object Type là 17, có thể được biểu diễn bằng giá trị codecs đầy đủ là mp4a.40.17. Các giá trị một chữ số có thể được ghi dưới dạng một chữ số (đây là lựa chọn tốt hơn vì tương thích rộng nhất) hoặc được đệm thêm số 0 ở đầu để thành hai chữ số, chẳng hạn mp4a.40.02.
Note:
Đặc tả ban đầu yêu cầu số Audio Object Type trong thành phần thứ ba chỉ được có một chữ số thập phân. Tuy nhiên, các sửa đổi sau này đã mở rộng phạm vi giá trị này vượt xa một chữ số, vì vậy hiện nay tham số thứ ba có thể là một hoặc hai chữ số. Việc đệm thêm 0 ở đầu cho các giá trị nhỏ hơn 10 là tùy chọn. Dù vậy, các triển khai codec MPEG-4 cũ hơn có thể không hỗ trợ giá trị hai chữ số, nên dùng một chữ số khi có thể sẽ tối đa hóa khả năng tương thích.
Các Audio Object Type được định nghĩa trong ISO/IEC 14496-3 subpart 1, section 1.5.1. Bảng dưới đây cung cấp danh sách cơ bản các Audio Object Type và, với những loại phổ biến hơn, danh sách các profile hỗ trợ nó; nhưng nếu bạn cần biết thêm chi tiết về cách hoạt động bên trong của một loại âm thanh MPEG-4 cụ thể, hãy tham chiếu tới đặc tả.
| ID | Audio Object Type | Profile support |
|---|---|---|
0 |
NULL | |
1 |
AAC Main | Main |
2 |
AAC LC (Low Complexity) | Main, Scalable, HQ, LD v2, AAC, HE-AAC, HE-AAC v2 |
3 |
AAC SSR (Scalable Sampling Rate) | Main |
4 |
AAC LTP (Long Term Prediction) | Main, Scalable, HQ |
5 |
SBR (Spectral Band Replication) | HE-AAC, HE-AAC v2 |
6 |
AAC Scalable | Main, Scalable, HQ |
7 |
TwinVQ (Coding for ultra-low bit rates) | Main, Scalable |
8 |
CELP (Code-Excited Linear Prediction) | Main, Scalable, Speech, HQ, LD |
9 |
HVXC (Harmonic Vector Excitation Coding) | Main, Scalable, Speech, LD |
10 – 11 |
Reserved | |
12 |
TTSI (Text to Speech Interface) | Main, Scalable, Speech, Synthetic, LD |
13 |
Main Synthetic | Main, Synthetic |
14 |
Wavetable Synthesis | |
15 |
General MIDI | |
16 |
Algorithmic Synthesis and Audio Effects | |
17 |
ER AAC LC (Error Resilient AAC Low-Complexity) | HQ, Mobile Internetworking |
18 |
Reserved | |
19 |
ER AAC LTP (Error Resilient AAC Long Term Prediction) | HQ |
20 |
ER AAC Scalable (Error Resilient AAC Scalable) | Mobile Internetworking |
21 |
ER TwinVQ (Error Resilient TwinVQ) | Mobile Internetworking |
22 |
ER BSAC (Error Resilient Bit-Sliced Arithmetic Coding) | Mobile Internetworking |
23 |
ER AAC LD (Error Resilient AAC Low-Delay; used for two-way communication) | LD, Mobile Internetworking |
24 |
ER CELP (Error Resilient Code-Excited Linear Prediction) | HQ, LD |
25 |
ER HVXC (Error Resilient Harmonic Vector Excitation Coding) | LD |
26 |
ER HILN (Error Resilient Harmonic and Individual Line plus Noise) | |
27 |
ER Parametric (Error Resilient Parametric) | |
28 |
SSC (Sinusoidal Coding) | |
29 |
PS (Parametric Stereo) | HE-AAC v2 |
30 |
MPEG Surround | |
31 |
Escape | |
32 |
MPEG-1 Layer-1 | |
33 |
MPEG-1 Layer-2 (MP2) | |
34 |
MPEG-1 Layer-3 (MP3) | |
35 |
DST (Direct Stream Transfer) | |
36 |
ALS (Audio Lossless) | |
37 |
SLS (Scalable Lossless) | |
38 |
SLS Non-core (Scalable Lossless Non-core) | |
39 |
ER AAC ELD (Error Resilient AAC Enhanced Low Delay) | |
40 |
SMR Simple (Symbolic Music Representation Simple) | |
41 |
SMR Main (Symbolic Music Representation Main) | |
42 |
Reserved | |
43 |
SAOC (Spatial Audio Object Coding) Defined in ISO/IEC 14496-3:2009/Amd.2:2010(E). |
|
44 |
LD MPEG Surround (Low Delay MPEG Surround) Defined in ISO/IEC 14496-3:2009/Amd.2:2010(E). |
|
45 and up |
Reserved |
HEVC: MP4, Quicktime, Matroska
Codec High Efficiency Video Coding, còn được gọi là H.265 và MPEG-H Part 2, có thể được đưa vào các container MP4 (video/mp4), Quicktime (video/quicktime) và Matroska (video/matroska).
Việc sử dụng HEVC thường được mô tả bằng một MIME type hỗ trợ có gắn thêm tham số codecs; ví dụ cú pháp như sau:
video/mp4;codecs=hvc1.1.6.L186.B0,mp4a.40.2 video/mp4;codecs=hvc1.1.6.L186.B0,opus video/mp4;codecs=hev1.1.6.L186.B0,mp4a.40.2 video/mp4;codecs=hev1.1.6.L186.B0,opus
Cú pháp cho từng codec được hỗ trợ có dạng như sau:
hvc1[.A.B.C.D](HEVC video)-
Giá trị bắt đầu bằng mã định danh bốn ký tự của codec (
hvc1), theo sau là bốn hoặc nhiều giá trị hơn được phân tách bằng dấu chấm (.):A-
general_profile_space. Giá trị này được mã hóa thành một hoặc hai ký tự:- Ký tự đầu tiên là
A,BhoặcC, tương ứng vớigeneral_profile_space1,2hoặc3, hoặc không có ký tự nào để biểu diễngeneral_profile_space0. - Ký tự thứ hai là số thập phân biểu diễn
general_profile_idc.Note: Trong các ví dụ trên, giá trị
1nghĩa làgeneral_profile_space === 0(không có ký tự) vàgeneral_profile_idc === 1.
- Ký tự đầu tiên là
B-
Giá trị 32 bit biểu diễn một hoặc nhiều general profile compatibility flags (
general_profile_compatibility_flag), được mã hóa bằng hệ thập lục phân (có thể bỏ qua số 0 ở đầu) và chỉ định theo thứ tự bit đảo ngược từ quan trọng nhất đến ít quan trọng nhất. Các giá trị có thể từ31(quan trọng nhất) đến0(ít quan trọng nhất), và được quy định trong ISO/IEC 23008-2.Note: Trong các ví dụ trên, giá trị
6nghĩa làgeneral_profile_compatibility_flag === 6. C-
general_tier_flag, được mã hóa làL(general_tier_flag === 0) hoặcH(general_tier_flag === 1), theo sau làgeneral_level_idc, được mã hóa dưới dạng số thập phân.Note: Trong các ví dụ trên, giá trị
L186nghĩa làgeneral_tier_flag === 0, theo sau làgeneral_level_idc === 186. D-
Một hoặc nhiều constraint flags dài 6 byte. Lưu ý rằng mỗi cờ được mã hóa dưới dạng số thập lục phân và được phân cách bằng một dấu chấm bổ sung; các byte cuối có giá trị 0 có thể được lược bỏ.
Note: Trong các ví dụ trên, chỉ có một constraint flag xuất hiện, là
B0.
hev1[.A.B.C.D](Variable resolution HEVC)-
Tham số codec
hev1có cùng cú pháp với tham số codechvc1.
WebM
Dạng cơ bản của tham số codecs cho WebM là liệt kê một hoặc nhiều codec trong bốn codec WebM theo tên, ngăn cách bằng dấu phẩy. Bảng dưới đây cho thấy một số ví dụ:
| MIME type | Mô tả |
|---|---|
video/webm;codecs="vp8" |
Video WebM có chứa video VP8; không chỉ định âm thanh. |
video/webm;codecs="vp9" |
Video WebM có chứa video VP9. |
audio/webm;codecs="vorbis" |
Âm thanh Vorbis trong container WebM. |
audio/webm;codecs="opus" |
Âm thanh Opus trong container WebM. |
video/webm;codecs="vp8,vorbis" |
Container WebM chứa video VP8 và âm thanh Vorbis. |
video/webm;codecs="vp9,opus" |
Container WebM chứa video VP9 và âm thanh Opus. |
Các chuỗi vp8.0 và vp9.0 cũng hoạt động, nhưng không được khuyến nghị.
Sử dụng tham số codecs
Bạn có thể dùng tham số codecs trong một vài tình huống. Trước hết, bạn có thể dùng nó với phần tử <source> khi tạo phần tử <audio> hoặc <video>, nhằm thiết lập một nhóm tùy chọn để trình duyệt lựa chọn khi xác định định dạng media sẽ trình bày cho người dùng trong phần tử đó.
Bạn cũng có thể dùng tham số codecs khi chỉ định MIME media type cho phương thức MediaSource.isTypeSupported(); phương thức này trả về giá trị Boolean cho biết media có khả năng hoạt động trên thiết bị hiện tại hay không.
Xem thêm
- Các công nghệ media trên web
- Phần tử
<source>, phần tử con của<audio>và<video> - Hướng dẫn về các loại và định dạng media trên web
- Hướng dẫn về codec âm thanh dùng trên web
- Hướng dẫn về codec video dùng trên web
- Codecs used by WebRTC
- Getting the correct HTML codecs parameter for an AV1 video
- High Efficiency Video Coding on Wikipedia