Tóm tắt

MP4 và H.264 thường đi cùng nhau nên nhiều người nhầm chúng là một, nhưng thực ra chúng mô tả hai lớp khác nhau của một tệp media. MP4 là vùng chứa có thể mang theo track hình ảnh, track âm thanh và siêu dữ liệu, còn H.264 là cách mã hóa tín hiệu hình ảnh bên trong track đó. Hiểu đúng sự phân lớp này giúp lý giải vì sao một tệp có đuôi quen thuộc vẫn có thể không phát được trên thiết bị thiếu khả năng giải mã phù hợp.

Điểm chính

  1. MP4 là container, tức vùng chứa có thể mang nhiều track hình ảnh, âm thanh và siêu dữ liệu trong cùng một tệp.
  2. H.264 là codec, tức cách mã hóa tín hiệu hình ảnh thành dữ liệu nén mà thiết bị phải giải mã mới hiển thị được.
  3. Tệp có container phù hợp vẫn cần codec và profile nằm trong khả năng giải mã của thiết bị thì mới phát được.
  4. Khi sự cố phát sinh, cần tách câu hỏi về vùng chứa khỏi câu hỏi về mã hóa để khoanh vùng nguyên nhân.
  5. Tra tài liệu codec tổng quát giúp hiểu bản chất mã hóa trước khi kết luận về tệp hay thiết bị.

MP4 là vùng chứa, không phải cách mã hóa

Vai trò của container là đóng gói và sắp xếp các thành phần media để trình phát đọc được theo trình tự, giống như bìa hồ sơ giữ nhiều tờ tài liệu bên trong. Một tệp MP4 có thể chứa track hình ảnh, track âm thanh, phụ đề và các trường siêu dữ liệu, nhưng bản thân vùng chứa không quy định hình ảnh được nén theo cách nào. Vì vậy, biết tệp là MP4 mới chỉ trả lời được câu hỏi về cách đóng gói, chưa trả lời được câu hỏi về cách mã hóa.

Sự phân lớp này lý giải vì sao hai tệp cùng đuôi MP4 có thể cư xử khác nhau trên cùng một thiết bị. Tệp thứ nhất phát mượt mà, tệp thứ hai báo lỗi, dù cả hai đều mở được phần mô tả vùng chứa. Điểm khác biệt nằm ở lớp bên trong mà phần mở rộng tên tệp không thể hiện.

H.264 là cách mã hóa hình ảnh bên trong

Codec H.264 quy định cách biến tín hiệu hình ảnh thành dòng dữ liệu nén và cách thiết bị dựng lại hình ảnh từ dòng dữ liệu đó. Tài liệu hướng dẫn về codec video trên web mô tả các codec như những cách mã hóa khác nhau của tín hiệu hình ảnh và âm thanh, mỗi cách gắn với yêu cầu giải mã riêng trên trình phát và thiết bị. [1]

Illustration: H.264 là cách mã hóa hình ảnh bên Decorative illustration for the section "H.264 là cách mã hóa hình ảnh bên"; visual only, carries no data.

Trong cùng một codec còn có các profile và mức cấu hình khác nhau, tương ứng với những tính năng mã hóa mà thiết bị phải hỗ trợ. Một thiết bị đời cũ có thể đọc được H.264 ở profile cơ bản nhưng gặp khó với profile cao hơn, dù cả hai đều mang tên H.264. Đây là lý do tên codec đứng một mình chưa đủ để bảo đảm khả năng phát.

Vì sao container đúng vẫn có thể phát lỗi

Khi mở tệp, trình phát đọc vùng chứa trước để biết có những track nào, sau đó mới kiểm tra xem mình có giải mã được nội dung từng track hay không. Nếu track hình ảnh dùng codec hoặc profile nằm ngoài khả năng của thiết bị, kết quả là màn hình đen hoặc thông báo lỗi dù vùng chứa MP4 hoàn toàn hợp lệ. Lỗi dạng này thuộc về lớp mã hóa, không phải lớp đóng gói.

Cách khoanh vùng là thử tách hai lớp khi chẩn đoán: kiểm tra xem trình phát có nhận diện được cấu trúc tệp hay không, rồi kiểm tra riêng khả năng giải mã codec của thiết bị. Gộp hai bước này thành một nhận định chung về tệp hỏng dễ dẫn tới kết luận sai và cách khắc phục sai.

Thói quen đọc thông tin tệp cho đúng lớp

Khi tra cứu thông tin một tệp, hãy đọc riêng ba nhóm: vùng chứa là gì, track hình ảnh dùng codec và profile nào, track âm thanh dùng codec nào. Mỗi nhóm trả lời một câu hỏi khác nhau và cần một cách kiểm tra khác nhau. Ghi cả ba nhóm vào cùng một bản ghi giúp lần đối chiếu sau không phải đoán.

Illustration: Thói quen đọc thông tin tệp cho Decorative illustration for the section "Thói quen đọc thông tin tệp cho"; visual only, carries no data.

Trong lúc tìm hiểu kiến thức media, người đọc vẫn có thể dành thời gian cho các nội dung thể thao hằng ngày thuộc mối quan tâm của mình. Nếu bạn muốn chuyển sang bóng đá, hãy xem KLIVE – lịch bóng đá hôm nay; đây là trang nội dung thể thao trực tiếp, còn mọi chi tiết kỹ thuật về container và codec vẫn cần tra tài liệu chuyên ngành.

Tóm lại mối quan hệ hai lớp

Hãy nhớ công thức ngắn gọn: MP4 trả lời câu hỏi các thành phần được đóng gói ra sao, H.264 trả lời câu hỏi tín hiệu hình ảnh được mã hóa thế nào. Một tệp phát được cần cả hai lớp đều nằm trong khả năng của thiết bị, thiếu một trong hai là trải nghiệm dừng lại. Giữ công thức này trong đầu giúp mọi chẩn đoán về sau đi đúng hướng ngay từ câu hỏi đầu tiên.

Nguồn tham khảo

  1. MDN — Web video codec guide

Câu hỏi thường gặp

Cùng là tệp MP4 vì sao có tệp phát được, có tệp không?

Vì MP4 chỉ là vùng chứa, còn khả năng phát phụ thuộc vào codec và profile bên trong từng track. Hai tệp cùng đuôi MP4 có thể dùng cách mã hóa khác nhau, nên thiết bị đọc được tệp này nhưng không đọc được tệp kia là chuyện bình thường.

H.264 có phải là định dạng tệp không?

Không. H.264 là cách mã hóa tín hiệu hình ảnh, thường nằm bên trong một vùng chứa như MP4. Muốn biết đầy đủ về một tệp, cần đọc cả vùng chứa lẫn codec của từng track chứ không chỉ nhìn tên codec.

Khi gặp lỗi phát, nên kiểm tra lớp nào trước?

Kiểm tra vùng chứa trước để biết trình phát có nhận diện được cấu trúc tệp không, rồi kiểm tra riêng codec và profile của từng track so với khả năng của thiết bị. Tách hai lớp này giúp khoanh vùng nguyên nhân thay vì kết luận chung chung là tệp hỏng.