- Được mệnh danh là "Photoshop của video", AVISynth là một trình biên tập video cực mạnh. Tuy chỉ hoạt động dựa trên những dòng lệnh khô khan, nhưng nếu biết cách sử dụng tốt, bạn sẽ có một video chuyên nghiệp không thua gì (và thậm chí còn nhỉnh hơn) các video được biên tập bởi các phần mềm nổi tiếng như Sony Vegas. Thông thường trước khi encode, các tay encode chuyên nghiệp họ thường viết sẵn một file AVS trong thời gian khá dài, để tính toán chi li các thông số sau đó mới đưa vào encode. Có thể nói file AVS (AVISynth) như một kịch bản, và bạn chính là người đạo diễn viết ra kịch bản đó. Phần mềm encode chỉ đóng vai trò "diễn viên" theo kịch bản có sẵn.
Ở đây Nman chỉ giới thiệu các mã lệnh đơn giản và thường hay phải sử dụng nhất. Bạn nào cần những hiệu ứng phức tạp hơn có thể tham khảo tài liệu đi kèm trong gói cài đặt AVISynth.
1. Mở đầu:
- Tải về và cài đặt AVISynth phiên bản mới nhất ở trên (tính đến ngày 3/9/2009 là phiên bản 2.58). Các bạn nên cài đặt ở chế độ Full Installation:
- Sau đó, nhấn chuột phải tại một vùng bất kỳ trên desktop hay thư mục nào đó, chọn New > AVISynth Script:
- Double-click vào file vừa tạo, ta sẽ có một script AVISynth trắng (blank), sử dụng notepad để edit trực tiếp.
2. Các mã lệnh cơ bản:
* Cũng như các loại mã lệnh trình khác, AVISynth cũng cho phép đặt comment để tiện chỉnh sửa sau này, để thêm comment, các bạn đặt dấu # trước câu comment, như:
- Open Video: Các bạn sử dụng mã lệnh mở video của AVS, bao gồm phần khai báo kiểu định dạng và đường dẫn file, số frame/giây và âm thanh (tắt/mở). VD:
Code:
DirectShowSource("D:\Videos\Movies\Doraemon Movies\gz-001.mkv", fps=23.976, audio=false)
+ Như bạn đã thấy, ta sẽ import video có tên và đường dẫn trong dấu ngoặc kép (cho phép dấu cách-space).
+ Số khung hình/giây (Frame Per Second): 23.976 (chuẩn DVD)
+ Âm thanh (audio=false): Tắt (nếu muốn bật âm thanh chỉ việc thay đổi giá trị thành true
+ DirectShowSource / AVISource / WAVSource,...: Khai báo kiểu định dạng. AVISynth có 2 kiểu xử lý khác nhau đối với video, một là xử lý file AVI (file định dạng AVI thật, không thể sử dụng thủ thuật đổi tên file) và DirectShow dùng cho các trường hợp còn lại (trừ RealMedia) như FLV, MOV, MKV, MPG,...
- Chèn phụ đề:
> Sử dụng tag Subtile Write thủ công của AVISynth, cú pháp như sau (Áp dụng cho mã màu [yv12] [yuy2] [rgb32] [rgb24] :
Code:
Subtitle(clip, string text, int "x", int "y", int "first_frame", int "last_frame", string "font", float "size", int "text_color", int "halo_color", int "lsp", float "font_width", float "font_angle", bool "interlaced")
+ clip: Chỉ tên tập tin video đã được nhập ở trên
+ string text: Nội dung phụ đề
+ int "x" / int "y" : Vị trí phụ đề, tính từ ký tự ở giữa (kể cả khoảng trống và khoảng không), với X, Y là tọa độ toán học, X là trục hoành, Y là trục tung. Giới hạn giá trị nằm trong khoảng độ phân giải của video.
+ int "first_frame" / int "last_frame" : Để căn thời gian hiển thị và biến mất của câu phụ đề, nhưng khác với các chương trình làm sub, kiểu "vẽ" phụ đề này không hỗ trợ theo thời gian mà phải theo khác frame (khung hình). Như ta đã biết, ngày trước khi làm phim, họ phải sắp xếp các ảnh theo một thứ tự để tạo ra hiệu ứng chuyển động, và đây cũng vậy. Mỗi video có thời lượng trên 1h có hàng ngàn frame, bạn phải dùng các chương trình như VirtualDub (Mod) để kiểm tra frame trước khi nhập dữ liệu vào đây.
+ string "font" : Dùng để set font cho phụ đề, và phải là font đã được cài đặt sẵn trong máy.
+ float "size" : Kích thước font
+ "text_color", int "halo_color" : Dùng để chỉnh màu chữ và màu viền của sub. Sử dụng bảng mã màu HTML. Nếu bạn không biết thì có thể sử dụng AegiSub để lấy mã màu từ công cụ Style Assisstant.
+ float "font_width" : Độ rộng của font, khuyến cáo set giá trị từ 110 -> 180
+ float "font_angle" : Căn chỉnh lề font, chỉnh giữa (center), căn lề trái (left), căn lề phải (right),...
+ bool "interlaced" : Bạn có thể bỏ câu này khi không cần dùng. Nó dùng để khử hoặc tăng interlace (hiện tượng sọc ngang thường gặp trong khi encode các video được quay từ máy quay kỹ thuật số, DVD chưa được decrypt hoặc chưa decrypt đến nơi đến chốn)
> Sử dụng Plugin VSFilter:
Một công cụ thông minh và cực mạnh, giúp bạn add hardsub vào video trực quan hơn nhờ nhiều phần mềm hỗ trợ khác mà không cần qua những dòng lệnh khô khan, chỉ cần qua 1 câu lệnh đơn giản là bạn đã đưa được sub vào video với chất lượng sub hoàn hảo (phụ thuộc vào chất lượng video).
Các định dạng sub được hỗ trợ: SubRip (.SRT); DVD VobSub (.SUB); SAMI (.SMI); SubStation Alpha (.SSA); Advanced SubStation Alpha (.ASS)
Với file sub dạng Bitmap (.SUB) (rip từ DVD), cú pháp như sau (bạn điền ở dòng nào cũng được, tốt nhất là ngay bên dưới mã lệnh nhập video):
Code:
DirectShowSource("D:\Movies\Doraemon.mkv")
LoadPlugin ("<Đường dẫn tới file vsfilter.dll trong thư mục K-Lite>")
VobSub("D:\Movies\Doraemon.sub")
Với file sub dạng văn bản mà bạn hay down từ các trang phụ đề như SubScene.com hay từ các nhóm dịch phụ đề (Fansub):
Code:
DirectShowSource("D:\Movies\Doraemon.mkv")
LoadPlugin ("<Đường dẫn tới file vsfilter.dll trong thư mục K-Lite>")
TextSub("D:\Movies\Doraemon.ASS")
- Cách trên dùng để add hardsub vào video. Có một bug nhỏ là nếu bạn nhìn kỹ, bạn sẽ thấy một hình nhữ nhật nhỏ ở viền sub rất nhỏ mà nhìn thoáng qua không thấy được.
- Plugin chứa 2 file DLL dùng cho việc mã hóa ký tự unicode trong file sub. Bạn cần phải sử dụng Windows 2000 trở lên để có thể add sub tiếng Việt.
- Crop Video:
Dùng để cắt lược một số đoạn ảnh của video, giống như chức năng crop trên Windows Picture Manager ấy. Cú pháp như sau:
Code:
crop( trái, trên, phải, dưới)
Tương ứng với các vị trí "trái", "trên", "phải", "dưới" là các thông số crop. Nếu muốn thu giảm lại, bạn thêm dấu "-" vào trước thông sô, VD:
Code:
crop( 0, 0, -64, 0)
Với MeGUI, bạn có thể sử dụng luôn chức năng Auto Crop trong tool AVS Script Creator.
- Resize Video:
Sử dụng để kéo giãn / thu nhỏ video theo độ phân giải. Cách resize rất dễ và cũng có nhiều lựa chọn resize để đảm bảo hình ảnh có chất lượng tốt nhất. Cú pháp:
<ResizeMethod>(Width,Height)
Các Resize Methods:
- BilinearResize (phiên bản 1.0): Sử dụng bộ lọc resize giống như chức năng "precise bilinear" của VirtualDub, cho chất lượng ảnh mịn ở viền các chi tiết trong video. Thường áp dụng đối với các video có độ phân giải thấp và video đen trắng. Resize theo method này có ưu điểm là encode khá nhanh, có thể nói là nhanh hơn kha khá so với Spline64 hay Lanczos.
<BilinearResize>(Width,Height)
- BicubicRessize (phiên bản 1.0): Cơ bản dựa trên cấu trúc kiểu resize của BilinearResize, nhưng chia rời các khối lập thể đa chiều ở cạnh của vật thể ra làm hai. Tương tự chức năng "precise bicubic" của VirtualDub. Nhờ vậy BicubicResize có thể tùy biến nhiều hơn. Nhưng chất lượng resize chưa thật hoàn hảo.
<BicubicRessize>(Width,Height)
- BlackmanResize (phiên bản 2.58): Một kiểu resize mới được dựa trên Lanczos resize. Cho chất lượng vượt trội hơn tất cả các kiểu resize khác. Ưu điểm lớn nhất của method này là bảo toàn rất tốt các hiệu ứng chuyển động đa chiều. Bù lại, thời gian resize lâu hơn.
- GaussResize (phiên bản 2.56): Nếu bạn biết tên nhà khoa học cùng tên với kiểu method này thì bạn cũng đoán ra. GR sử dụng mã lệnh điều chỉnh độ nét p (mặc định 30). Giá trị của p có thể thay đổi từ 1 đến 100 (1 là rất mờ và 100 là rất sắc nét). Dù giá trị thay đổi, thời gian resize vẫn ổn định và có thời gian tương đương Lanczos4Resize ở cùng 1 video và cùng 1 thông số thiết lập.
- LanczosResize (phiên bản 2.0) và Lanczos4Resize (phiên bản 2.55): Đây thực sự là một trong các method tốt nhất về độ nét, và ngoài Blackman, Lanczos4 là một trong những method chủ yếu để resize video HD thành m-HD. Là một dạng "tiến hóa" của BicubicResize, nhưng cho phép thông số thiết lập cao hơn nhiều so với Bicubic và vì thế cho hình ảnh rất bén. Nhất là ở viền các clip video HD:
Nhược điểm duy nhất của method này là resize không được đẹp đối với các video bị resize xuống quá nhiều, hay với video có nhiều hiệu ứng bóng mờ (mây, hơi nước, ánh sáng,...).
- PointResize: Method resize đơn giản nhất, nó tạo các điểm (dot pixel) ở xung quanh các hình ảnh trong frame có màu trung gian giữa những chi tiết cạnh nhau bằng phương pháp lấy sample màu thủ công. Vì thế hình ảnh sẽ rất xấu, chỉ phù hợp với những phim hoạt hình dạng như Tom and Jerry cũ hoặc phim đen trắng.
- SplineResize: Phương pháp resize tương tự như LanczosResize, nhưng nó có thể giảm thiểu tối đa độ rung nhiễu của vật thể động, giảm hơn kha khá so với LanczosResize. Vì thế Spline cho hình ảnh đẹp hơn Lanczos, nhưng phương pháp này lại ngốn nhiều dung lượng hơn trên anime và cartoon. Bạn có thể sử dụng đối với mọi định dạng và thể loại, nhưng phù hợp hơn cả là những phim hành động có tần suất rung chấn cao.
Changelog cho các method resize:
Trích:
v2.55 đã có Lanczos4Resize
v2.56 đã có Spline16Resize, Spline36Resize, GaussResize và mã lệnh hỗ trợ cho LanczosResize; nâng cấp tất cả các method resize.
v2.58 đã có BlackmanResize, Spline64Resize
|
- Đảo ngược video (Reserve):
Cú pháp:
- Liên kết các video với nhau:
Chỉ làm việc đối với những type cùng loại như AVISource, DirectShowSource, MPEG2Source,... . Bạn không thể link các file video khác type lại được.
Trích:
SegmentedAVISource (string tên_video_1, tên_video_2, bool "audio")
SegmentedDirectShowSource (string tên_video_1, tên_video_2, fps=xxx)
|
-
Trim (Cắt,lược video theo thời gian) (phiên bản 2.56):
Cú pháp:
Trích:
|
Trim (tên_video, int frame_đầu, int frame_cuối)
|
-
Xoay video theo góc độ (Rotate-Turn) (hệ màu: [yv12] [yuy2] [rgb32] [rgb24]) (phiên bản 2.51/2.55)
Xoay trái 90 độ:
Xoay phải 90 độ:
Xoay ngược 180 độ:
-
Chuyển đổi trị số FPS (ConvertFPS):
Cú pháp:
Sử dụng để thay đổi trị số khung hình trên giây, thường thì người ta hay sử dụng chức năng này để down FPS nhằm giảm tải dung dượng chứ chẳng mấy khi up lên vì cho dù như vậy thì chất lượng chẳng suy suyển gì.
Trích:
|
ConvertFPS (<clip>, float <chỉ_số>)
|
Xin nhắc lại: trên đây là các mã lệnh thường sử dụng nhất, còn rất nhiều mã lệnh khác bạn có thể tìm trong tài liệu hướng dẫn của AVISynth.
Sau khi viết xong script AVISynth, bạn có thể test ngay trên file AVS này. Nhấn chuột phải vào file AVS > chọn play, hoặc bạn cũng có thể kéo và thả vào cửa sổ chương trình Media Player Classic:
Và dĩ nhiên, dù hình ảnh có khác, nhưng file video vẫn không bị đả động gì. Cái hay của mã lệnh AVS là ở chỗ đó: linh hoạt và dễ kiểm tra, dù không trực quan cho lắm.