delacroix01
Eroge Addict
Chú ý : Bạn có thể tùy ý sử dụng bài viết này ở các forum khác, miễn là ghi rõ nguồn gốc.
Theo tình hình hiện tại, do có quá nhiều thắc mắc ko cần thiết từ nhiều người mới tập tành sub nên tớ quyết định làm cái faq này để cung cấp những khái niệm cơ bản về video encoding, cũng như cách sử dụng 1 công cụ encode video là VirtualDubMod.
I. Sơ lược :
VirtualDubMod là một phần mềm miễn phí dùng để xử lý video, được xây dựng dựa trên VirtualDub, với 1 số tính năng khác mà VirtualDub ko có. Phần mềm này hiện đã ngừng phát triển từ năm 2005. Tuy nhiên nó vẫn có một số tính năng khá thuận tiện và do khá dễ sử dụng nên với những người mới học, nắm bắt được cách sử dụng phần mềm này sẽ tiện lợi hơn khi chuyển sang các công cụ khác như meGUI.
Có thể download tại trang chủ VirtualDubMod trên sourceforge. Nhớ là down cái All inclusive pack, nếu ko chạy ko được ráng chịu.
II. Requirements :
Về cơ bản thì phần mềm này ko đòi hỏi nhiều. Cấu hình máy thì ko nhất thiết phải mạnh, tuy nhiên CPU và RAM càng khủng càng tốt, nhất là khi cần encode h264 hay sử dụng ASS karaoke effect có độ phức tạp cao. Yêu cầu chủ yếu là các phần mềm đi kèm.
a/ AVISynth : Bắt buộc đối với mọi encoder. Hiện tại ko có lý do gì để sử dụng hệ thống filter cổ lỗ sĩ của VirtualDub nữa, ngoài ra hệ thống script của AVISynth ưu việt và dễ điều chỉnh hơn hẳn phương pháp thủ công nên việc sử dụng AVISynth là việc đầu tiên 1 encoder cần biết.
- Link download phiên bản mới nhất có thể tìm thấy trên trang chủ doom9.
- Các plugin có thể tìm thấy ở 1 số site. Có thể tìm thấy các link này trên forum doom9. Tớ, 50119 và Holy_Master đã post link 1 số plugin điển hình trong thread AVISynth của box Fansub trên SA. Muốn sử dụng plugin nào thì chỉ cần copy vào folder Plugin của AVISynth là xong. Nếu muốn thành real encoder thì chịu khó đọc toàn bộ đám faq đi kèm bằng tiếng Anh, vì công nghệ encode đổi mới liên tục, ko có thời gian đâu ra mà dịch ra tiếng Việt hết. Ngoài ra những gì ko quá phức tạp thì đừng hỏi tớ hay 50119 vì bọn tớ đều rất bận.
b/ .NET fix : 1 số plugin đặc biệt (vd Toon) cần các bản update .NET Framework. Chi tiết có thể tìm thấy trên box AVISynth của forum doom9 nếu chịu khó đọc
c/ Vsfilter : Thời gian gần đây, jfs đã hack module này và thêm vào nhiều tính năng mới. Nếu muốn sử dụng thì cần copy đè lên các file vsfilter.dll ở tất cả các folder sau :
- AVISynth\Plugin
- Folder của Codec Pack. Ở đây tớ recommend K-Lite Mega Full vì nó có đầy đủ các tool cần thiết. Real encoder thì cần tự điều chỉnh bộ codec ở mức tối ưu. CCCP chỉ dành cho người coi video ở trình độ phổ thông, ko có đủ tool cần thiết để encode.
- Folder của Aegisub. Cần cài đồng bộ để ko xảy ra lỗi ngoài ý muốn, vd lệch frame.
- Folder của VirtualDub hay VirtualDubMod, nếu sử dụng 2 soft này.
Chú ý : Các bản fix có thể bị lỗi. Vì vậy trước khi update cần backup file vsfilter.dll cũ ra chỗ khác để có gì còn copy lại.
III. Pre-processing :
Trước khi sử dụng VirtualDub hay VirtualDubMod thì cần biết sơ về AVISynth. Về cơ bản, cái này tương tự 1 ngôn ngữ lập trình. Tuy nhiên nó ko dùng để viết chương trình, mà để xử lý video/audio. Script được viết trong các file text với đuôi là .avs. Nếu so với các ngôn ngữ lập trình thì AVISynth ko khó lắm, tuy nhiên việc config có thể tốn rất nhiều thời gian tùy thuộc source và kinh nghiệm của encoder. Còn việc viết function thì chỉ dành cho encoder ở trình độ rất cao, vd Didée bên doom9 (cái này thì ko cần quan tâm mấy). Trong script avs, video sẽ được load vào trình play video hoặc encoding tool thông qua AVISynth. Về cách sử dụng các hàm cụ thể thì có trong faq đi kèm rồi nên tớ ko nói thêm. Tuy nhiên ít nhất đối với beginner thì cũng cần sử dụng được 1 số hàm đơn giản sau :
- Hàm load video :
+ AVISource(“filename.avi”)
Trong ngoặc kép là tên video, với phần mở rộng là avi. Đây là dạng dễ xử lý nhất. Tuy nhiên có do 2 loại file avi nên cách xử lý cũng tương đối khác. Loại thứ nhất là CFR (Constant Frame Rate), hay gặp ở raw của TV-Japan. Loại này do framerate cố định nên rất dễ xử lý, chỉ cần 1 lệnh AVISource(“filename.avi”) là xong. Loại thứ 2 phức tạp hơn là 120 fps AVI. Loại này thực chất là VFR với drop frame. Nếu muốn encode VFR thì tham khảo bên thread AVISynth, còn đơn giản hơn, muốn encode XviD AVI thì thêm vào lệnh sau : SelectEvery(5). Cái này sẽ ra 24 fps, dùng cho đa số anime. Nếu muốn ra 30 fps thì thay 5 bằng 4. Trường hợp này thì hiếm hơn. 1 vd điển hình là Claymore, với hầu hết scene là 30 fps trừ OP/ED.
+ DirectShowSource(“filename.ext”, fps=??, convertfps=??)
Có thể sử dụng với hầu hết video trừ Interlaced MPEG-1 hoặc MPEG-2. Nhiều encoder ko thích dùng hàm này vì nó seek ko chính xác, tuy nhiên tớ lại dùng nó khá thường xuyên vì nó khá có lợi khi cần xử lý mấy cái raw wmv shit (chỉ cần convertfps là xong, đỡ phiền phức). Ngoài tham số filename, hàm này có thêm 2 tham số là fps (23.976 hoặc 29.97 tùy trường hợp) và convertfps (true hoặc false). Với newbie thì tớ khuyên nên để true vì làm VFR ko đơn giản, nhất là với mấy show nói nhiều như Lucky Star hay Sayonara Zetsubou Sensei.
+ ffmpegsource (có thể tìm thấy trên doom9) : Mặc định là ra VFR. Cái này thường tiện lợi cho ai muốn encode VFR vì nó khá chính xác với dạng này, trừ khi hardsub với source wmv. Tuy nhiên với newbie thì tớ khuyên ko nên đụng đến thằng này vì ko đơn giản.
+ AVCSource (doom9) : Chuyên dùng để xử lý file sử dụng codec h264. Plugin này khá mới. Default cũng ra VFR như ffmpegsource. Tương tự, tớ ko recommend cho newbie.
+ MPEG2Source() : Cái này thực ra có khá nhiều tham số, phải đọc faq đi kèm mới hiểu hết được. Hàm này chuyên dùng để xử lý source DVD hoặc Transport Stream (.ts). Đi kèm với nó là các plugin dùng để deinterlace. Với newbie tớ cũng khuyên chưa nên đụng đến vì deinterlace ko hề đơn giản, nhất là khi muốn ra VFR. Tuy nhiên với OP của H-Game (vd Baldr Force) thì cứ thoải mái vì source đều là progressive, rất dễ xử lý.
- Hàm resize : Có khá nhiều loại. Tùy từng mục đích và source mà sử dụng hàm khác nhau. Tớ thì thường sử dụng Lanczos(width, height). Theo 50119 thì cái Blackman ngon hơn, có điều hiện tớ chưa test nên ko rõ. Tuy nhiên ra sao thì ra, khi resize cần đảm bảo aspect ratio nếu muốn encode XviD, ko được đem 16:9 chuyển thành 4 : 3 hay ngược lại mà ko thêm black border vào. Khi encode SD thì nên sử dụng res 704x400 (nếu downscale từ 720p), hoặc 640x480 nếu source là 4 : 3 (Clannad TV bản early broadcast)
- TextSub(“filename.ass”) : Vâng. Đây là hàm đơn giản nhất, nhưng cũng là hàm có nhiều người hỏi nhất. Chỉ có vấn đề cơ bản là hardsub ra sao thôi mà cũng có quá nhiều người làm phiền tớ vì cái này. Chú ý : Nếu sử dụng đường dẫn tương đối như trên thì phải để file ass và file avs trong cùng 1 folder. Ngoài ra nếu ai encode h264 thì tuyệt đối ko sử dụng đường dẫn tương đối cho hàm này nếu nhét thẳng file avs ko qua lossless vào meGUI. Làm như vậy khi encode giữa chừng rất hay bị lên 100% CPU + RAM spawned, dẫn đến các hoạt động trên máy bị ngưng trệ, phải khởi động lại.
1 script avs đơn giản có dạng như sau :
2 lệnh ở cuối dùng để hardsub. Tùy theo nhu cầu mà có thể sử dụng các hàm khác nhau. Script có thể complex hơn, vd :
IV. Chi tiết về cách sử dụng VirtualDubMod :
Sau khi viết xong file avs, bạn cần mở nó bằng 1 soft nào đó để test (ở đây là VirtualDubMod)
Giao diện phần mềm nhìn qua sẽ có dạng như sau :
Để edit script avs, ấn Ctrl+E. Script Editor sẽ xuất hiện như trong hình dưới đây :
Muốn xem thay đổi sau mỗi lần edit thì ấn F5. Giờ tới phần menu.
1. File : Các lệnh cần chú ý gồm :
a/ Open video file -> Có thể mở nhiều loại, tuy nhiên tớ khuyến cáo chỉ nên mở file avs hoặc avi, ko nên mở file loại khác. Ở đây do đã load file avs nên ko có lý do gì để mở thêm cả.
b/ Append segment -> Thường chỉ dùng đến khi cần nối file theo kiểu direct stream copy. Ở đây tạm chưa xài.
c/ Save As -> Sau khi thiết lập xong encoder, cần sử dụng lệnh này để bắt đầu encode.
d/ Close video file -> Đóng video lại để mở video khác.
e/ File information -> Xem thông tin về source.
2. Edit : Dùng để sửa đổi frame, bao gồm cắt bớt hoặc lặp. Đa số các lệnh ở đây nhìn vô là hiểu nên tớ ko cần giải thích nhiều. Tuy nhiên trong 1 số ít trường hợp cần cắt bớt 1 số frame (vd khi làm AMV) thì nên sử dụng selection bằng cách ấn Home rồi End như hình dưới đây. Và khi dùng thì cần nhớ chính xác frame nào.
Còn lại tự tìm hiểu lấy. Chức năng này khi encode fansub thường ko sử dụng tới nên tớ cũng ko nói thêm nữa.
3. Video : Đây là menu quan trọng nhất cần ghi nhớ. Khi encode XviD trước hết làm ơn set sang Fast recompress như hình vẽ, như vậy sẽ tránh việc VirtualDubMod tự convert colorspace, dẫn tới giảm video quality. Muốn convert gì thì điều chỉnh trong script AVISynth tốt hơn. Direct stream copy chỉ dùng khi copy hoặc nối video ko cần thông qua re-encode. Ở đây ta ko dùng tới vì như vậy output sẽ thành uncompressed.
- Frame Rate : Chức năng này thông thường ko cần để ý. Tuy nhiên khi nối các video rời sử dụng codec h264 bằng Direct stream copy sẽ cần force frame rate lại (xem hình dưới).
- Select Range -> Thường dùng khi cần Direct stream copy 1 đoạn nào đó.
+ Start offset là vị trí frame đầu của đoạn cần copy
+ Length là độ dài đoạn video cần copy, tính từ Start offset
+ End offset : Ko cần chú ý. Thay đổi 2 cái trên thì cái này sẽ điều chỉnh tương ứng.
- Compression : Cái này là phần chính nên tớ sẽ đề cập sau.
4. Streams : Ở đây chỉ cần nhớ 2 lệnh :
a/ Video comments : Dùng để thêm 1 vài dòng vào metadata của video. Chức năng này thực ra ko hoàn toàn cần thiết. Tuy nhiên có thể ghi note của nhóm sub vào trong này.
Với mỗi tag, sau khi ghi xong, ấn Add để đưa vào list. Muốn bỏ đi thì chọn tag đó rồi ấn Delete. Các tag được phép sử dụng với file avi gồm có :
+ Title
+ Author
+ Copyright
Các tag kia tớ chưa thử hết nên ko liệt kê. Đa phần trong số đó là ko xài được.
b/ Stream list :
Do load bằng AVISynth nên audio sẽ được decode ra wav. Vì vậy khi encode ta cần xử lý luôn cả cái này. Đầu tiên ấn chuột phải stream có trong list, chọn Full processing mode. Tiếp tục ấn chuột phải lần nữa rồi chọn Compression. Do là file avi nên ở đây tớ chọn Lame MP3 encoder và nén ở 128 kbps CBR, 2 channels. Dạng này tương thích tốt trên các đầu MPEG-4 dân dụng và nén tốt hơn AC3. Tuyệt đối ko sử dụng các codec khác như AAC hay Vorbis hoặc mp3 VBR với file avi. Tiếp theo ấn OK, rồi OK.
Các menu khác ko biết gì thì tốt nhất đừng rờ vào. Bây giờ đến phần chính.
Vào Video>Fast recompress. Tiếp tục vào Video>Compression. Kéo xuống dưới và chọn XviD MPEG-4 Codec như hình sau :
Bấm vào Configure.
Trong phần Profile level, chọn (unrestricted), rồi bấm tiếp vào more.
- Phần quantization type, chọn H.263. Ko nên chọn bất cứ cái quantization matrix nào khác ngoài cái này.
- Adaptive Quantization để trống. Đánh dấu vào sẽ làm giảm quality trong khi speed ko hơn bao nhiêu.
- Interlaced Encoding để trống. Mục tiêu của encode fansub là ra progressive chứ ko phải interlaced.
- Quarter Pixel : để trống. Đánh dấu vào sẽ làm video khó nén hơn mà quality hầu như ko hơn bao nhiêu.
- Global Motion Compensation : Đánh dấu. Cái này giúp chẩn đoán motion tốt hơn.
- B-VOPs : Cái này liên quan tới B-frames. Cứ đánh dấu vào như trong hình. Mấy thông số phía dưới để default.
- Sang tab Aspect Ratio, nếu thấy chọn sẵn là Square (default) rồi thì thôi. Còn ko thì chỉnh lại thành Square. Giờ ấn OK để quay lại.
- Phần encoding type, chọn Two pass – 1st pass. Ấn tiếp vào nút more bên cạnh.
Đánh dấu như trong hình trên. Cái dấu ký hiệu đồng Yên Nhật kia thực ra là cái BackSlash. Do máy tớ để region JP nên trông nó như vậy. Stats file sẽ lưu trữ info để làm căn cứ tính toán bitrate cần thiết cho mỗi frame encode. Full quality first pass giúp ước lượng tương đối bitrate cần thiết cho pass 2. Bitrate của video sau pass 2 sẽ ko thể vượt quá ngưỡng này. Theo lý thuyết thì có thể nén còn khoảng 90% so với full quality first pass mà ko giảm quality nhiều, nhưng tớ thì thường chọn xấp xỉ. h264 sẽ nén được nhiều hơn, vì vậy nếu chọn bitrate nhiều hơn ngưỡng này tức là overkill, gây lãng phí bitrate. Cái Discard first pass ko chọn vì như vậy sẽ ko biết file pass 1 bitrate bao nhiêu để làm căn cứ tính toán. Xong xuôi chọn OK.
Tiếp tục ấn vào Zone Options.
Đánh dấu Chroma optimizer enabled. Ấn ok.
Giờ tới quality preset. Chọn (User defined) rồi ấn vào more.
Trong khung Motion search precision chọn như hình trên. Cái này áp dụng với mọi video khi encode bằng VirtualDub. Trong phần Other thì chú ý cái Maximum I-frame interval. Nếu video là 30 fps thì điền 300, còn nếu 24 thì điền 240. Ở đây với cái SRW thì tớ điền 240.
Phần quantization chọn như trong hình trên. Quant 1 quá nặng mà hầu như ko hơn gì quant 2 nên cũng ko cần. Max để 2 là vừa đẹp rồi.
Xong xuôi ấn ok hết cho tới khi ra tới màn hình đầu tiên, chọn Save As và save lại với đuôi avi. Tùy độ dài của video, mức độ complex của script AVISynth, các file ass cũng như plugin được sử dụng, sức mạnh của CPU bao nhiêu mà thời gian nhanh hay chậm khác nhau. Trong lúc này nên bỏ đó đi làm việc khác. Nhớ set priority xuống Idle nếu muốn làm việc khác trong lúc encode.
Tiếp theo vào chọn lại như cũ, nhưng lần này là chọn Two pass – 2nd pass.
Tiếp theo chọn calc.
Các thông số cần điền vào bitrate Calculator gồm có :
- Target size : Size của video (tính cả video+audio streams) theo KB. Như tớ đã nói, ko nên nén thấp hơn 90% size của pass 1. Còn nếu muốn force size thì nên chỉnh lại script avs cho dễ compress, có điều như vậy cũng đồng nghĩa với việc blur nó đi bớt.
- Subtitles : Để 0, vì file avi ở đây ta hardsub.
- Format : Chọn AVI-OpenDML.
- Video : Độ dài theo giờ:phút:giây, và frame rate của video.
- Audio : Ở đây chọn MP3-CBR, average bitrate = 128kbps.
Xong xuôi ấn OK, ta sẽ có kết quả cần tính. Tiếp tục OK, OK, Save As. Lần này nên save thành file mới để tiện đối chiếu sau khi encode xong. Vì là encode XviD nên video quality sẽ chỉ ở mức chấp nhận được. Còn muốn HQ thì mời đọc kỹ mấy cái faq AVISynth với x264 encoder trên doom9 rồi xài meGUI mà encode.
Theo tình hình hiện tại, do có quá nhiều thắc mắc ko cần thiết từ nhiều người mới tập tành sub nên tớ quyết định làm cái faq này để cung cấp những khái niệm cơ bản về video encoding, cũng như cách sử dụng 1 công cụ encode video là VirtualDubMod.
I. Sơ lược :
VirtualDubMod là một phần mềm miễn phí dùng để xử lý video, được xây dựng dựa trên VirtualDub, với 1 số tính năng khác mà VirtualDub ko có. Phần mềm này hiện đã ngừng phát triển từ năm 2005. Tuy nhiên nó vẫn có một số tính năng khá thuận tiện và do khá dễ sử dụng nên với những người mới học, nắm bắt được cách sử dụng phần mềm này sẽ tiện lợi hơn khi chuyển sang các công cụ khác như meGUI.
Có thể download tại trang chủ VirtualDubMod trên sourceforge. Nhớ là down cái All inclusive pack, nếu ko chạy ko được ráng chịu.
Code:
http://sourceforge.net/project/showfiles.php?group_id=65889&package_id=63653
Về cơ bản thì phần mềm này ko đòi hỏi nhiều. Cấu hình máy thì ko nhất thiết phải mạnh, tuy nhiên CPU và RAM càng khủng càng tốt, nhất là khi cần encode h264 hay sử dụng ASS karaoke effect có độ phức tạp cao. Yêu cầu chủ yếu là các phần mềm đi kèm.
a/ AVISynth : Bắt buộc đối với mọi encoder. Hiện tại ko có lý do gì để sử dụng hệ thống filter cổ lỗ sĩ của VirtualDub nữa, ngoài ra hệ thống script của AVISynth ưu việt và dễ điều chỉnh hơn hẳn phương pháp thủ công nên việc sử dụng AVISynth là việc đầu tiên 1 encoder cần biết.
- Link download phiên bản mới nhất có thể tìm thấy trên trang chủ doom9.
- Các plugin có thể tìm thấy ở 1 số site. Có thể tìm thấy các link này trên forum doom9. Tớ, 50119 và Holy_Master đã post link 1 số plugin điển hình trong thread AVISynth của box Fansub trên SA. Muốn sử dụng plugin nào thì chỉ cần copy vào folder Plugin của AVISynth là xong. Nếu muốn thành real encoder thì chịu khó đọc toàn bộ đám faq đi kèm bằng tiếng Anh, vì công nghệ encode đổi mới liên tục, ko có thời gian đâu ra mà dịch ra tiếng Việt hết. Ngoài ra những gì ko quá phức tạp thì đừng hỏi tớ hay 50119 vì bọn tớ đều rất bận.
b/ .NET fix : 1 số plugin đặc biệt (vd Toon) cần các bản update .NET Framework. Chi tiết có thể tìm thấy trên box AVISynth của forum doom9 nếu chịu khó đọc
c/ Vsfilter : Thời gian gần đây, jfs đã hack module này và thêm vào nhiều tính năng mới. Nếu muốn sử dụng thì cần copy đè lên các file vsfilter.dll ở tất cả các folder sau :
- AVISynth\Plugin
- Folder của Codec Pack. Ở đây tớ recommend K-Lite Mega Full vì nó có đầy đủ các tool cần thiết. Real encoder thì cần tự điều chỉnh bộ codec ở mức tối ưu. CCCP chỉ dành cho người coi video ở trình độ phổ thông, ko có đủ tool cần thiết để encode.
- Folder của Aegisub. Cần cài đồng bộ để ko xảy ra lỗi ngoài ý muốn, vd lệch frame.
- Folder của VirtualDub hay VirtualDubMod, nếu sử dụng 2 soft này.
Chú ý : Các bản fix có thể bị lỗi. Vì vậy trước khi update cần backup file vsfilter.dll cũ ra chỗ khác để có gì còn copy lại.
III. Pre-processing :
Trước khi sử dụng VirtualDub hay VirtualDubMod thì cần biết sơ về AVISynth. Về cơ bản, cái này tương tự 1 ngôn ngữ lập trình. Tuy nhiên nó ko dùng để viết chương trình, mà để xử lý video/audio. Script được viết trong các file text với đuôi là .avs. Nếu so với các ngôn ngữ lập trình thì AVISynth ko khó lắm, tuy nhiên việc config có thể tốn rất nhiều thời gian tùy thuộc source và kinh nghiệm của encoder. Còn việc viết function thì chỉ dành cho encoder ở trình độ rất cao, vd Didée bên doom9 (cái này thì ko cần quan tâm mấy). Trong script avs, video sẽ được load vào trình play video hoặc encoding tool thông qua AVISynth. Về cách sử dụng các hàm cụ thể thì có trong faq đi kèm rồi nên tớ ko nói thêm. Tuy nhiên ít nhất đối với beginner thì cũng cần sử dụng được 1 số hàm đơn giản sau :
- Hàm load video :
+ AVISource(“filename.avi”)
Trong ngoặc kép là tên video, với phần mở rộng là avi. Đây là dạng dễ xử lý nhất. Tuy nhiên có do 2 loại file avi nên cách xử lý cũng tương đối khác. Loại thứ nhất là CFR (Constant Frame Rate), hay gặp ở raw của TV-Japan. Loại này do framerate cố định nên rất dễ xử lý, chỉ cần 1 lệnh AVISource(“filename.avi”) là xong. Loại thứ 2 phức tạp hơn là 120 fps AVI. Loại này thực chất là VFR với drop frame. Nếu muốn encode VFR thì tham khảo bên thread AVISynth, còn đơn giản hơn, muốn encode XviD AVI thì thêm vào lệnh sau : SelectEvery(5). Cái này sẽ ra 24 fps, dùng cho đa số anime. Nếu muốn ra 30 fps thì thay 5 bằng 4. Trường hợp này thì hiếm hơn. 1 vd điển hình là Claymore, với hầu hết scene là 30 fps trừ OP/ED.
+ DirectShowSource(“filename.ext”, fps=??, convertfps=??)
Có thể sử dụng với hầu hết video trừ Interlaced MPEG-1 hoặc MPEG-2. Nhiều encoder ko thích dùng hàm này vì nó seek ko chính xác, tuy nhiên tớ lại dùng nó khá thường xuyên vì nó khá có lợi khi cần xử lý mấy cái raw wmv shit (chỉ cần convertfps là xong, đỡ phiền phức). Ngoài tham số filename, hàm này có thêm 2 tham số là fps (23.976 hoặc 29.97 tùy trường hợp) và convertfps (true hoặc false). Với newbie thì tớ khuyên nên để true vì làm VFR ko đơn giản, nhất là với mấy show nói nhiều như Lucky Star hay Sayonara Zetsubou Sensei.
+ ffmpegsource (có thể tìm thấy trên doom9) : Mặc định là ra VFR. Cái này thường tiện lợi cho ai muốn encode VFR vì nó khá chính xác với dạng này, trừ khi hardsub với source wmv. Tuy nhiên với newbie thì tớ khuyên ko nên đụng đến thằng này vì ko đơn giản.
+ AVCSource (doom9) : Chuyên dùng để xử lý file sử dụng codec h264. Plugin này khá mới. Default cũng ra VFR như ffmpegsource. Tương tự, tớ ko recommend cho newbie.
+ MPEG2Source() : Cái này thực ra có khá nhiều tham số, phải đọc faq đi kèm mới hiểu hết được. Hàm này chuyên dùng để xử lý source DVD hoặc Transport Stream (.ts). Đi kèm với nó là các plugin dùng để deinterlace. Với newbie tớ cũng khuyên chưa nên đụng đến vì deinterlace ko hề đơn giản, nhất là khi muốn ra VFR. Tuy nhiên với OP của H-Game (vd Baldr Force) thì cứ thoải mái vì source đều là progressive, rất dễ xử lý.
- Hàm resize : Có khá nhiều loại. Tùy từng mục đích và source mà sử dụng hàm khác nhau. Tớ thì thường sử dụng Lanczos(width, height). Theo 50119 thì cái Blackman ngon hơn, có điều hiện tớ chưa test nên ko rõ. Tuy nhiên ra sao thì ra, khi resize cần đảm bảo aspect ratio nếu muốn encode XviD, ko được đem 16:9 chuyển thành 4 : 3 hay ngược lại mà ko thêm black border vào. Khi encode SD thì nên sử dụng res 704x400 (nếu downscale từ 720p), hoặc 640x480 nếu source là 4 : 3 (Clannad TV bản early broadcast)
- TextSub(“filename.ass”) : Vâng. Đây là hàm đơn giản nhất, nhưng cũng là hàm có nhiều người hỏi nhất. Chỉ có vấn đề cơ bản là hardsub ra sao thôi mà cũng có quá nhiều người làm phiền tớ vì cái này. Chú ý : Nếu sử dụng đường dẫn tương đối như trên thì phải để file ass và file avs trong cùng 1 folder. Ngoài ra nếu ai encode h264 thì tuyệt đối ko sử dụng đường dẫn tương đối cho hàm này nếu nhét thẳng file avs ko qua lossless vào meGUI. Làm như vậy khi encode giữa chừng rất hay bị lên 100% CPU + RAM spawned, dẫn đến các hoạt động trên máy bị ngưng trệ, phải khởi động lại.
1 script avs đơn giản có dạng như sau :
Code:
DirectShowSource("[アニメ OPED] WHITE ALBUM ED 「舞い落ちる雪のように :Suara」 (D-tvk 1280x720 x264-AAC).mp4", fps=23.976, convertfps=true)
LanczosResize(1280, 720)
TextSub("rendered edtest.ass")
TextSub("rendered edtest (kanji).ass")
Code:
Import("SimpleAntiAliasing.avs")
Import("AnimeAntiAliasing.avs")
Avisource("[DA-RAW] Lucky Star Episode 01 [D-TVA DivX651 1024x576 120fps][YS2YSUOe1cLtf].avi").KillAudio()
notes = ImageSource("Note2.jpg", pixel_type="RGB24", start=0, end=674, fps=24000/1001).ConvertToYV12().AssumeFPS(24000, 1001).Crop(0, 50, 0, -50).Lanczos4Resize(1024, 576).Tweak(bright=-0.1)
cfr000 = Trim(0,10791).SelectEvery(4,0).AssumeFPS(30000,1001)
cfr001 = Trim(10792,10796).SelectEvery(5,0).AssumeFPS(30000,1001)#.LanczosResize(2048, 1152).BicubicResize(1024, 576)
cfr002 = Trim(10797,10797).SelectEvery(1,0).AssumeFPS(30000,1001)#.LanczosResize(2048, 1152).BicubicResize(1024, 576)
cfr003 = Trim(10798,10801).SelectEvery(4,0).AssumeFPS(30000,1001)#.LanczosResize(2048, 1152).BicubicResize(1024, 576)
cfr004 = Trim(10802,64256).SelectEvery(5,0).AssumeFPS(30000,1001)#.LanczosResize(2048, 1152).BicubicResize(1024, 576)
cfr005 = Trim(64257,64257).SelectEvery(1,0).AssumeFPS(30000,1001)#.LanczosResize(2048, 1152).BicubicResize(1024, 576)
cfr006 = Trim(64258,64261).SelectEvery(4,0).AssumeFPS(30000,1001)#.LanczosResize(2048, 1152).BicubicResize(1024, 576)
cfr007 = Trim(64262,172616).SelectEvery(5,0).AssumeFPS(30000,1001)#.LanczosResize(2048, 1152).BicubicResize(1024, 576)
cfr000+cfr001+cfr002+cfr003+cfr004+cfr005+cfr006+cfr007
Trim(0, 34824)
AssumeFPS(24000,1001)
UnDot()
Deen("a3d", 2, 2, 4)
BiFrost()
Toon(0.05)
#Tweak(sat=1.07)
#Deblock(quant=3)
last = last + notes
TextSub("OP Karaoke Kanji VFR.ass")
TextSub("OP Karaoke VFR.ass")
TextSub("Credit VFR.ass")
TextSub("ED1 Kanji VFR.ass")
TextSub("ED1 Romaji VFR.ass")
TextSub("Logo VFR.ass")
Trim(2698, 0)
Sau khi viết xong file avs, bạn cần mở nó bằng 1 soft nào đó để test (ở đây là VirtualDubMod)
Giao diện phần mềm nhìn qua sẽ có dạng như sau :

Để edit script avs, ấn Ctrl+E. Script Editor sẽ xuất hiện như trong hình dưới đây :

Muốn xem thay đổi sau mỗi lần edit thì ấn F5. Giờ tới phần menu.

1. File : Các lệnh cần chú ý gồm :
a/ Open video file -> Có thể mở nhiều loại, tuy nhiên tớ khuyến cáo chỉ nên mở file avs hoặc avi, ko nên mở file loại khác. Ở đây do đã load file avs nên ko có lý do gì để mở thêm cả.
b/ Append segment -> Thường chỉ dùng đến khi cần nối file theo kiểu direct stream copy. Ở đây tạm chưa xài.
c/ Save As -> Sau khi thiết lập xong encoder, cần sử dụng lệnh này để bắt đầu encode.
d/ Close video file -> Đóng video lại để mở video khác.
e/ File information -> Xem thông tin về source.

2. Edit : Dùng để sửa đổi frame, bao gồm cắt bớt hoặc lặp. Đa số các lệnh ở đây nhìn vô là hiểu nên tớ ko cần giải thích nhiều. Tuy nhiên trong 1 số ít trường hợp cần cắt bớt 1 số frame (vd khi làm AMV) thì nên sử dụng selection bằng cách ấn Home rồi End như hình dưới đây. Và khi dùng thì cần nhớ chính xác frame nào.

Còn lại tự tìm hiểu lấy. Chức năng này khi encode fansub thường ko sử dụng tới nên tớ cũng ko nói thêm nữa.

3. Video : Đây là menu quan trọng nhất cần ghi nhớ. Khi encode XviD trước hết làm ơn set sang Fast recompress như hình vẽ, như vậy sẽ tránh việc VirtualDubMod tự convert colorspace, dẫn tới giảm video quality. Muốn convert gì thì điều chỉnh trong script AVISynth tốt hơn. Direct stream copy chỉ dùng khi copy hoặc nối video ko cần thông qua re-encode. Ở đây ta ko dùng tới vì như vậy output sẽ thành uncompressed.
- Frame Rate : Chức năng này thông thường ko cần để ý. Tuy nhiên khi nối các video rời sử dụng codec h264 bằng Direct stream copy sẽ cần force frame rate lại (xem hình dưới).

- Select Range -> Thường dùng khi cần Direct stream copy 1 đoạn nào đó.

+ Start offset là vị trí frame đầu của đoạn cần copy
+ Length là độ dài đoạn video cần copy, tính từ Start offset
+ End offset : Ko cần chú ý. Thay đổi 2 cái trên thì cái này sẽ điều chỉnh tương ứng.
- Compression : Cái này là phần chính nên tớ sẽ đề cập sau.

4. Streams : Ở đây chỉ cần nhớ 2 lệnh :
a/ Video comments : Dùng để thêm 1 vài dòng vào metadata của video. Chức năng này thực ra ko hoàn toàn cần thiết. Tuy nhiên có thể ghi note của nhóm sub vào trong này.

Với mỗi tag, sau khi ghi xong, ấn Add để đưa vào list. Muốn bỏ đi thì chọn tag đó rồi ấn Delete. Các tag được phép sử dụng với file avi gồm có :
+ Title
+ Author
+ Copyright
Các tag kia tớ chưa thử hết nên ko liệt kê. Đa phần trong số đó là ko xài được.
b/ Stream list :

Do load bằng AVISynth nên audio sẽ được decode ra wav. Vì vậy khi encode ta cần xử lý luôn cả cái này. Đầu tiên ấn chuột phải stream có trong list, chọn Full processing mode. Tiếp tục ấn chuột phải lần nữa rồi chọn Compression. Do là file avi nên ở đây tớ chọn Lame MP3 encoder và nén ở 128 kbps CBR, 2 channels. Dạng này tương thích tốt trên các đầu MPEG-4 dân dụng và nén tốt hơn AC3. Tuyệt đối ko sử dụng các codec khác như AAC hay Vorbis hoặc mp3 VBR với file avi. Tiếp theo ấn OK, rồi OK.

Các menu khác ko biết gì thì tốt nhất đừng rờ vào. Bây giờ đến phần chính.
Vào Video>Fast recompress. Tiếp tục vào Video>Compression. Kéo xuống dưới và chọn XviD MPEG-4 Codec như hình sau :

Bấm vào Configure.

Trong phần Profile level, chọn (unrestricted), rồi bấm tiếp vào more.

- Phần quantization type, chọn H.263. Ko nên chọn bất cứ cái quantization matrix nào khác ngoài cái này.
- Adaptive Quantization để trống. Đánh dấu vào sẽ làm giảm quality trong khi speed ko hơn bao nhiêu.
- Interlaced Encoding để trống. Mục tiêu của encode fansub là ra progressive chứ ko phải interlaced.
- Quarter Pixel : để trống. Đánh dấu vào sẽ làm video khó nén hơn mà quality hầu như ko hơn bao nhiêu.
- Global Motion Compensation : Đánh dấu. Cái này giúp chẩn đoán motion tốt hơn.
- B-VOPs : Cái này liên quan tới B-frames. Cứ đánh dấu vào như trong hình. Mấy thông số phía dưới để default.
- Sang tab Aspect Ratio, nếu thấy chọn sẵn là Square (default) rồi thì thôi. Còn ko thì chỉnh lại thành Square. Giờ ấn OK để quay lại.
- Phần encoding type, chọn Two pass – 1st pass. Ấn tiếp vào nút more bên cạnh.

Đánh dấu như trong hình trên. Cái dấu ký hiệu đồng Yên Nhật kia thực ra là cái BackSlash. Do máy tớ để region JP nên trông nó như vậy. Stats file sẽ lưu trữ info để làm căn cứ tính toán bitrate cần thiết cho mỗi frame encode. Full quality first pass giúp ước lượng tương đối bitrate cần thiết cho pass 2. Bitrate của video sau pass 2 sẽ ko thể vượt quá ngưỡng này. Theo lý thuyết thì có thể nén còn khoảng 90% so với full quality first pass mà ko giảm quality nhiều, nhưng tớ thì thường chọn xấp xỉ. h264 sẽ nén được nhiều hơn, vì vậy nếu chọn bitrate nhiều hơn ngưỡng này tức là overkill, gây lãng phí bitrate. Cái Discard first pass ko chọn vì như vậy sẽ ko biết file pass 1 bitrate bao nhiêu để làm căn cứ tính toán. Xong xuôi chọn OK.
Tiếp tục ấn vào Zone Options.

Đánh dấu Chroma optimizer enabled. Ấn ok.
Giờ tới quality preset. Chọn (User defined) rồi ấn vào more.

Trong khung Motion search precision chọn như hình trên. Cái này áp dụng với mọi video khi encode bằng VirtualDub. Trong phần Other thì chú ý cái Maximum I-frame interval. Nếu video là 30 fps thì điền 300, còn nếu 24 thì điền 240. Ở đây với cái SRW thì tớ điền 240.

Phần quantization chọn như trong hình trên. Quant 1 quá nặng mà hầu như ko hơn gì quant 2 nên cũng ko cần. Max để 2 là vừa đẹp rồi.
Xong xuôi ấn ok hết cho tới khi ra tới màn hình đầu tiên, chọn Save As và save lại với đuôi avi. Tùy độ dài của video, mức độ complex của script AVISynth, các file ass cũng như plugin được sử dụng, sức mạnh của CPU bao nhiêu mà thời gian nhanh hay chậm khác nhau. Trong lúc này nên bỏ đó đi làm việc khác. Nhớ set priority xuống Idle nếu muốn làm việc khác trong lúc encode.
Tiếp theo vào chọn lại như cũ, nhưng lần này là chọn Two pass – 2nd pass.

Tiếp theo chọn calc.

Các thông số cần điền vào bitrate Calculator gồm có :
- Target size : Size của video (tính cả video+audio streams) theo KB. Như tớ đã nói, ko nên nén thấp hơn 90% size của pass 1. Còn nếu muốn force size thì nên chỉnh lại script avs cho dễ compress, có điều như vậy cũng đồng nghĩa với việc blur nó đi bớt.
- Subtitles : Để 0, vì file avi ở đây ta hardsub.
- Format : Chọn AVI-OpenDML.
- Video : Độ dài theo giờ:phút:giây, và frame rate của video.
- Audio : Ở đây chọn MP3-CBR, average bitrate = 128kbps.
Xong xuôi ấn OK, ta sẽ có kết quả cần tính. Tiếp tục OK, OK, Save As. Lần này nên save thành file mới để tiện đối chiếu sau khi encode xong. Vì là encode XviD nên video quality sẽ chỉ ở mức chấp nhận được. Còn muốn HQ thì mời đọc kỹ mấy cái faq AVISynth với x264 encoder trên doom9 rồi xài meGUI mà encode.