Trao đổi với tôi

http://www.buidao.com

1/10/13

[Encoding] Sơ nét về cách sử dụng Avisynth

Mấy bạn chưa biết xài meGUI mình khuyến khích qua topic meGUI học trước khi đọc bài này.


Avisynth là mộ công cụ vô cùng đắc lực không thể thiếu khi encode, bất cứ một encoder có kinh nghiệm nào đều sẽ nói vậy. Avisynth có khả năng xử lí hầu hết các vấn đề gặp phải với nhiều dạng raw anime khác nhau và sẽ giúp cải thiện chất lượng hình ảnh cũng như giúp file video nén được nhỏ hơn trong khi chất lượng hình ảnh nhìn bằng mắt thường không thay đổi.

Với các bạn đã biết sơ cách xài meGUI để encode thì học avisynth chính là bước tiếp theo giúp các bạn encode ra video đẹp hơn và filesize nhỏ hơn. Bài viết dưới đây sẽ tóm tắt rất ngắn gọn một vài cách sử dụng avisynth mình hay xài khi encode anime từ raw BDRip hoặc TVRip.

1. Installation

Hiển nhiên là đầu tiên các bạn phải cài Avisynth.

Đầu tiên các bạn tải AVSP về.
AVSP là một chương trình giúp ta edit và preview các script avisynth dễ dàng hơn.
Down file zip về rồi giải nén ra là chạy được thôi không cần cài.

Avisynth sẽ không có ích gì nếu không có các plugin chứa filter.
Mình đã soạn sẵn một số plugin tại đây. Các bạn down về rồi copy cái thư mục đó ghép chung với thư mục \plugins của Avisynth (C:\Program Files (x86)\Avisynth 2.5\plugins)
File ttempsmooth.dll các bạn move vào folder plugin luôn nhá
Bây giờ các bạn vào C:\Program Files (x86)\Avisynth 2.5\plugins\store\put in system32\, copy 3 file *.dll trong đó vào C:\Windows\System32

Ok, coi như đã cài đặt xong.

2. Your first script
Các bạn bật AvsP.exe lên.
Đầu tiên là load video. Một cách đơn giản để load video, mấy bạn gõ vào AvsP:
Code:
FFMpegSource2("đường dẫn tới file video")
Bây giờ các bạn bấm nút mũi tên ở dưới để review file avs các bạn mới viết.
Chúc mừng, bạn đã viết được một script avisynth cơ bản nhất
Các bạn có thể dùng thanh trượt ở dưới để tua lui tua tới.
screenshot
Hình này đã được thu nhỏ. Bấm vào đây để xem hình với kích cỡ đầy đủ. Hình có kích thước nguyên gốc là 1013x241.


3. Filters

Filters là các bộ lọc video với nhiều chức năng khác nhau. Mình giới thiệu cho các bạn một filter đơn giản nhất là resize video. Hồi nãy mình load 1 file mkv 720p. Bây giờ mình muốn resize đoạn video này xuống 640x360.
Các bạn gõ tiếp vào dòng 2 trong AvsP:
Code:
Lanczos4Resize(640,360)
Bấm nút mũi tên 2 lần để voi review của script mới. Ta da.
Ở đây Lanczos4Resize() là một filter hay còn gọi là function trong avisynth.
640 và 360 là 2 parameter của filter Lanczos4Resize(). Các bạn có thể thay đổi 2 con số này thoải mái. Ví dụ các bạn muốn resize video xuống nhỏ nữa, các bạn hãy thay đổi param theo ý mình:
Code:
Lanczos4Resize(320,240)
screenshot
Hình này đã được thu nhỏ. Bấm vào đây để xem hình với kích cỡ đầy đủ. Hình có kích thước nguyên gốc là 1013x570.


4. External Filters

Tuy nhiên, avisynth vốn không có sẵn nhiều filters, cho nên ta phải cài thêm các plugin.
Các filter mấy bạn down của mình ở trên nói chung cũng đủ để thí nghiệm thử rồi
Bây giờ các bạn xóa dòng Lanczos4Resize đi rồi viết cái này vào, sau đó preview thử:
Code:
dfttest()
maa()
đây là kết quả của 2 filter này:
Hình gốc Hình qua filter
Các bạn thấy rõ sự khác biệt chứ rõ ràng là tấm hình đã filter rồi mờ hơn
Bây giờ ta hãy xem xét 2 bức hình kĩ hơn, đây là 2 hình hồi nãy zoom 3 lần vào góc trái phía trên:
Video gốc Video đã filter
Mấy hạt đen trắng nhỏ nhỏ trong hình video gốc gọi là noise. Như các bạn đã thấy, những hạt nhỏ nhỏ này làm video có nhiều chi tiết hơn hẳn, điều này làm video khó nén hơn. Ta có thể khử noise này đi bằng dfttest(), bức hình sau khi filter đi không còn những chi tiết này nữa, giúp cho video ít chi tiết hơn và có thể nén ở bitrate thấp hơn mà chất lượng hình ảnh coi bằng mắt thường không bị ảnh hưởng nhiều.
dfttest() gọi là một filter denoiser. Denoiser có 3 loại: temporal, spatial3d. Spatial denoisers tìm noise để khử trong từng khung hình, temporal tìm noise khác nhau giữa các khung hình với nhau, 3d denoiser kết hợp cả spatial lẫn temporal. dfttest() là một filter 3d.
Bằng cách khử noise đúng cách, 1 đoạn video có thể giảm filesize từ 10 % - 20 % mà không mất đi chất lượng.
Vậy maa() để làm gì? maa() là một filter khử răng cưa và có hiệu ứng làm mờ nhẹ, mình thêm vào để đoạn video mướt hơn, ví dụ:
Hình gốc Hình qua xử lí bởi maa()
Để thêm 1 filter nữa vào video bạn cứ xuống dòng gõ lệnh thôi, ví dụ:
Code:
FFMpegSource2("Video.mp4")
dfttest()
deen()
maa()
LimitedSharpenFaster()
5. Kiểm soát filter

Tuy nhiên, như các bạn thấy filter như ở trên sẽ làm video mờ đi hẳn, ta không muốn trường hợp này xảy ra, cho nên các bạn phải chỉnh lại filter sao cho video đừng mờ đi quá nhiều trong khi vẫn khử được noise.
Bây giờ ta hãy thay 2 dòng filter hồi nãy bằng 1 lệnh duy nhất:
Code:
FluxSmoothST(7,7)
Hình đã khử noise bằng fluxsmoothst(7,7)
Lưu ý rằng hình này khử noise ít hơn hẳn, tuy nhiên nếu ra so sánh kết quá này với tấm hình khử bằng dfttest() lúc nãy thì hình này đỡ mờ hơn hẳn và hầu như không thay đổi gì so với hình gốc ban đầu.
Đây chính là một điểm cần lưu ý khi encode, phải filter sao cho đừng khác quá nhiều so với bản gốc trong khi vẫn khử được noise.
Trong thư mục \Avisynth 2.5\plugins\store\ mình có lưu giữ các file readme của các filter để các bạn học chỉnh param mạnh yếu cho filter. Ví dụ như trong trường hợp này, mình có thể tăng param lên chút để filter nhiều hơn tí nữa bằng cách thay FluxSmoothST(7,7) bằng:
Code:
FluxSmoothST(10,10
6. Giới thiệu 1 số filter các bạn có thể xài
Các filter này có sẵn trong gói plugin mình up.
các bạn vô tư thử nghiệm nhá, có thể kết hợp nhiều filter nữa
Denoisers
FFT3DFilter
dfttest
removegrain
ttempsmooth
fluxsmoothst
deen
medianblur
mc_spuds
MDeGrain

Sharpener
LimitedSharpenFaster
FastLineDarkenMod

Khử răng cưa
maa
daa
ediaa


7. Tham khảo thêm
Tất nhiên, những gì mình vừa mới bày ở trên chỉ là phẩn nổi của tảng băng thôi Avisynth vô cùng mạnh và còn vô số công dụng khác nữa. khi nào rảnh mình sẽ bày tiếp cách xài các filter, các mẹo, các trường hợp nào xài filter nào vâng vâng

Các bạn có thể tham khảo thêm tại đây:
Tổng hợp các filter cho avisynth
Sickos Alliance Avisynth Thread
AnimeMusicVideos.org tutorial, chỗ mà ngày xưa mình học avisynth:
IVTC and DVDRipping
AVS Processing
__________________

Từ http://vnsharing.net/forum/showthread.php?t=424223