ดีแล้ว เราเรียนรู้ไปไม่กี่สัปดาห์ วิธีใช้ VirtualDub filters resize videos นอกจาก purely aesthetic need และอาจจะ desire ทำ output media เล็กลง resizing อาจไม่ดูสำคัญ แตถ้าคุณมี very special need เช่น สร้าง bullet-time slow-motion videos และ software ที่ทำได้แค่นั้น ต้องการ certain formats และ sizes?
No worries เรา overcome obstacle นั้นใน tutorial ล่าสุด และวันนี้ ผมจะแสดงวิธีสร้าง slow motion videos มี VirtualDub และเราจะรู้จักอีก handsome program ชื่อ AviSynth โปรแกรมนี้ powerful utility สำหรับ video post-production ไม่มี frontend หมายความว่าคุณต้องพอใจกับ command-line และ scripts Oooh ดู scary แตไม่ต้องกังวล ผมจะทำให้ simple
AviSynth: การติดตั้ง, การเตรียม, การกำหนดค่า
ก่อนเริ่มใช้ VirtualDub เราต้อง config AviSynth Download และ install ค่อนข้าง simple แตเราต้องการ extra plugin ชื่อ mvtools ที่ไม่ available กับ basic package เมื่อทำเสร็จ คุณพร้อมใช้ AviSynth
การใช้ AviSynth
No frontend (GUI) ไม่มี fancy หรือ easy way ได้ things done ยังคง ไม่ต้อง afraid of command line เปิด text editor และเริ่มเขียนคำสั่ง — หรือหา ready scripts บนเว็บและ copy มา ผม NO expert แตผมอ่าน code และ google ทางของผม
ผมหา slow-motion script ที่ Nerds Central และ adapt ให้ใช้ของผม ผู้เขียนอธิบายรายละเอียดว่าสคริปต์ทำอะไร จึงไม่ต้องไปผ่านคำสั่งทีละอันอธิบาย จำไว้ว่า AviSynth เป็น de-facto programming language ด้วย syntax ของตัวเอง หากคุณรู้หนึ่ง คุณรู้ทั้งหมด
นี่คืองานของผม 基本上 identical กับตัวอย่างด้านบน:
LoadPlugin("Path to mvtools.dll")
source=AVISource("Path to source.avi",false)
oSource=source
source=ConvertToYV12(source)
source=AssumeFPS(source,25)
backward_vec=source.MVAnalyse(isb=true,truemotion=true,pel=2,idx=1)
forward_vec=source.MVAnalyse(isb=false,truemotion=true,pel=2,idx=1)
cropped=source.crop(4,4,-4,-4) # by half of block size 8
backward_vec2=cropped.MVAnalyse(isb=true,truemotion=true,pel=2,idx=2)
forward_vec2=cropped.MVAnalyse(isb=false,truemotion=true,pel=2,idx=2)
fSource=source.MVFlowFps2(backward_vec,forward_vec,
backward_vec2,forward_vec2,num=250,idx=1,idx2=2)
fSource=AssumeFPS(fSource,25)
return fSource
อย่างไรก็ตาม มี pointers หลายอย่างที่ขอความสนใจ:
คุณต้อง point ไป mvtools.dll และ source file ให้ถูกต้อง สอง มี instruction ให้ convert source เป็น YV12 format คุณสามารถ edit บรรทัดนี้หากไฟล์ของคุณอยู่ใน right format แล้ว — หรือใช้ VirtualDub
source=ConvertToYV12(source)
คุณรู้ไหมว่า YV12 thingie นี้คืออะไร? หรือทำไมต้องการมัน? คำตอบคือ คุณไม่ really need it แตดีสำหรับ processing video ใน geeky terms ที่ควร impress คุณ YV12 เป็น planar format หมายความว่าสำหรับแต่ละภาพ luma data สำหรับทุก pixels จะ stored consecutively ตามด้วย chroma data ซึ่ง ideal สำหรับ image processing techniques ตอนนี้ ลืมประโยคสุดท้ายนี้
ไหนๆ AviSynth FAQ เป็นเพื่อนของคุณ สำหรับข้อมูลเพิ่มเติมว่ารูปแบบไหน support YV12 โดยทั่วไป MPEG-4 ด้วย XviD ควรทำงานได้ดี
หากคุณได้อันนี้ผิดเพราะบางเหตุผล คุณจะได้ error นี้ตอนพยายาม load script ใน VirtualDub — ต่อไปเราจะเห็นว่าทำอย่างไร exactly:
Cropping
นี่คือ tricky one หากคุณมีไฟล์วิดีโอที่ width ไม่หารด้วยสี่ลงตัว คุณจะได้ error จาก VirtualDubl ขณะพยายาม load script ร้องเรียนเรื่อง arithmetic thingie นี้:
คุณอาจตัดสินใจ comment out cropped parameter line ใน script ซึ่งอาจ work แตให้แน่ใจว่า logic ของ script เปลี่ยนไป ดังนั้นคุณไม่สุดท้ายกับ undefined variables
แตดีกว่า resize วิดีโอใน VirtualDub ใช้ resize filter! ซึ่งเป็นสิ่งที่เราเรียนรู้ครั้งล่าสุด! ตอนนี้คุณรู้ว่าทำไมเราทำมัน
MVFlowFPS2 parameter จะกำหนดว่าวิดีโอ slowed-down ของคุณจะมี frames กี่เฟรม อย่างไรก็ตาม actual slowdown ขึ้นอยู่กับ output framerate จริงๆ สุดท้าย 注意 output AssumeFPS เพราะนี่จะ ultimately กำหนดว่าวิดีโอของคุณจะเร็วหรือช้าแค่ไหน รวมถึง length และ size คุณสามารถเล่นกับ parameter นี้ได้มาก เพื่อดูว่าอะไรให้ best result
fSource=AssumeFPS(fSource,25)
Load script ใน VirtualDub
ใช่ ไม่มี errors ที่แสดงด้านบนจะ show จนกว่าคุณจะ save text file เป็น script ด้วย .avs extension และเปิดใน VirtualDub เหมือนเปิดไฟล์อื่นๆ หากไม่ทำ errors วิดีโอจะโหลด พร้อม certain factor ของ frames insert ตัวอย่างด้านบนให้ x10 factor แตคุณทำงานกับ FPS ใดก็ได้เพื่อเปลี่ยน เช่น x2, x5, ฯลฯ
End result
Final cuts ของงานผมกับ AviSynth อยู่บน Youtube Link one and two โปรด hop by และเช็ก quality ของงานผม คุณอาจสนใจ interior design gallery ที่ feature วิดีโอเหล่านี้
คุณจะสังเกตเห็น blurring ที่ขอบของวิดีโอ เพราะ interpolation ระหว่าง frames การบันทึกต้นฉบับเป็น collection ของ single camera frames resampled ไป 25 frames per second แล้ว slowed down สิบเท่า ดังนั้นคุณมีซอฟต์แวร์ fill gaps ประมาณ 250 ครั้งระหว่าง frames ซึ่งไม่ใช่ simple deal คุณจะได้ผลลัพธ์ดีกว่ากับ motion videos ซึ่งมี blurring อยู่แล้ว และคาดหวังในกรณีเหล่านี้
แตเดาได้ว่า decent work คุณรู้วิธีทำแล้ว
สรุป
ไปแล้ว อีก multimedia tutorial sliced and diced ตอนนี้คุณคือ video sous-chef seriously VirtualDub เป็น very powerful และ highly extensible tool สำหรับทำงานกับ media files รวมถึง filters ทุกชนิด ร่วมกับ AviSynth คุณสามารถไปสู่ impressive Matrix หรือถ้าชอบ John Woo effects ใน home-made videos ของคุณ bettering เพื่อนบ้านและเพื่อนร่วมงาน
AviSynth ไม่ใช่ simplest utility เพราะขาด GUI แตมันทำงานได้ดี จำแนวคิด basic layered approach ใช้ VirtualDub สำหรับ first-level changes และ fixes และ additional processing และ transcoding ต่อมา ใช้ available filters เพื่อ extra effects สุดท้าย ใช้ third-party modules สำหรับ final touches ไปแล้ว นั่นคือทั้งหมด สนุกกันเถอะ
ขอแสดงความนับถือ