ไม่เป็นไร. เราได้เรียนรู้วิธีใช้ตัวกรอง VirtualDub เพื่อปรับขนาดวิดีโอเมื่อไม่กี่สัปดาห์ที่ผ่านมา นอกเหนือจากความต้องการด้านความสวยงามเพียงอย่างเดียวและความต้องการที่จะทำให้สื่อที่ส่งออกของคุณมีขนาดเล็กลง การปรับขนาดวิดีโออาจดูเหมือนไม่สำคัญ แต่จะเกิดอะไรขึ้นถ้าคุณมีความต้องการพิเศษ เช่น การสร้างวิดีโอสโลว์โมชั่นที่มีสัญลักษณ์แสดงหัวข้อย่อย และซอฟต์แวร์ที่ต้องใช้รูปแบบและขนาดบางอย่าง
ไม่ต้องกังวล เราได้เอาชนะอุปสรรคนั้นไปแล้วในบทช่วยสอนล่าสุด และวันนี้ฉันจะแสดงวิธีสร้างวิดีโอสโลว์โมชั่น มี VirtualDub และเราจะมาทำความรู้จักกับโปรแกรมสุดหล่ออีกตัวที่ชื่อว่า AviSynth โปรแกรมนี้เป็นโปรแกรมอรรถประโยชน์ที่มีประสิทธิภาพสำหรับขั้นตอนหลังการผลิตวิดีโอ ไม่มีส่วนหน้า ซึ่งหมายความว่าคุณจะต้องปักหลักกับบรรทัดคำสั่งและสคริปต์ Oooh ฟังดูน่ากลัว แต่ไม่ต้องกังวล ฉันจะทำให้มันง่าย
AviSynth การติดตั้ง การจัดเตรียม การกำหนดค่า
ก่อนที่เราจะเริ่มใช้ VirtualDub เราต้องกำหนดค่า AviSynth ดาวน์โหลดและติดตั้งค่อนข้างง่าย แต่เรายังต้องการปลั๊กอินพิเศษที่เรียกว่า mvtools ซึ่งไม่สามารถใช้ได้กับแพ็คเกจพื้นฐาน เมื่อเสร็จแล้ว คุณก็พร้อมที่จะใช้ AviSynth
การใช้ AviSynth
ไม่มีฟรอนท์เอนด์ (GUI) ไม่มีวิธีที่หรูหราหรือง่ายในการทำสิ่งต่างๆ ให้เสร็จ ถึงกระนั้นคุณก็ไม่ต้องกลัวบรรทัดคำสั่ง เปิดโปรแกรมแก้ไขข้อความและเริ่มเขียนคำสั่ง - หรือค้นหาสคริปต์ที่พร้อมใช้งานบนเว็บแล้วคัดลอกไป ฉันไม่ใช่ผู้เชี่ยวชาญ แต่ฉันสามารถอ่านโค้ดและ google ในแบบของฉันได้
ฉันพบสคริปต์สโลว์โมชั่นที่ Nerds Central และปรับให้เข้ากับการใช้งานของฉันเอง ผู้เขียนอธิบายรายละเอียดว่าสคริปต์ทำอะไร ดังนั้นจึงมีประเด็นเล็กน้อยที่จะต้องอ่านคำสั่งและอธิบายทีละคำสั่ง เพียงจำไว้ว่า AviSynth เป็นภาษาโปรแกรมแบบ de-facto ที่มีไวยากรณ์ของตัวเอง ถ้าคุณรู้จักหนึ่ง คุณจะรู้ทั้งหมด
นี่คืองานของฉัน โดยพื้นฐานแล้วเหมือนกับตัวอย่างด้านบน:
LoadPlugin("เส้นทางไปยัง mvtools.dll")
source=AVISource("เส้นทางไปยัง source.avi", เท็จ)
oSource=แหล่งที่มา
แหล่งที่มา =ConvertToYV12 (แหล่งที่มา)
ที่มา =AssumeFPS (แหล่งที่มา 25)
back_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) # ครึ่งหนึ่งของขนาดบล็อก 8
back_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,
ย้อนกลับ_vec2,ส่งต่อ_vec2,จำนวน=250,idx=1,idx2=2)
fSource=สมมติ FPS(fSource,25)
กลับ fSource
อย่างไรก็ตาม มีคำแนะนำบางประการซึ่งเรียกร้องความสนใจจากคุณ:
คุณจะต้องชี้ไปที่ mvtools.dll และไฟล์ต้นฉบับให้ถูกต้อง อย่างที่สอง มีคำแนะนำในการแปลงซอร์สเป็นรูปแบบ YV12 คุณสามารถแก้ไขบรรทัดนี้ได้หากไฟล์ของคุณอยู่ในรูปแบบที่ถูกต้อง - หรือใช้ VirtualDub
แหล่งที่มา=ConvertToYV12(แหล่งที่มา)
คุณรู้ได้อย่างไรว่าสิ่งของ YV12 นี้คืออะไร? หรือทำไมคุณถึงต้องการมัน? คำตอบคือ คุณไม่จำเป็นต้องใช้จริงๆ แต่มันดีสำหรับการประมวลผลวิดีโอ ในแง่ที่เกินบรรยายซึ่งน่าจะสร้างความประทับใจให้กับคุณ YV12 เป็นรูปแบบเชิงระนาบ หมายความว่าสำหรับแต่ละภาพ ข้อมูล luma สำหรับพิกเซลทั้งหมดจะถูกเก็บไว้ตามลำดับ ตามด้วยข้อมูลสี ซึ่งเหมาะสำหรับเทคนิคการประมวลผลภาพ ตอนนี้ลืมประโยคสุดท้ายนี้
อย่างไรก็ตาม สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบที่รองรับ YV12 คำถามที่พบบ่อย AviSynth คือเพื่อนของคุณ โดยทั่วไปแล้ว MPEG-4 ที่มี XviD ควรทำงานได้ดี
หากคุณทำข้อผิดพลาดนี้ด้วยเหตุผลบางอย่าง คุณจะได้รับข้อผิดพลาดนี้เมื่อคุณพยายามโหลดสคริปต์ใน VirtualDub - สำหรับวิธีที่คุณทำอย่างนั้น เราจะเห็นในไม่ช้า:
ถัดไป ใช้ FPS สำหรับแหล่งที่มา การตั้งค่าอัตราเฟรมที่เหมาะสมยังช่วยสร้างเอาต์พุตที่ดีที่สุดโดยไม่ต้องเดา วิธีนี้จะช่วยคุณสร้างวิดีโอเอาต์พุตตามที่คุณคาดหวัง โดยไม่ต้องผ่านการปรับอัตราเฟรมขึ้นและลงซ้ำหลายรอบ
การครอบตัด
นี่เป็นเรื่องยุ่งยาก หากคุณมีไฟล์วิดีโอที่มีความกว้างซึ่งไม่สามารถหารด้วย 4 ลงตัวได้ คุณจะได้รับข้อผิดพลาดจาก VirtualDub ขณะพยายามโหลดสคริปต์ โดยบ่นเกี่ยวกับเลขคณิตนี้:
คุณอาจตัดสินใจที่จะแสดงความคิดเห็นเกี่ยวกับบรรทัดพารามิเตอร์ที่ครอบตัดในสคริปต์ของคุณ ซึ่งอาจใช้งานได้ แต่ให้แน่ใจว่าตรรกะของสคริปต์ของคุณเปลี่ยนไป ดังนั้นคุณจะไม่จบลงด้วยตัวแปรที่ไม่ได้กำหนดใดๆ:
แต่ที่ดีกว่านั้น ปรับขนาดวิดีโอของคุณใน VirtualDub โดยใช้ตัวกรองปรับขนาด! ซึ่งเป็นสิ่งที่เราได้เรียนรู้ในครั้งที่แล้ว! ตอนนี้คุณรู้แล้วว่าทำไมเราถึงทำอย่างนั้น
พารามิเตอร์ MVFlowFPS2 จะกำหนดจำนวนเฟรมของวิดีโอที่ช้าลงของคุณ อย่างไรก็ตาม การช้าลงจริงขึ้นอยู่กับอัตราเฟรมที่ส่งออก ในที่สุด ให้ความสนใจกับเอาต์พุต AssumeFPS เพราะท้ายที่สุดแล้วสิ่งนี้จะเป็นตัวกำหนดว่าวิดีโอของคุณจะเร็วหรือช้าเพียงใด รวมถึงความยาวและขนาดด้วย คุณสามารถเล่นกับพารามิเตอร์นี้ได้มากเท่าที่คุณต้องการ เพื่อดูว่าอะไรให้ผลลัพธ์ที่ดีที่สุด
fSource=สมมติFPS(fSource,25)
โหลดสคริปต์ใน VirtualDub
อันที่จริง ข้อผิดพลาดที่แสดงด้านบนจะไม่แสดงจนกว่าคุณจะบันทึกไฟล์ข้อความเป็นสคริปต์ที่มีนามสกุล .avs และเปิดใน VirtualDub เช่นเดียวกับที่คุณเปิดไฟล์อื่นๆ หากคุณไม่มีข้อผิดพลาด วิดีโอจะโหลดโดยมีการแทรกเฟรมบางส่วน ตัวอย่างข้างต้นให้ปัจจัย x10 แต่คุณสามารถทำงานกับ FPS จำนวนเท่าใดก็ได้เพื่อเปลี่ยนแปลง เช่น x2, x5 เป็นต้น
ผลลัพธ์สุดท้าย
ผลงานชิ้นสุดท้ายของฉันกับ AviSynth มีอยู่ใน Youtube เชื่อมโยงหนึ่งและสอง ดังนั้นโปรดแวะมาตรวจสอบคุณภาพงานของฉัน คุณอาจสนใจแกลเลอรีการออกแบบภายในที่มีวิดีโอเหล่านี้
คุณจะสังเกตเห็นว่ามีการเบลอที่ขอบของวิดีโอ เนื่องจากการแก้ไขระหว่างเฟรม การบันทึกดั้งเดิมเป็นการรวมเฟรมของกล้องเดี่ยว ทำซ้ำเป็น 25 เฟรมต่อวินาที จากนั้นลดความเร็วลงสิบครั้ง ดังนั้นคุณจึงมีซอฟต์แวร์เติมช่องว่างโดยประมาณ 250 ครั้งระหว่างเฟรม ซึ่งไม่ใช่เรื่องง่ายๆ คุณจะได้ผลลัพธ์ที่ดีขึ้นมากด้วยวิดีโอภาพเคลื่อนไหว ซึ่งมีการเบลอบางส่วนอยู่แล้ว และคาดว่าจะเกิดขึ้นในกรณีเหล่านี้
แต่ฉันคิดว่ามันเป็นงานที่ดี ตอนนี้คุณรู้วิธีการทำแล้ว
สรุป
ไปแล้ว บทเรียนมัลติมีเดียอื่นที่หั่นเป็นลูกเต๋า ตอนนี้คุณเป็นพ่อครัววิดีโอแล้ว พูดตามตรง VirtualDub เป็นเครื่องมือที่ทรงพลังและขยายได้สูงสำหรับการทำงานกับไฟล์มีเดีย รวมถึงตัวกรองทุกประเภท เมื่อใช้ร่วมกับ AviSynth คุณสามารถเลือก Matrix ที่น่าประทับใจ หรือถ้าคุณชอบ John Woo เอฟเฟกต์ในวิดีโอโฮมเมดของคุณ เอาชนะเพื่อนบ้านและเพื่อนร่วมงานของคุณ
AviSynth ไม่ใช่ยูทิลิตี้ที่ง่ายที่สุด เพราะมันไม่มี GUI แต่ก็ใช้งานได้ดี เพียงจำวิธีการเลเยอร์พื้นฐาน ใช้ VirtualDub สำหรับการเปลี่ยนแปลงและการแก้ไขระดับแรก ตลอดจนการประมวลผลและการแปลงรหัสเพิ่มเติม จากนั้น ใช้ตัวกรองที่มีอยู่เพื่อให้ได้เอฟเฟกต์พิเศษ สุดท้าย ใช้โมดูลของบุคคลที่สามสำหรับการปรับแต่งขั้นสุดท้าย นั่นคือทั้งหมด มีความสุข.
ไชโย