Ðề: Thắc mắc về định dạng file (mkv, tp, ts,...)
Continue
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)
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ừ 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
Để 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.
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 homepage:
http://www.xvid.org
XviD codec download:
http://www.koepi.org/XviD-1.1.2-01112006.exe (ver1.1.2 stable)
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 H264 là từ một đoạn anime dài 24 phút, cỡ 704x400 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 H264 (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 T_T 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ễ.
Thông tin về codec này mình chưa nắm nhiều lắm, nhưng chắc sẽ phải tìm hiểu thêm về nó để theo kịp thời đại ^^"
Lựa chọn
Để chọn codec nào hay nhất thực ra cũng có nhiều thứ tác động đến quyết định. Nhưng có thể nhận xét ngay rằng, việc chọn codec càng ít phổ biến thì việc edit/playback càng trở nên khó khăn.
Như bọn TQ thì toàn chơi RealMedia, chả hiểu tại sao