ThuanNguyen.NET – Kỷ nguyên của kết nối và kiến tạo

Bình chọn

Về codec

Codec là từ viết tắt của coder/decoder, nó chỉ là một mẩu chương trình nhỏ. Hay chúng ta có thể gọi nó là một công thức mà mọi chương trình media player cần đến nó. Chương trình sẽ đọc dữ liệu file media, dùng codec để giải mã chúng và đưa ra cho chúng ta nội dụng chính xác = hình ảnh/âm thanh của dữ liệu đó – đây là quá trình giải mã, một quá trình rất thông dụng trong cuộc sống số bình thường. Quá trình mã hoá cũng gần như tương tự có điều theo chiều gần ngược lại (vì có nhiều cách để encode)

chuẩn video phổ biến

Chính vì mỗi loại video/âm thanh có cách ghi theo chuẩn codec mà nó sử dụng nên việc đọc file video/âm thanh cũng cần codec đó để giải mã. Vậy là cũng ko có gì khó khăn khi bạn gặp thông báo lỗi “ko tìm thấy codec” hoặc “ko thể render” một file video nào đó.

Có 3 chuẩn codec MPEG (theo chuẩn MPEG thôi, còn rất nhiều codec khác):

  • MPEG-1: sử dụng trong VCD thông thường. Đây có lẽ là codec video cơ bản và cũ nhất của các loại video số. Có vẻ như nó sử dụng một chuỗi các hình ảnh nén bằng định dạng MPEG để tạo phim (Mình ko quan tâm nó lắm nên cũng chả buồn tìm hiểu sâu).
  • MPEG-2: sử dụng trong DVD video và SVCD.
  • MPEG-4: các loại codec tiên tiến hiện nay. Trong này có rất nhiều dòng codec nhỏ khác nhau, tuy chung gốc MPEG-4 nhưng lại có những quãng đường phát triển khác hẳn nhau.

Về các đuôi .AVI .OGM .MPG .WMV.. etc

Do có rất nhiều codec khác nhau tương ứng với rất nhiều nhà phát triển codec khác nhau nên cách qui ước cũng khác nhau. Có thể tạm chia làm 2 loại:

  • Loại đuôi tập tin sẽ chỉ ra loại codec file đó sẽ sử dụng, bao gồm: .WMV .RM .RMVB .MPG .MPEG .MOV.
  • Loại đuôi tập tin không chỉ đính xác ra loại codec file đó sẽ sử dụng, chỉ thể hiện đó là file media: .AVI .MKV .OGM .MP4.. (còn rất nhiều loại nữa nhưng không phổ biến)

Nhưng, cả hai loại trên có một điểm chung – chúng chỉ là các container để chứa nội dung mà thôi, còn việc nội dung đó như thế nào, cách ghi ra làm sao chỉ khi trình media player mở ra và đọc nó sẽ biết file đó sử dụng codec gì. Nói cách khác, các file media đều thuộc loại thứ 2 – đuôi tập tin chỉ nói lên chúng là file media mà thôi.

Lấy VD: file “fatcat.avi” là file container, trong đó bao gồm một đoạn video được nén với codec DivX và âm thanh nén với MP3. Cả video và âm thanh có độ dài như nhau. Khi mở file này, Media player sẽ dùng codec DivX để giải mã video và codec MP3 để giải mã âm thanh, phát chúng cùng một lúc để tạo thành bộ phim có cả hình lẫn tiếng.

Tìm hiểu thêm:  Wowza Reload Schedule via HTTP

Từ lý thuyết trên, luận ra rằng: nếu định làm đĩa hình VCD thì cần convert video ra dạng MPEG-1 và MPEG-2 nếu định làm DVD video.

MPEG-4

MPEG-4 là một chuẩn nén video được phát triển bởi một nhóm gọi là “Moving Picture Experts Group” (hay gọi là MPEG). MPEG-4 được biết đến như là một “chuẩn nén của hình ảnh & âm thanh bit-rate thấp”. Có rất nhiều chuẩn được phát triển bởi nhóm này và đã được chấp nhận bởi tố chức tiêu chuẩn quốc tế (ISO – International Standards Organization) hay còn gọi là chuẩn-ISO.

MPEG-4 là chuẩn-ISO/IEC #14496. Vì XviD đi theo chuẩn MPEG-2 part 2 nên nó còn được biết đến như là MPEG-4 chuẩn ISO #14496-2 (chuẩn mới nhất của MPEG-4 đó là MPEG-4 part 10/AVC (Advanced Video Coding) hay còn gọi là H.264)

Thực tế, MPEG-4 là một chuẩn nén video với rất nhiều các phần mở rộng mà đặc biệt được thiết kế để đạt tới chất lượng cao nhất của chuẩn nội dung video. Chuẩn nội dung ở đây là chuẩn trong các video trong thế giới thật, nó không được thiết kế để nén video dựng bởi trình 3D, phim hoạt hình trên TV thông thường hay là anime (đó là lý do tại sao các video thuộc thể loại trên nén không tốt lắm khi sử dụng MPEG-4)

Các chuẩn codec thông thường thuộc họ MPEG-4 là DivX, 3ivx, Quicktime MPEG4 và XviD. Mặc dù chúng là họ hàng với nhau, tuy nhiên một phim được nén bởi một trong các codec trên sẽ không thể được giải mã bằng codec anh em của nó. Vì giữa chúng vẫn có những điểm khác nhau cơ bản không thể thay thế. Lấy ví dụ bằng việc xử lý tập tin video có nhiều hơn 1 tỷ frame – đó là việc mà DivX không thể thực hiện được, trong khi XviD lại có thể. Ví dụ khác sẽ là XviD có đến 3 điểm warppoint GMC (Global Motion Compensation) trong khi DivX chỉ có 1 điểm – điều này dẫn đến sự khác biệt trong cấu trúc phần cứng để có thể giải mã được đoạn video được nén bằng codec DivX hay XviD (phần cứng để giải mã DivX sẽ nhẹ nhàng hơn).

Có một số đầu đọc DVD phù hợp chuẩn MPEG-4 có thể đọc được video DivX. Để mở rộng khả năng đọc các chuẩn MPEG-4 khác sẽ không khó khăn mấy. Việc này chỉ cần được thực hiện bằng một số thay đổi nhỏ trong EEPROM liên kết với bộ xử lý video của đầu đọc – hay nói cách khác là flash lại bộ EEPROM của đầu đọc.

Kỹ hơn về MPEG-4, các lý thuyết cơ bản

Tìm hiểu thêm:  Thế hệ co-processor Xeon Phi mới dùng cho xử lý trí tuệ nhân tạo

Để có thể nén được 2h video chất lượng cao mà chỉ nhỏ để đút vừa một đĩa CD đòi hỏi cả một thuật toán phức tạp. MPEG-4 làm việc này bằng cách bỏ bớt những thông tin mà người xem không cảm nhận được bằng cách biến đổi dữ liệu về các điểm ảnh trên video thành công thức toán học gần giống với đoạn dữ liệu đó. Việc biến đổi này gần giống nhau đến mức con người bình thường sẽ rất khó có thể nhận ra sự khác biệt giữa video nguồn và video kết quả (tất nhiên, đó chỉ là lý thuyết).

Đầu tiên, mảng màu của khung hình ban đầu sẽ được biến đổi thành một mảng màu đặc biệt được gọi là YV12. Mắt người thông thường kém nhạy cảm với các màu sắc hơn là với các mức độ sáng tối (liếc nhìn thật nhanh qua bầu trời, bạn sẽ cảm nhận rõ nhất trời sáng hay trời tối hơn là bầu trời có màu gì). Chính vì vậy, MPEG-4 đánh giá độ sáng tối của hình ảnh quan trọng hơn là màu sắc. Điều này đem đến một kết quả là độ sáng tối được ghi lại trong mỗi pixel còn thông tin màu sắc sẽ chỉ được ghi lại sau mỗi 4 pixel.

Trong các codec phổ biến hiện nay, có thể kể đến DivX, XviD và H.264 Ngoài ra còn một số đối thủ cũng khá cạnh tranh khác (có điều cung cách phát triển ích kỷ) là Real Media và Window Media Audio/Video.

DivX

Một codec nổi tiếng và rất rất phổ biến trong nhóm MPEG-4, có thể coi đã lên dạng lão làng khi có khá nhiều đầu đọc DVD đọc luôn cả DivX. So sánh giữa chuẩn MPEG-2 và DivX thì chất lượng có thể coi là như nhau có điều DivX trội hơn ở bit-rate thấp, điều này đồng nghĩa với việc chúng ta có thể có một đoạn phim tương tự DVD video nhưng nhẹ hơn chỉ cỡ bằng 1/2 của DVD video.

Tuy phổ biến như vậy nhưng so với các codec chị em của nó gần đây thì DivX bắt đầu tỏ ra yếu thế, đặc biệt là trước XviD và H264 và một số codec đang phát triển khác.

DivX homepage: http://www.divx.com

DivX codec download: http://www.divxmovies.com/codec/

XviD

Xvid là một codec theo chuẩn MPEG-4. Nó có thể nén một file video thành những dữ liệu theo chuẩn của MPEG-4 và có thể được lưu trữ dưới dạng .AVI .OGM .MP4 hay khác. Bản thân codec này không thể tự nén video mà nó phải nhờ một công cụ khác giúp nó, VD đó có thể là trình VirtualDub.

Thông thường một codec sẽ đi kèm cả Decoder và Encoder, nhưng cũng có trường hợp một bộ cài chỉ có Decoder mà thôi – với bộ cài đó bạn chỉ có để xem phim dùng codec đó mà không thể nén phim bằng codec đó. Bộ filter chỉ có decoder có thể kể đến là Nic’s decoder filter.

Tìm hiểu thêm:  Enabling Constant Bitrate Encoding (CBR) in Wowza Transcoder

Xvid codec là một dự án mã nguồn mở GNU-GPL. Nghĩa là mã nguồn của nó có thể được download bởi bất kỳ ai và chỉnh sửa theo bất kỳ ý thích nào của họ. XviD là chuỗi kí tự viết ngược của DivX (phát triển bởi một công ty thương mại) – có lẽ nó giống như một sự thách thức với codec DivX. Sự thật cho thấy XviD vượt trội về chất lượng nén hơn hẳn DivX.

XviD codec download: http://www.koepi.org/XviD-1.1.2-01112006.exe

RM/RMVB

Codec rất quen thuộc và phổ biến nhất TQ, nếu bạn bắt gặp 1 phim bộ tiếng Hoa bất kỳ được share trên mạng, thì chắc chắn rằng 99% sẽ là dạng rmvb. Đây là codec riêng từ RealOne. Loại này cho ra ảnh phim rõ nét, sáng đẹp và dung lượng của file khá nhỏ, đặc biệt có chút nhỉnh hơn AVI nếu như là rip từ DVD ..

Phải nói coi 1 tập phim dạng rmvb – dvd rip thật chẳng thua gì DVD chính hiệu, rất tuyệt vời !

H.264

H264 là một codec thật sự ấn tượng.

Lần đầu tiên mình chứng kiến sức mạnh của H.264 là từ một đoạn anime dài 24 phút, cỡ 704×400 pixel với âm thanh MP3 128kbps mà chỉ có 76.2MB (video bit-rate là 301kbps) – chất lượng của nó gần bằng đoạn anime tương tự như thế nén với DivX nhưng nặng vào cỡ 233MB.

Lần thứ hai là chính tay mình nén một đoạn video 3 phút từ MPEG-1 (gốc) nặng 116MB ra H.264 (nặng 32MB) – thật sự mà nói thì xem bản H.264 còn đẹp hơn cả bản gốc. Nguyên nhân của sự kỳ cục ấy là do H.264 sử dụng một thuật toán nào đó làm mờ đi các chi tiết mà nó thật sự cần thiết trong các khung hình. Nó giống như là được de-cube, xoá nhoà các vết ô vuông của codec MPEG-1 tạo ra vậy. Thật sự ấn tượng.

Hiện có một project giúp H264 đến người sử dụng miễn phí đó là compressor/decompressor x264. Có thể xem thêm về nó

tại: http://www.videolan.org/developers/x264.html

VP60, VP72

Dòng codec mới nổi lên với kết quả được đánh giá là nổi trội nhất hiện nay có điều nó đang phát triển, chưa hoàn chỉnh. Nhưng rất có thể chỉ một thời gian nữa thì VP72 sẽ là đối thủ nặng ký nhất đối với H264 và XviD. Riêng DivX và gì gì khác cho về hưu luôn bây giờ kẻo trễ.

Hiện tại đã có thêm H265 (hay còn gọi là HEVC) và VP8, VP9 thật sự rất tuyệt vời. Mình sẽ giới thiệu và hướng dẫn cách encode trong các bài sau.

ThuanNguyen.Net