Mã hóa video trong ứng dụng di động: định nghĩa, codec và tham số

Tác giả: IT Sectr Đã đăng: 2026-05-24 Thời gian đọc: 8 phút

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 — nén tín hiệu video bằng codec để giảm khối lượng dữ liệu.
  • Codec H.264 và H.265 — các tiêu chuẩn chính: AVC đảm bảo tương thích, HEVC cung cấp nén tốt hơn.
  • VP9 và AV1 — codec mở từ Google và Alliance for Open Media, miễn phí bản quyền.
  • Bitrate quyết định kích thước và chất lượng: 2–5 Mbps cho 1080p, 15–40 Mbps cho 4K.
  • Codec âm thanh AAC và Opus — tiêu chuẩn cho ứng dụng di động với độ trễ thấp và chất lượng cao.

Mã hóa video là gì?

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.

Nguyên tắc nén video

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.

Codec video: H.264, H.265, VP9, AV1

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.

CodecTiêu chuẩnNămNén so với H.264Cấp phép
H.264/AVCMPEG-4 Part 1020031x (cơ bản)Bản quyền (MPEG LA)
H.265/HEVCMPEG-H Part 22013Hiệu quả hơn 40–50%Bản quyền (hai nhóm)
VP9Google2013Hiệu quả hơn 30–40%Miễn phí
AV1AOM2018Hiệu quả hơn 50–60%Miễn phí bản quyền

H.264 — tiêu chuẩn phổ quát

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 — hiệu quả cho 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 — tiêu chuẩn mở của tương lai

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: AAC, MP3, Opus

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 — tiêu chuẩn của Apple và YouTube

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 — codec âm thanh hiện đại

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: bitrate, độ phân giải, FPS

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 và các loại

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ảiH.264 (khuyến nghị)H.265/HEVCAV1
360p400–800 kbps250–500 kbps200–400 kbps
720p1,5–4 Mbps1–2,5 Mbps0,8–2 Mbps
1080p3–8 Mbps2–5 Mbps1,5–4 Mbps
4K (2160p)15–40 Mbps10–25 Mbps8–20 Mbps

CRF — kiểm soát chất lượng

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.

Hồ sơ và cấp độ codec

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

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.

Mã hóa chuyển đổi trên thiết bị di động

kotlin
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)

Mã hóa cho phát sóng trực tiếp

Đố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.

Tối ưu hóa pipeline mã hóa

  • Mã hóa phần cứng qua MediaCodec (Android) hoặc VideoToolbox (iOS) là bắt buộc cho thời gian thực.
  • Mã hóa đa luồng trên máy chủ sử dụng libx264/libx265 ở chế độ ultrafast hoặc veryfast.
  • Preset mã hóa: placebo — tệ nhất cho VOD (nén tối đa), ultrafast — cho phát sóng trực tiếp.
  • VBR hai lần — chế độ ưa thích cho VOD, cung cấp kích thước và chất lượng có thể dự đoán.

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

Mã hóa video trong ứng dụng di động là gì?

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ị.

Codec nào tốt hơn: H.264 hay H.265?

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à gì và làm thế nào để chọn?

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 khác AV1 như thế nào?

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.

Làm thế nào để cấu hình mã hóa cho phát sóng trực tiếp?

Để 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

  • Mã hóa là công nghệ nền tảng mà nếu không có nó thì việc truyền video qua internet là không thể do kích thước khổng lồ của dữ liệu chưa nén.
  • H.264 vẫn là tiêu chuẩn tương thích và được khuyến nghị cho luồng phổ quát trong ứng dụng di động.
  • H.265AV1 cung cấp khả năng nén tốt hơn 40–60% nhưng cần hỗ trợ phần cứng để giải mã hiệu quả.
  • Bitrate và CRF là các tham số chính: cho 1080p H.264 dùng 3–8 Mbps, cho 4K H.265 dùng 10–25 Mbps.
  • AAC là codec âm thanh tiêu chuẩn, Opus được ưa chuộng cho phát sóng trực tiếp nhờ độ trễ tối thiểu.
  • ABR ladder cho phát trực tuyến bao gồm 4–6 biến thể từ 144p đến 1080p với các bitrate khác nhau.
  • Mã hóa phần cứng là bắt buộc cho thời gian thực trên thiết bị di động.

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.

Thảo luận dự án

Đọc thêm