Transcoding so với Encoding
Hai thuật ngữ thường dùng thay thế nhau. Theo nghĩa chặt:
- Encoding là hành động nén dữ liệu video thô thành định dạng codec (ví dụ H.264).
- Transcoding là hành động giải mã một video đã được encode và mã hóa lại sang codec, container, bitrate hoặc độ phân giải khác.
Phần lớn “encoding” trên các nền tảng video cloud kỹ thuật ra là transcoding — file MP4 bạn upload (đã encode bởi camera hoặc NLE) được giải mã rồi encode lại thành nhiều biến thể HLS.
Vì sao nền tảng phải transcode upload
Source file rất đa dạng: 4K H.264, 1080p HEVC, 8K ProRes, AV1, VP9, codec cũ kỳ lạ từ camera đời cũ. Nền tảng cần:
- Nhiều biến thể độ phân giải cho phát bitrate thích ứng
- Một codec dự đoán được để player tương thích (thường là H.264)
- Đầu ra phân đoạn HLS thay vì MP4 đơn file
- Tùy chọn áp dụng mã hóa trong bước encode
Để tạo ra tất cả những thứ đó, nền tảng giải mã source (dùng FFmpeg, GStreamer hoặc bộ giải mã phần cứng) và mã hóa lại — tức là transcode.
Transcoding phần cứng so với phần mềm
- Transcoding phần mềm (FFmpeg + libx264) — linh hoạt, chạy mọi nền tảng, chậm hơn phần cứng. Khoảng 2–4× thời gian thực cho preset libx264 medium ở 1080p trên CPU x86 đời gần đây; chậm hơn ở preset chậm hơn, nhanh hơn ở preset nhanh hơn.
- Transcoding phần cứng (NVIDIA NVENC, Intel QuickSync, AMD VCN) — nhanh, tập tính năng cố định, cần GPU. AVCaption dùng NVENC ~10-20× thời gian thực.
Phần cứng nhanh hơn rất nhiều nhưng nén kém hiệu quả hơn chút ở cùng chất lượng. Với nền tảng video hosting cần ship nhiều biến thể nhanh, phần cứng là đánh đổi đúng.
Khi nào “chỉ encode”
Khi bạn có video thô chưa nén (ví dụ từ frame-grabber hoặc render pipeline), thuật ngữ là encoding. Pipeline của AVCaption hầu như luôn xử lý source đã nén, nên về nghĩa chặt là transcoding.