วันอังคารที่ 20 พฤศจิกายน พ.ศ. 2550

สร้าง VCD จาก Clip Video

เกริ่นนำ


ได้ชมรายการทางวิทยาศาสตร์รายการหนึ่งของ NHK อยากจะเก็บไว้ประกอบการสอนนักศึกษา ก็ไปขวนขวายหา TV CARD (เขาเรียกกันอย่างนี้หรือเปล่านะ ไอ้การ์ดที่มีขั้วต่อสายอากาศแล้วทำให้ดูทีวีโดยใช้คอมพิวเตอร์ได้น่ะ) แล้วก็ save ไฟล์ไว้เป็น MPG รายการ 45 นาที ขนาดไฟล์ก็ประมาณ 500 MB อืม... ไหน ๆ ก็ต้อง BURN ลง CD แล้ว ก็น่าจะทำให้เป็น VCD Format ไปซะเลย ค้นไปค้นมาได้ความดังนี้

เครื่องมือที่ต้องใช้



  1. ffmpeg

  2. vcdimager

  3. cdrdao


การเตรียมไฟล์ MPEG เพื่อบันทึกลง VCD โดยใช้ ffmpeg


ในกรณีที่ไฟล์ที่ต้องการบันทึกลงไปนั้น เป็นไฟล์เดียว ไม่จำเป็นต้องแก้ไขปรับปรุงอะไรอีก ก็สามารถข้ามขั้นตอนนี้ไปได้เลย แต่โดยทั่วไปถ้าเป็นไฟล์ที่เราบันทึกมาจากรายการโทรทัศน์ อาจจะติดโฆษณา หัวรายการหรือท้ายรายการที่ต่อจากรายการที่เราต้องการบันทึกมาด้วย ก็ต้องตัดออก (Trim) ทำได้โดยใช้
ffmpeg

ถ้าไฟล์ต้นฉบับมีขนาด 60 นาที รายการที่ต้องการบันทึกจริง ๆ มีขนาด 45 นาที ส่วนต้นไฟล์ติดรายการอื่นมา 10 นาที ส่วนหางไฟล์ติดรายการอื่นมา 5 นาที ต้องการตัดหัวไฟล์และหางไฟล์นี้ออกไปก่อนบันทึกลง VCD ทำได้โดยใช้คำสั่ง

# ffmpeg -i infile.mpg -ss 0:10:00 -t 0:45:00 -target vcd outfile.mpg

ตัวเลือก -i หมายถึง ไฟล์ที่ตามหลังมานี้คือไฟล์ต้นฉบับ
ตัวเลือก -ss หมายถึง ให้ seek start ไปที่เวลา 0:10:00
ตัวเลือก -t หมายถึง ให้บันทึกไป 0:45:00 นับจากจุด ss
ตัวเลือก -target vcd หมายถึงไห้ปรับรูปแบบของไฟล์ MPEG ให้เหมาะสมกับการบันทึกลง VCD

พารามิเตอร์ตัวสุดท้ายก็คือชื่อไฟล์ปลายทาง

ในกรณีที่ไฟล์ต้นฉบับมีหลายไฟล์ ต้องการนำมารวมกันเป็นไฟล์เดียว ให้ใช้ ffmpeg จัดการให้ไฟล์เหล่านี้อยู่ในรูปแบบการเข้ารหัสเดียวกันเสียก่อน โดย

# ffmpeg -i infile1.mpg -target vcd outfile1.mpg
# ffmpeg -i infile2.mpg -target vcd outfile2.mpg

ตัวเลือกของ target นั้นจะเป็นอะไรก็ได้แล้วแต่คุณภาพที่เราต้องการ แต่ที่เลือก vcd เนื่องจากปลายทางของเราต้องการบันทึกไฟล์นี้ลง vcd เท่านั้นเอง จากนั้นนำไฟล์ทั้งสองมาต่อกันได้โดยตรงโดยใช้คำสั่ง cat

# cat outfile1.mpg outfile2.mpg > outfile.mpg

ก็เป็นอันว่าเรียบร้อย

จัดให้เป็นไฟล์สำหรับ VCD โดยใช้ vcdimager


ใช้คำสั่งเดียว ไม่มีตัวเลือกอะไรมากมาย

# vcdimager yourfile.mpg

จะได้ไฟล์เอาท์พุตออกมา 2 ไฟล์คือ videocd.bin กับ videocd.cue ซึ่งจะนำไปบันทึกลง VCD ต่อไป

yourfile.mpg ก็คือไฟล์ MPEG ที่ผ่านการเตรียม (ตัด ต่อ แต่ง) มาแล้ว ในกรณีที่เกิด error มีความเป็นไปได้ว่า target ใน ffmpeg ของท่านอาจไม่ใช่ VCD format (bitrate, sampling rate, frame rate ไม่ตรงกับข้อกำหนดของ VCD) ให้ใช้ ffmpeg แปลงให้เรียบร้อยเสียก่อน โดยใช้

# ffmpeg -i yourfile.mpg -target vcd your_new_file.mpg

แล้วค่อยนำ your_new_file.mpg ไปแปลงเป็นไฟล์ VCD โดยใช้คำสั่ง vcdimager ตามตัวอย่างข้างต้น

บันทึกไฟล์ลง VCD โดยใช้ cdrdao


ใช้คำสั่ง

# cdrdao write [device] [drive] videocd.cue

จะทราบค่า [device] กับ [driver] ได้โดยใช้คำสั่ง

# cdrdao drive-info

สำหรับเครื่องของผม device คือ /dev/cdrom และ driver คือ generic-mmc ดังนั้นคำสั่งจึงเป็น

# cdrdao write /dev/cdrom generic-mmc --speed 4 --force videocd.cue

ตัวเลือก --speed 4 กำหนดให้เขียนด้วยความเร็ว X4
ตัวเลือก --force บังคับให้โปรแกรมทำงานโดยไม่สนใจ error ที่ผมต้องใช้เพราะว่า CD-Writer ของผมมีปัญหาเรื่อง Power Calibration ถ้าเครื่องใครไม่มีปัญหานี้ไม่ต้องใส่ตัวเลือกนี้ก็น่าจะได้

เมื่อบันทึกลง VCD แล้วก็เป็นอันเสร็จกระบวน ถ้าอยากจะทดสอบจะลองใช้ xine ทดลองดู VCD ที่เพิ่งจะได้มานี้ดูก่อนจะนำไปลองกับเครื่องเล่น VCD ธรรมดาก็ได้

ส่งท้าย


ยินดีรับความคิดเห็นเพื่อปรับปรุงข้อเขียน เพื่อให้ข้อเขียนมีความถูกต้องและเป็นประโยชน์มากที่สุด