H.264: Phép màu đằng sau mọi video bạn xem mỗi ngày

Công nghệ29 tháng 10, 2026·7 phút đọc

H.264 là chuẩn nén video phổ biến nhất hành tinh, xuất hiện từ YouTube, Blu-ray đến camera điện thoại. Bài viết giải thích một cách dễ hiểu những kỹ thuật then chốt giúp nó nén một video 1,2 GB xuống chỉ còn 175 KB mà mắt thường gần như không nhận ra khác biệt.

H.264: Phép màu đằng sau mọi video bạn xem mỗi ngày

Bạn xem video trên YouTube, phim trên đĩa Blu-ray, gọi video qua điện thoại hay xem lại bản ghi từ camera an ninh — tất cả đều có một điểm chung: chúng dùng H.264. Chuẩn nén video này có mặt ở khắp nơi đến mức hầu như chúng ta không còn để ý tới nó nữa.

Đằng sau sự phổ biến đó là hơn 30 năm nghiên cứu với một mục tiêu duy nhất: giảm băng thông cần thiết để truyền tải hình ảnh chuyển động đầy đủ. Bài viết này sẽ mổ xẻ những "chiêu trò" cốt lõi của H.264 ở mức khái niệm — nhiều kỹ thuật trong số đó áp dụng cho nén video nói chung, không riêng gì H.264.

Vì sao phải nén?

Một video chưa nén đơn giản là mảng ba chiều gồm dữ liệu điểm ảnh cho từng khung hình: hai chiều không gian và một chiều thời gian. Mỗi pixel cần 3 byte — mỗi byte cho một trong ba màu cơ bản đỏ, xanh lá, xanh dương.

Với video 1080p ở 60 Hz, ta có 1920 × 1080 × 60 × 3, tức khoảng 370 MB mỗi giây dữ liệu thô. Con số này gần như không thể xử lý nổi: một đĩa Blu-ray 50 GB chỉ chứa được chừng 2 phút video, và ngay cả SSD cũng gặp khó khăn khi phải ghi liên tục từ RAM xuống đĩa. Vì vậy, nén là bắt buộc.

Minh họa video kỹ thuật số và nhu cầu nén dữ liệuMinh họa video kỹ thuật số và nhu cầu nén dữ liệu

Nén mất dữ liệu: bỏ bớt để nhẹ hơn

Hãy tưởng tượng bạn chế một chiếc xe đua đường phố nặng 3.000 pound và cần chạy nhanh hơn. Việc đầu tiên là giảm cân: bỏ ghế sau, bỏ loa siêu trầm, bỏ điều hòa — chỉ giữ lại những gì thực sự cần thiết.

Nén mất dữ liệu (lossy compression) hoạt động theo nguyên lý tương tự: vứt bỏ những bit ít quan trọng và chỉ giữ lại phần thiết yếu. PNG thì ngược lại — nó là định dạng lossless, nghĩa là không mất gì cả, ảnh gốc có thể khôi phục chính xác từng bit.

Một ví dụ ấn tượng: chụp màn hình trang chủ Apple dưới dạng PNG tốn 1.015 KB, trong khi một video H.264 dài 5 giây, 60 fps của chính trang đó chỉ nặng 175 KB. Nghĩa là 300 khung hình video lại nhẹ hơn một phần năm so với một khung hình PNG — hiệu quả gấp khoảng 1.500 lần.

Entropy thông tin: nén mà không mất gì

Nếu từng học lý thuyết thông tin, bạn có thể nhớ khái niệm entropy thông tin — số bit tối thiểu cần để biểu diễn một lượng thông tin nào đó. Entropy không phải là kích thước tập dữ liệu, mà là lượng thông tin thực sự chứa bên trong nó.

Ví dụ: tung một đồng xu cho kết quả một lần cần 1 bit. Tung 10 lần đều ra mặt ngửa thì bạn không cần ghi "HHHHHHHHHH" — chỉ cần nói "10 lần tung, toàn mặt ngửa". Bạn vừa nén dữ liệu mà không mất thông tin nào, chỉ chuyển sang một cách biểu diễn ngắn hơn. Đây chính là nguyên lý của bộ mã hóa entropy — loại mã hóa lossless dùng được cho mọi kiểu dữ liệu.

Miền tần số và quantization

Giờ hãy tưởng tượng chuyển dữ liệu độ sáng của ảnh từ hệ tọa độ x-y sang hệ tọa độ tần số (freqX, freqY). Theo định lý Nyquist–Shannon, phép biến đổi này hoàn toàn không mất dữ liệu nếu số chiều tần số đủ lớn.

Biểu diễn ảnh trong miền tần sốBiểu diễn ảnh trong miền tần số

Trong miền tần số, các chi tiết mịn như lưới tản nhiệt của chiếc MacBook Pro nằm ở thành phần tần số cao, còn các chuyển màu mượt nằm ở tần số thấp gần tâm ảnh. H.264 đơn giản là "mặt nạ" bỏ đi các vùng tần số cao ở rìa — tức là loại bỏ bớt chi tiết tinh xảo — rồi chuyển ngược lại về ảnh thường.

Kết quả: ảnh trông gần như y hệt bản gốc nhưng chỉ chiếm một phần nhỏ dung lượng. Bằng cách điều chỉnh kích thước mặt nạ, bạn tinh chỉnh được chính xác mức độ chi tiết muốn giữ. Quá trình này gọi là quantization — và ở mức 2% dữ liệu gốc, hầu như không ai nhận ra khác biệt nếu không phóng to.

Minh họa quá trình quantization với mặt nạMinh họa quá trình quantization với mặt nạ

Chroma subsampling: lừa mắt người về màu sắc

Hệ mắt–não của con người rất kém trong việc phân giải chi tiết màu sắc, nhưng lại cực nhạy với thay đổi độ sáng. Tận dụng điểm yếu này, tín hiệu RGB được chuyển thành Y, Cb, Cr — trong đó Y là độ chói (luminance) còn Cb, Cr là thành phần màu (chrominance).

Mẹo ở đây: thành phần Y được mã hóa ở độ phân giải đầy đủ, còn Cb và Cr chỉ ở một phần tư độ phân giải. Nhờ vậy, tổng băng thông giảm một nửa mà mắt gần như không thấy khác biệt. Kỹ thuật này gọi là chroma subsampling, đã tồn tại hàng chục năm và được dùng gần như phổ biến trong mọi chuẩn video.

Bù chuyển động: nén theo thời gian

Phần thú vị nhất nằm ở nén theo chiều thời gian. Hãy tưởng tượng bạn xem một trận quần vợt với camera cố định. Sân, lưới, khán giả đều đứng yên — chỉ có quả bóng di chuyển. Vậy tại sao phải lưu lại toàn bộ khung hình? Chỉ cần một ảnh tĩnh của nền và thông tin chuyển động của quả bóng là đủ.

H.264 chia khung hình thành các macroblock (thường 16×16 pixel) và dùng ba loại khung:

  • I-frame (Intra frame): khung đầy đủ, chứa toàn bộ dữ liệu để dựng lại khung hình đó.
  • P-frame (Predicted): chỉ lưu vector chuyển động của từng macroblock so với khung trước.
  • B-frame (Bi-directionally predicted): dự đoán theo cả hai hướng — từ khung quá khứ lẫn khung tương lai.

Điều này giải thích một hiện tượng quen thuộc: khi bạn tua lại vài giây trên YouTube, video không phát ngay mà khựng lại một chút. Nguyên nhân là bộ giải mã phải tính lại từ I-frame gần nhất, cộng dồn các vector chuyển động đến đúng khung bạn chọn — một phép tính khá tốn tài nguyên. Lần tới gặp cảnh này, bạn có thể yên tâm rằng nó đang làm việc thật, chứ không phải cố tình trêu bạn.

Bước cuối: mã hóa entropy

Sau các bước nén mất dữ liệu, dữ liệu vẫn còn nhiều phần dư thừa — ví dụ hàng loạt vector chuyển động có cùng giá trị khi cả khung hình dịch chuyển đều. Một bộ mã hóa entropy tổng quát sẽ xử lý phần dư thừa này, và vì đây là mã hóa lossless nên toàn bộ dữ liệu đưa vào đều có thể khôi phục chính xác.

Kết quả: từ 1,2 GB xuống 175 KB

Video gốc trong ví dụ có độ phân giải lạ 1232×1154. Tính theo công thức: 1232 × 1154 × 60 × 3 × 5 giây ≈ 1,2 GB dữ liệu thô, sau khi nén chỉ còn 175 KB.

Nếu áp tỷ lệ này lên chiếc xe đua 3.000 pound ban đầu, nó sẽ chỉ còn nặng khoảng 0,4 pound — chừng 6,5 ounce. Đó thực sự là một phép màu của kỹ thuật.

Tất nhiên, bài viết này đơn giản hóa rất nhiều so với hàng thập kỷ nghiên cứu chuyên sâu trong lĩnh vực này. Nhưng hy vọng nó giúp bạn hiểu vì sao mỗi video bạn xem hôm nay lại có thể đến với bạn nhanh và nhẹ đến vậy.

Với người dùng Việt Nam, những kỹ thuật này càng có ý nghĩa thực tế: khi hạ tầng mạng còn chưa đồng đều giữa các vùng miền, chính khả năng nén của H.264 — và các chuẩn kế nhiệm như H.265/HEVC hay AV1 — giúp việc xem video độ nét cao trở nên khả thi mà không cần đường truyền quá lớn.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗