Các thuật toán nén video hiện đại không giống như các thuật toán nén hình ảnh mà bạn đã thân thuộc trước đây. Việc tăng thêm kích cỡ và thời gian có nghĩa là các kỹ thuật toán học và logic không giống nhau được áp dụng cho file video để giảm kích thước nhưng vẫn duy trì chất lượng video.
Bài viết này đã sử dụng H.264 làm tiêu chí nén nguyên mẫu. Mặc dù nó không còn là định hình nén video mới nhất, nhưng vẫn là một thí dụ đủ chi tiết để lý giải các khái niệm chính về nén video.
Tìm hiểu về hoạt động của các thuật toán nén video
- Nén video là gì?
- I-frame, P-frame và B-frame
- Mã hóa Intraframe (I-frame)
- Interframe Prediction (P-frame và B-frame)
Nén video là gì?
Các thuật toán nén video kiếm tìm thời gian và không gian dư thừa. Bằng cách mã hóa dữ liệu dư thừa một số lần tối thiểu, kích cỡ file có thể được giảm. Ví dụ, bạn cần nén một cảnh quay nhấn mạnh sự thay đổi biểu cảm từ từ trên khuôn mặt của nhân vật, kéo dài trong một phút. Nén không có ý nghĩa là mã hóa hình ảnh trên mọi khung hình (frame), mà thay vào đó, bạn có thể mã hóa 1 khung hình, sau đó tham chiếu đến khung hình mã hóa đó cho đến khi video thay đổi. Mã hóa dự báo liên khung này nhận trách nhiệm về những phần tử lạ, không uy tín xuất hiện trong công đoạn nén video: những phần của hình ảnh cũ chuyển động không chuẩn xác nhờ có yếu tố nào đó trong qui trình mã hóa bị hỏng.
I-frame, P-frame và B-frame
I-frame là hình ảnh được mã hóa đầy đủ. Mỗi I-frame chứa mọi thứ dữ liệu luôn phải có để bộc lộ một hình ảnh. P-frame được dự báo dựa theo cách thay đổi hình ảnh từ I-frame cuối cùng. B-frame được dự báo theo hai chiều, sử dụng dữ liệu từ cả P-frame cuối cùng và I-frame tiếp theo. P-frame chỉ cần lưu trữ tin tức hình ảnh duy nhất cho chính nó. Trong thí dụ trên, P-frame cần theo dõi cách các chấm di chuyển trên khung hình, còn Pac-Man có thể giữ nguyên vị trí của mình.
B-frame nhìn vào P-frame, I-frame kế đến và chuyển động bình quân trên các frame đó. Thuật toán biết nơi hình ảnh bắt đầu (I-frame đầu tiên) và kết thúc (I-frame thứ hai) và nó sử dụng dữ liệu từng phần để mã hóa dự đoán, loại bỏ tất cả các pixel tĩnh chẳng càng phải có để tạo hình ảnh.
Mã hóa Intraframe (I-frame)
I-frame được nén độc lập, giống như cách hình ảnh tĩnh được lưu. Do I-frame không sử dụng dữ liệu dự đoán, hình ảnh nén chứa tất cả dữ liệu được dùng để hiển thị I-frame. Các I-frame vẫn được nén bởi một thuật toán nén hình ảnh như JPEG. Mã hóa này thường diễn ra trong không gian màu YCbCr, phân tách dữ liệu độ sáng khỏi dữ liệu màu, cho phép chuyển động và những thay đổi về màu sắc được mã hóa riêng biệt.
Đối với các non-predictive codec như DV và Motion JPEG, tất cả sẽ dừng lại tại đó. Do không có predictive frame, nên việc duy nhất có thể làm được là nén hình ảnh trong 1 frame duy nhất. Phương pháp kém hiệu quả hơn nhưng tạo nên một file hình ảnh thô (raw) chất lượng cao hơn.
Trong các codec sử dụng predictive frame như H.264, predictive frame được định kỳ hiển thị để làm mới luồng dữ liệu, bằng cách đặt frame tham chiếu mới. Các I-frame càng xa nhau, file video càng nhỏ. Tuy nhiên, nếu các I-frame cách nhau quá xa, độ chuẩn xác của các predictive frame trong video sẽ từ từ giảm xuống mức chẳng thể hiểu được. Một ứng dụng được tối ưu hóa băng thông sẽ chèn các I-frame ít nhất có thể mà không phá tan luồng video. Tần suất của các I-frame thường được xác định 1 cách gián tiếp bởi cài đặt “chất lượng” trong ứng dụng mã hóa. Phần mềm nén video chuyên nghiệp như ffmpeg cho phép kiểm soát rõ ràng vấn đề này.
Interframe Prediction (P-frame và B-frame)
Các bộ mã hóa video gắng gượng để “dự đoán” thay đổi từ một frame này sang frame tiếp theo. Dự đoán của cục mã hóa càng chính xác, thuật toán nén càng hiệu quả. Đây là những gì tạo ra P-frame và B-frame. Số lượng, tần suất và thứ tự chính xác của các predictive frame, cũng giống thuật toán cụ thể được sử dụng để mã hóa và tái tạo chúng, được xác định bởi thuật toán cụ thể bạn sử dụng.
Hãy xem xét cách thức hoạt động của H.264. Frame được chia làm các phần xem là macroblock, thường bao gồm những sample 16 x 16. Thuật toán không mã hóa các giá trị pixel thô cho mỗi block (khối). Thay vào đó, bộ mã hóa tìm kiếm một block tương tự trong 1 frame cũ, được xem là frame tham chiếu. Nếu tìm thấy frame tham chiếu hợp lệ, block sẽ có mã hóa bằng biểu thức toán học gọi là vectơ chuyển động, mô tả bản chất chính xác của thay đổi từ block tham chiếu sang block hiện tại. Khi video được phát, trình phát video sẽ diễn giải các vectơ chuyển động đó 1 cách chuẩn xác để “dịch lại” video. Nếu block không thay đổi, thì không cần đến vector.
Sau khi dữ liệu được bố trí vào các frame, nó sẽ có mã hóa thành biểu thức toán học với bộ mã hóa biến hóa (transform encoder). H.264 sử dụng một DCT (discrete-cosine transform) để thay đổi dữ liệu trực giác thành biểu thức toán học (cụ thể là tổng các hàm cosin dao động ở những tần số khác nhau). Thuật toán nén được chọn xác định bộ mã hóa biến đổi. Sau đó, dữ liệu được “làm tròn” bởi bộ định lượng. Cuối cùng, các bit được chạy thông qua thuật toán nén không mất dữ liệu để thu nhỏ kích cỡ file thêm một lần nữa. Việc này không làm thay đổi dữ liệu. Nó chỉ tổ chức dữ liệu ở dạng nhỏ gọn nhất có thể. Sau đó, video được nén, kích thước nhỏ hơn trước và sẵn sàng để xem.
nén video, nén video là gì, thuật toán nén video, thuật toán nén video hoạt động như thế nào, I-frame, P-frame, B-frame
Nội dung Các thuật toán nén video hoạt động như thế nào? được tổng hợp sưu tầm biên tập bởi: Tin Học Trường Tín. Mọi ý kiến vui lòng gửi Liên Hệ cho truongtin.top để điều chỉnh. truongtin.top tks.
Bài Viết Liên Quan
Bài Viết Khác
- Sửa Wifi Tại Nhà Quận 4
- Cài Win Quận 3 – Dịch Vụ Tận Nơi Tại Nhà Q3
- Vệ Sinh Máy Tính Quận 3
- Sửa Laptop Quận 3
- Dịch Vụ Cài Lại Windows 7,8,10 Tận Nhà Quận 4
- Dịch Vụ Cài Lại Windows 7,8,10 Tận Nhà Quận 3
- Tuyển Thợ Sửa Máy Tính – Thợ Sửa Máy In Tại Quận 4 Lương Trên 10tr
- Tuyển Thợ Sửa Máy Tính – Thợ Sửa Máy In Tại Quận 3
- Địa Chỉ Sửa Quạt Hướng Trục Quận 10
- Bàn Phím Laptop Dell Inspiron M101Z Giá Rẻ Nhất
- 3 cách bật wifi, tắt wifi trên laptop Windows 7, 10 đơn giản nhất
- Cách sửa lỗi “Windows Could Not Automatically Detect Network Proxy Settings”
- Top 10 Cửa Hàng Bán Máy Tính Cũ Gaming Ở Tại Quận Gò Vấp Tphcm