Mã hóa video là quá trình nén tín hiệu video kỹ thuật số thành định dạng phù hợp để lưu trữ và truyền qua mạng với tổn thất chất lượng tối thiểu. Nếu không mã hóa, một phút video 4K chưa nén chiếm khoảng 30 GB, khiến việc truyền qua internet không thể thực hiện được. Theo báo cáo Sandvine Global Internet Phenomena (2025), video chiếm 65% tổng lưu lượng internet và mã hóa là công nghệ then chốt giúp điều này khả thi.
Những điểm chính
Mã hóa video là quá trình chuyển đổi tín hiệu video chưa nén thành định dạng kỹ thuật số sử dụng các thuật toán nén. Các thuật toán này, được triển khai trong codec video, loại bỏ thông tin dư thừa cả trong không gian (trong một khung hình) và thời gian (giữa các khung hình liên tiếp).
Video chưa nén là một chuỗi các khung hình, mỗi khung được lưu dưới dạng mảng pixel ở định dạng RGB hoặc YUV. Nếu không nén, một giây video 1080p ở 30 FPS cần khoảng 1,5 GB bộ nhớ. Codec H.264 nén luồng này xuống 3–5 Mbps, nhỏ hơn 2500 lần so với dung lượng gốc.
Codec video sử dụng hai loại nén: nén trong khung hình (intra-frame) và nén giữa các khung hình (inter-frame). Nén trong khung hình được áp dụng cho mỗi khung hình độc lập, sử dụng các thuật toán tương tự JPEG: biến đổi cosin rời rạc (DCT), lượng tử hóa và mã hóa entropy.
Nén giữa các khung hình phân tích sự khác biệt giữa các khung hình liên tiếp và chỉ mã hóa những thay đổi. Nếu nền tĩnh, codec chỉ truyền một khung hình đầy đủ một lần (I-frame), sau đó chỉ truyền sự khác biệt (P- và B-frames), giúp giảm đáng kể khối lượng dữ liệu cho các cảnh có ít chuyển động.
Lựa chọn codec video quyết định tỷ lệ chất lượng/kích thước, khả năng tương thích thiết bị và phí cấp phép. Bốn codec chính thống trị thị trường ứng dụng di động: H.264 (AVC), H.265 (HEVC), VP9 và AV1.
| Codec | Tiêu chuẩn | Năm | Nén so với H.264 | Cấp phép |
|---|---|---|---|---|
| H.264/AVC | MPEG-4 Part 10 | 2003 | 1x (cơ bản) | Bản quyền (MPEG LA) |
| H.265/HEVC | MPEG-H Part 2 | 2013 | Hiệu quả hơn 40–50% | Bản quyền (hai nhóm) |
| VP9 | 2013 | Hiệu quả hơn 30–40% | Miễn phí | |
| AV1 | AOM | 2018 | Hiệu quả hơn 50–60% | Miễn phí bản quyền |
H.264 (AVC — Advanced Video Coding) vẫn là codec video tương thích nhất: được hỗ trợ bởi tất cả thiết bị di động, trình duyệt và TV thông minh từ năm 2005. Giải mã H.264 tăng tốc bằng phần cứng có sẵn ngay cả trên thiết bị giá rẻ, khiến nó trở nên lý tưởng cho luồng phổ quát.
Nhược điểm chính của H.264 là hiệu suất nén tương đối thấp so với các codec hiện đại. Ở cùng bitrate, H.265 và AV1 cung cấp chất lượng cao hơn đáng kể, điều này đặc biệt quan trọng đối với nội dung HDR và 4K.
H.265 (HEVC — High Efficiency Video Coding) cung cấp khả năng nén tốt hơn 40–50% so với H.264 ở cùng chất lượng hình ảnh. Điều này đạt được nhờ phân chia khung hình linh hoạt hơn thành các khối (CTU lên đến 64×64 pixel thay vì 16×16) và các thuật toán dự đoán chuyển động cải tiến.
HEVC được hỗ trợ trên tất cả thiết bị Apple (từ iPhone 6), trên Android (từ phiên bản 5.0 với giải mã phần cứng) và trên hầu hết TV thông minh. Phí cấp phép HEVC cao hơn H.264 và được quản lý bởi hai nhóm bằng sáng chế, gây phức tạp cho việc sử dụng hợp pháp.
AV1 là codec video được phát triển bởi Alliance for Open Media (AOM), một liên minh dẫn đầu bởi Google, Netflix, Amazon, Intel và Mozilla. AV1 cung cấp khả năng nén tốt hơn 50–60% so với H.264 và hoàn toàn miễn phí bản quyền, khiến nó hấp dẫn đối với các dịch vụ phát trực tuyến.
Nhược điểm chính của AV1 là độ phức tạp tính toán cao khi mã hóa. Mã hóa AV1 có thể chậm hơn 5–10 lần so với H.264 trên cùng phần cứng, mặc dù giải mã phần cứng đã xuất hiện trên các thiết bị 2024–2025 (Snapdragon 8 Gen 3, Apple A17 Pro).
Codec âm thanh trong ứng dụng di động không kém phần quan trọng so với codec video. Phát trực tuyến video yêu cầu âm thanh có độ trễ tối thiểu, chất lượng cao và tương thích với các container MP4 và WebM. Ba codec âm thanh chính bao phủ 99% ứng dụng phát trực tuyến di động.
AAC (Advanced Audio Coding) là sự kế thừa của MP3, được MPEG phát triển vào năm 1997 và trở thành codec âm thanh tiêu chuẩn cho iTunes, YouTube và Android. AAC cung cấp chất lượng tương đương MP3 ở bitrate thấp hơn 30% và hỗ trợ âm thanh đa kênh lên đến 7.1.
Đối với ứng dụng di động, AAC-LC ở 128–192 kbps cho âm thanh nổi và AAC-HE cho bitrate thấp 32–64 kbps được khuyến nghị. Giải mã AAC bằng phần cứng có sẵn trên tất cả thiết bị hiện đại, giảm thiểu mức tiêu thụ điện năng.
Opus là codec âm thanh mở từ IETF (RFC 6716), cung cấp chất lượng tốt nhất trong tất cả các codec âm thanh ở bitrate từ 6 đến 510 kbps. Opus kết hợp SILK (thuật toán cho giọng nói) và CELT (cho âm nhạc) và tự động chuyển đổi chế độ tùy theo nội dung.
Opus được sử dụng trong WebRTC cho cuộc gọi video, trong ứng dụng Spotify và Discord, và được hỗ trợ trong HLS từ iOS 11 và Android 5.0. Độ trễ thấp của Opus (5–26 ms so với 40–100 ms của AAC) khiến nó trở thành lựa chọn ưu tiên cho phát sóng trực tiếp và hội nghị truyền hình.
Tham số mã hóa quyết định kích thước tệp cuối cùng, chất lượng video và khả năng tương thích thiết bị. Nhà phát triển ứng dụng di động phải chọn cài đặt tối ưu cho từng loại nội dung: phim, phát sóng thể thao, nội dung do người dùng tạo.
Bitrate là số bit được sử dụng để mã hóa một giây video. Có CBR (bitrate không đổi) cho phát sóng trực tiếp, VBR (bitrate thay đổi) với chất lượng mục tiêu cho lưu trữ và ABR (bitrate trung bình) cho phát trực tuyến.
| Độ phân giải | H.264 (khuyến nghị) | H.265/HEVC | AV1 |
|---|---|---|---|
| 360p | 400–800 kbps | 250–500 kbps | 200–400 kbps |
| 720p | 1,5–4 Mbps | 1–2,5 Mbps | 0,8–2 Mbps |
| 1080p | 3–8 Mbps | 2–5 Mbps | 1,5–4 Mbps |
| 4K (2160p) | 15–40 Mbps | 10–25 Mbps | 8–20 Mbps |
CRF (Constant Rate Factor) là tham số mã hóa trong x264 và x265 đặt chất lượng mục tiêu thay vì bitrate cố định. Thang CRF từ 0 (không mất dữ liệu) đến 51 (chất lượng kém nhất), trong đó 18–28 là phạm vi làm việc. Đối với ứng dụng di động, CRF 23 cho x264 và CRF 25 cho x265 được khuyến nghị.
CRF 18–20 cung cấp chất lượng cao cho nội dung thuyết trình và xem ngoại tuyến. CRF 24–28 phù hợp cho phát trực tuyến và nội dung do người dùng tạo, nơi kích thước tệp quan trọng hơn chất lượng tuyệt đối.
Tiêu chuẩn H.264 định nghĩa các hồ sơ (Baseline, Main, High) và cấp độ (Level 1–5.2) giới hạn các tham số video tối đa. Baseline Profile tương thích với mọi thiết bị nhưng không hỗ trợ B-frames. High Profile cung cấp chất lượng tối đa và được sử dụng cho nội dung 1080p.
Để phát trực tuyến 4K, cần Level 5.1 trở lên, được hỗ trợ bởi hầu hết thiết bị di động từ năm 2018. Cấp độ codec xác định độ phân giải tối đa, bitrate và kích thước bộ đệm, đảm bảo giải mã chính xác trên tất cả thiết bị được chứng nhận.
Mã hóa cho phát trực tuyến khác với mã hóa lưu trữ ở chỗ cần tạo nhiều biến thể chất lượng (ABR ladder) và tối ưu hóa cho truyền mạng. Nhà cung cấp nội dung sử dụng mã hóa chuyển đổi thời gian thực hoặc mã hóa trước cho VOD.
ABR ladder điển hình cho ứng dụng di động bao gồm 4–6 biến thể: từ 144p (200 kbps) cho mạng yếu đến 1080p (8 Mbps) cho Wi-Fi. Độ phân giải khuyến nghị: 144p, 240p, 360p, 480p, 720p, 1080p. Đối với nội dung 4K, thêm 1440p và 2160p.
val mediaCodec = MediaCodec.createEncoderByType(
MediaFormat.MIMETYPE_VIDEO_AVC
)
val format = MediaFormat.createVideoFormat(
MediaFormat.MIMETYPE_VIDEO_AVC,
1280, 720
).apply {
setInteger(MediaFormat.KEY_BIT_RATE, 3_000_000)
setInteger(MediaFormat.KEY_FRAME_RATE, 30)
setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 2)
setInteger(MediaFormat.KEY_PROFILE,
MediaCodecInfo.CodecProfileLevel.AVCProfileHigh)
setInteger(MediaFormat.KEY_LEVEL,
MediaCodecInfo.CodecProfileLevel.AVCLevel31)
}
mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)
Đối với phát sóng trực tiếp, độ trễ thấp đặc biệt quan trọng. Cài đặt mã hóa phải giảm thiểu độ trễ đầu vào/đầu ra của codec: kích thước GOP 1–2 giây (cứ 30–60 khung hình) được khuyến nghị, B-frames nên tắt hoặc giảm thiểu và sử dụng Baseline Profile cho H.264.
Các giao thức hiện đại có độ trễ thấp — LL-HLS và CMAF-Low Latency — yêu cầu mã hóa phân đoạn với các segment 1–2 giây và hỗ trợ tải xuống một phần (Partial Segments). Codec phải hỗ trợ moof-box trong mỗi segment cho MP4 phân đoạn.
Câu hỏi thường gặp
Mã hóa video là quá trình nén tín hiệu video kỹ thuật số bằng codec để giảm khối lượng dữ liệu. Trong ứng dụng di động, mã hóa cho phép truyền và lưu trữ video, giảm kích thước hàng trăm lần mà không mất chất lượng đáng kể trên màn hình thiết bị.
H.264 cung cấp khả năng tương thích tối đa với thiết bị cũ, trong khi H.265 hiệu quả hơn 40–50% ở cùng chất lượng. Đối với nội dung 1080p trở xuống, H.264 là đủ; đối với 4K, nên dùng H.265 hoặc AV1 nếu thiết bị hỗ trợ.
Bitrate là lượng dữ liệu trên mỗi giây video. Đối với 1080p, bitrate tối ưu là 3–8 Mbps cho H.264 và 2–5 Mbps cho H.265. Lựa chọn phụ thuộc vào nội dung: cảnh động (thể thao) cần bitrate cao hơn, cảnh tĩnh (phỏng vấn) cần bitrate thấp hơn.
VP9 là tiền thân của AV1 từ Google, cung cấp khả năng nén ngang H.265. AV1 nén hiệu quả hơn 20–30% so với VP9 nhưng cần 5–10 lần tài nguyên mã hóa hơn. VP9 tốt hơn cho YouTube, AV1 cho Netflix và các dịch vụ phát trực tuyến hiện đại.
Để phát sóng trực tiếp, sử dụng H.264 Baseline Profile với GOP 1–2 giây, không B-frames, bitrate 2–4 Mbps cho 1080p. Bật MP4 phân đoạn (CMAF) cho LL-HLS và sử dụng mã hóa phần cứng qua MediaCodec hoặc VideoToolbox.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm