Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> ซอฟต์แวร์

How I Created a High-Quality Frankenstein Film: Step-by-Step Guide

ตอนนี้คุณดูหนัง Frankenstein คุณภาพ Avatar ของผมแล้ว และอาจสงสัยว่าผมทำยังไง ไม่ต้องกังวล วันนี้ผมจะสอนทุกอย่าง ให้คุณเปลี่ยนจาก Multimedia-noob สู่ Movie Director และ Editor ระดับสูง พонятว่า ยังต้องมี Idea แต่ถ้า Effects ถูก คุณจะโดนใหญ่

พูดถึง Video Capture, Editing, Merging Clips, เปลี่ยน Audio/Video Codecs, Size และ Bitrate, Embed Subtitles, สร้าง Effects อย่าง Fade Out, Sepia, Old Movie และอื่นๆ สร้าง Short Animations จาก Still Images และอีกมากมาย ในบทความนี้ ผมจะ Walk Through ผลิตภัณฑ์ Phenomenal ของผม และแสดง Tools และ Gadgets ที่ต้องการเป็น Media Mogul ดีที่สุด ทั้งหมด Free และรันบน Linux!

How I Created a High-Quality Frankenstein Film: Step-by-Step Guide

ติดตามมา

Record Your Project

ผมบันทึกโปรเจกต์ด้วย Canon PowerShot A520 Resolution 640x480px หลาย Takes ต่อฉาก เพื่อให้ได้ Take ที่สมบูรณ์แบบ สำหรับ Final Movie การบันทึกใช้เกือบ 2 ชั่วโมง รวมการเตรียมการละเอียดอ่อน การหา Props ใช้หลายวัน แต่ไม่เกี่ยวกับ Multimedia Part โดยตรง มากกว่า Idea ของโปรเจกต์

ประกอบส่วนต่างๆ (Piece All Parts Together)

จบการถ่ายทำ ดาวน์โหลดหนัง ถ้าต้องการช่วยเหลือ ดู digiKam งานแรกคือเลือก Parts ที่ถูกต้อง และ Splice รวมกัน Trim Frames ที่ไม่ต้องการต้นและท้ายแต่ละคลิป ใช้ Avidemux วัตถุประสงค์นี้ ไม่ได้เปลี่ยน Encoding แค่ Basic Trim และ Shave

ทางเลือก ถ้าไม่สะดวกกับ Avidemux ลอง VirtualDub Interface Friendly สำหรับ Trimming ทำงานได้ดีผ่าน Wine

เมื่อ Parts เรียบร้อย รวมเข้าด้วยกัน หลายวิธีทำใน Linux ผมคิดว่าวิธีเร็วและง่ายที่สุดคือ Mencoder ถ้ายังไม่ติดตั้ง หยิบจาก Repositories เนื่องจากทำบน Ubuntu Sequence ที่ถูกต้อง:

sudo apt-get install mencoder

แล้ว:

mencoder -oac copy -ovc copy p1.avi p2.avi p3.avi -o out.avi

Options -oac และ -ovc ระบุ Audio และ Video Codecs ตามลำดับ ใช้ Copy = Direct Stream Data โดยไม่ Manipulate -o Flag ระบุ Output File ลำดับ Parts ที่ Splice มีความหมาย วางแผนดีๆ จดจำ Command นี้ไม่ทำงานถ้า Parts มี Framerate, Bitrate หรือ Codecs ต่างกัน ดังนั้นควร Manipulate เพิ่มเติมหลังจาก Combine Parts แล้ว จะเห็นตัวอย่างภายหลัง รวมถึงวิธีแก้

ขั้นตอนต่อไป Basic Manipulation ด้วย Avidemux

Avidemux โปรแกรมทรงพลัง ฟังก์ชันเยอะ ใช้เปลี่ยน Container Format, Codec และ Post-processing Filters หลายอย่าง Enhance Audio/Video แต่ Kdenlive ทรงพลังกว่าสำหรับ Video ดังนั้นผมทิ้ง Complex Tasks ไว้ภายหลัง ตอนนี้แค่เปลี่ยน Framerate และ Codec โดยไม่สัมผัส Encapsulating Format โอเค โปรดสังเกตความแตกต่างที่ Subtle แต่ Critical AVI, MPEG, MKV เป็น Video Formats แต่ไม่บอกว่าข้อมูล Video Encode/Decode อย่างไร นั่นคือสิ่งที่ Codec ทำ

Kdenlive

ก่อนหนัง Frankenstein ผมไม่เคยใช้ Kdenlive ผม Surprised มากกับ Simplicity และ Power โดยไม่อ่าน Manual เลย ทำ Tasks ทั้งหมดได้ด้วยการ Fiddle กับ Menu Options ที่ Friendly และ Intuitive

ขั้นตอนที่อาจไม่ Trivial สำหรับ New Users คือ Project File ไม่ใช่ Video เอง แต่ Project คือ Collection ของ Audio และ Video Tracks รวมกันเป็น Media Files หนึ่งหรือมากกว่า เริ่มทำงานหนัง ต้อง Import Clip เข้า Project หลัง Select จะสามารถ Manipulate เริ่มได้

ใน Effects List เลือก Audio และ Video Effects หนึ่งหรือมากกว่า Double-click Effect เพื่อ Add ใน Left Pane คลิก Effects Stack สลับ View จาก Project Tree สามารถ Select/Unselect Stacked Effects หรือ Fine-tune Options ใน Project Monitor Pane ขวา จะ Play Clip และดูว่า Effects ส่งผลอย่างไร

ผมเลือก Effects หลายตัว รวมถึง Pitch Shift, Oldfilm, Scratchlines, Technicolor, Sepia ลำดับ Effects สำคัญ เพราะ Effect ใหม่จะทำงานบน Layer ที่เปลี่ยนไปแล้ว จบ Effects แล้ว Render

The Rendering Thingie

ขึ้นอยู่กับ Codecs ที่ติดตั้ง จะมี Output Formats หนึ่งหรือมากกว่า รวม Video Size และ Framerate อีกครั้ง ส่วน Non-intuitive ของ Kdenlive คือ Rendering จริง ดูเหมือนไม่มี Start Button ที่ไหน แต่ถ้าคลิก Render to File Dropdown เลือก Render to File หรือ Generate Script Project จะ Process และ Output Video เซฟ

ตอนนี้เรามีหนังเต็มไปด้วย Audio/Video Effects แต่มันยังไกลจาก Complete ต้องเพิ่ม Subtitles และ Intro Clip แทนที่จะ Blast Experiment ทันที ผมตัดสินใจเพิ่ม Transition Pieces 2 ชิ้น ~3 วินาที แต่ละอัน อ่าน Dedoimedo และ Whatnot เหมาะกับ High-quality Production อย่างของผม แต่ก่อน ลองเล่นกับ Subtitles

Subtitles, Subtitle Editor

เคยเห็น Subtitle Editor มัน Handsome, Friendly ทำสิ่งที่ต้องการ ระบบลับของ Subtitles คือ Subtitles คือ Special Text Files ธรรมดา ไฟล์ธรรมดาที่มี Tagged Text บอก Video Programs เมื่อไหร่แสดงประโยคไหน และนานแค่ไหน บนหน้าจอ ง่ายแค่นั้น ทราบแล้ว การสร้าง Subtitles ดีคือเรื่องรู้ 2 ภาษา และ Timing ให้ถูก โปรแกรมด้านบนจะทำให้

Load Movie ด้วย External Player แล้ว Scroll ไปฉากที่เกี่ยวข้อง BTW Default External Player คือ MPlayer ติดตั้งก่อนเพื่อ Smooth แล้วใน Bottom Panel พิมพ์ข้อความ และระบุ On-screen Duration

อาจต้องลองหลายครั้งให้ถูก ให้แน่ใจ Subtitles ไม่ค้างนานเกินไป - หรือเร็วเกินไป ถ้าไม่สะดวกกับ Subtitle Editor ทำงานใน Text Editor ใดๆ ได้ Subtitle Files ต้องมี Extension .sub หรือ .srt มี Types อื่นๆ แต่สองตัวนี้พอใช้

ก่อน Burn In Subtitles ทดสอบงานใน Player ที่อ่าน Subtitles ได้ เช่น VLC ตอนนี้ ควร Aim สำหรับ Slight Lost-in-translation Effect และ Deliberate Make Puns ควร Phrase บางประโยคแปลกๆ ให้มี Foreign Tingle ไม่งั้นจะไม่ Authentic

ฝัง Subtitles (Embed Subtitles)

พอพอใจกับ Subtitles Work มาถึงเวลา Embed สองวิธี วิธีเร็ว Command Line วิธีช้าที่ Newb-friendly ใช้ Avidemux จะดูทั้งคู่

Hard Way

ก่อน Hard Way

transcode -i movie.avi -x mplayer="-sub movie.srt" -o movie-sub.avi -y xvid

Transcode โปรแกรม Neat อีกตัว ทำง่าย -i Input File -x บอก Program Import Subtitles ใช้ Mplayer ต้องมี Mplayer ติดตั้ง -sub movie.srt ระบุ Type Import (Subtitles) และชื่อไฟล์ Subtitles -o Output -y xvid บอก Transcode Encode Output ใน Xvid Codec นี่คือ Codec Manipulation ครั้งแรก จดจำว่า بعض Video Formats และ Codecs ไม่รองรับ Embedded Subtitles อาจต้องอ่านเพิ่ม

Easy Way

ตอนนี้ Easy Way Avidemux

หลังเลือก Encapsulating Format และ Codec คลิก Filters อีกครั้ง ใน Available Filters ไป Subtitles > Subtitler คลิก Configure เพื่อเปลี่ยน

Config Subtitles ต้องระบุ Subtitles File AND Font โดยไม่มี Font ไม่ได้ทำงาน ต้องเลือก TrueType Font (TTF) เช่น Arial ถ้าไม่รู้ Fonts อยู่ไหน Search ได้ เช่น Command Line updatedb Update Local Database ก่อน แล้ว locate <font name> หา Font ที่ต้องการ

ระวังตอนเปลี่ยน Initial Delay แนะนำไม่ควรทำ เพื่อหลีกเลี่ยง Sync Problems โดยเฉพาะถ้า Timing Subtitles ถูกต้องแล้ว ถ้า Video ยาวมาก และ Subtitles Offset ไปไม่กี่วินาที ค่อย Consider Delay สุดท้ายเลือก Font Color, Size และ Subtitles Position

ตอนนี้ Save Video และ Test Output

Intro Transition

โอเค ตอนนี้ต้องการ Intro Transition ในกรณีของผม คือ Dedoimedo presents, The Frankenstein Experiment แต่อยากทำด้วย Style สิ่งแรก สร้าง Static Images ใน GIMP ไม่ Fancy แค่ Black Background ขนาดเท่า Output Video พร้อม White Text เขียนและ Center เซฟสองสไลด์แยกกัน

ตอนนี้ แปลง Static Image เป็น Video ยังไง?

คำตอบง่าย ถ้าคิด Video คือ Collection ของ Still Images สิ่งที่กำหนดจำนวน Still Images คือ Frame Rate เช่น 24 fps = 24 Images ใน 1 วินาที Playback ไม่ต้องมากกว่า เพราะตาไม่เห็นเร็วกว่า นั่นคือ Subiminal Messages

ผมสร้าง 72 Identical Images แต่ละ Slide และ Transcode เป็น Movie อาจใช้แค่ 3 รูป ตั้ง Framerate 1 Frame Per Second แต่ต้อง Correct Framerate ภายหลัง ดังนั้นเลือก Consistency แม้จะมี Images มากขึ้น Pollute Work Directory ไม่ได้ Copy Manual ใช้ Bash Script เล็กๆ

#!/bin/bash
for i in {1..72} # 24 fps, 3 seconds
do cp $1.png $1.$i.png
done
exit 0

Run: ./script.sh filename (ไม่ต้อง Extension สมมติ .png)

หลัง Images Ready Transcode อีกครั้ง Mencer ช่วยอีก

mencoder mf://*.png -mf type=png:w=640:h=480:fps=24 -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o intro1.avi

ตอนนี้คุณควร Familiar และ Cozy กับ Tool อันทรงพลังนี้ ถ้า Peek Manpage Mencoder จะเรียนรู้ mf ระบุ Image File Manipulation Filter ตามต้องการ -mf บอก Image Type, Size และ Framerate -ovc lavc บอกใช้ libavcodec -lavcopts Video Codec Options Stream Audio ทั้งหมด Output File intro1.avi ตัวอย่างคล้ายๆ ผมมีใน Manpage

ผมเลือก Codec ต่างกัน และไม่ทำอะไรกับ Audio Codec โดยเจตนา เพราะอยากโชว์ Cool Tricks เพิ่มเติมภายหลัง แม้จะทำให้ Complicated ใน Long Run แต่ช่วยเข้าใจปัญหาที่อาจเผชิญและวิธี Overcome

Redo Effects ใน Kdenlive สำหรับ Intro Pieces

ทำซ้ำทั้งสอง Slides ตอนนี้มี Intro 2 ชิ้น 3 วินาที แต Standalone ไม่มี Effects Applied เปิด Kdenlive อีกครั้ง Effect เหมาะสำหรับ Intro Slides คือ Fadeout จะใช้ บวก Standard Effects ใน Experiment Movie รวม Sepia, Old Movie, Scratch Lines และอื่นๆ

รวมทั้งหมดเข้าด้วยกัน (Combine All Together)

ตอนนี้มี 2 Intro Pieces และ Main Movie ดูเหมือน Encode เหมือนกันมาก แต่พยายาม Mencoder รวม จะเห็น Errors หลายอย่าง ไม่ต้องกังวล จะแก้ปัญหาทั้งหมดด้วย ffmpeg ครั้งนี้ ใช้ Audio และ Video Encoding เดียวกันสำหรับทุก Pieces ก่อน Splice

ffmpeg -i part1.avi -vcodec mpeg4 -s 640x480 -r 24 -b 2200 -acodec mp2 -ar 44100 -ab 64000 -ac 2 part1-fixed.avi

เราเรียนรู้ ffmpeg แล้ว ไม่ต้อง linger บน Options ทำซ้ำทุก Parts แล้ว Mencoder Galore:

mencoder -oac copy -ovc copy part1.avi part2.avi part3.avi -o frankenstein.avi

Final Video พร้อมและ Dandy

อีกครั้ง วิธีนี้ทำได้ด้วย Operations และ Tools น้อยกว่า หากคุณ Meticulous และ Careful ใช้ Audio/Video Formats และ Codecs เดียวกันตลอด Project แต่ถ้าต้องทำงานโปรเจกต์ที่คนต่างกันสร้าง มี Wide Set ของ Tools ช่วยรวมชิ้นส่วนต่างๆ

Job Done!

เพลิดเพลินกับ Masterpiece ตอนนี้!

อ่านเพิ่มเติม (More Reading)

อาจสนใจ Multimedia Manipulation Tutorials อื่นๆ ของผม มี Tutorial Flash Stuff รวม Download, Play, Convert, Extract, Tag แล้ว Video Tutorial ครอบคลุม Split, Join, Encode, Fix, Resample, Convert, Record สุดท้าย Audio Tutorial ครอบคลุม Convert, Split, Join, Change Gain, Tag, Record

จริงๆ เยี่ยมชม Multimedia Section ทั้งหมดสิ?

สรุป

และนี่คือจบ ขณะที่ Tutorials ส่วนใหญ่ ที่เขียนด้วยความคำนึงและรายละเอียด ให้ Valuable Info วิธีทำงาน บทความนี้ก้าวไปข้างหน้าหนึ่งขั้น แสดง Steps จริงที่สร้าง Awesome End-result

มันสาธิต Power ของ Linux, ความง่ายและ Accessibility ของ Tools ที่ต้องการงาน รอคุณใน Repositories, Flexibility, Beauty, Simplicity สุดท้าย คุณมี Real Thing ที่ Relate ได้ แทน Esoteric Examples ที่ไม่มีใครต้องการ

เคยสงสัยไหมว่าคุณสามารถเป็น Decent Multimedia User ได้หรือไม่ คำตอบคือ Yes คุณมี Tools Linux ให้ทั้งหมด ฟรี อยู่ที่นี่ สิ่งที่เหลือคือ Desire เรียนรู้ และ Imagination ทำ Cool Stuff นั้นผมช่วยไม่ได้ แต่น้อยที่สุด Technical Side ครอบคลุมแล้ว นี่แค่ต้นเริ่ม เริ่ม Explore และ World is Your Papaya

ขอให้สนุกกับการทำงาน!