debian: ตัดต่อ dvd ด้วยบรรทัดคำสั่ง

โจทย์คือแปลงไฟล์วีดีโอจากแผ่นดีวีดี Double Layer 8.5G มาเป็นแผ่นดีวีดีธรรมดา 4.7G โดยให้คุณภาพภาพและเสียงคงเดิม

วิธีการคือจะคัดลอกไฟล์ vob มาตัดต่อแล้วเขียนกลับลงไปบนแผ่น 4.7G

ต้องการเครื่องมือคือ ffmpeg dvdauthor mkisofs (genisoimage) และ vlc เพื่อตรวจดูภาพ และ wodim เพื่อเขียนแผ่น
โดยเฉพาะ ffmpeg ต้องการตัวที่มาจาก debian-multimedia.org เพราะมีไลบรารีมากกว่าของ debian เอง

$ sudo vi /etc/apt/sourcelist
...
deb    http://www.debian-multimedia.org squeeze main
...
$ sudo aptitude update
$ sudo aptitude install ffmpeg dvdauthor mkisofs vlc wodim

เตรียมไดเรคทอรี่ temp ไว้เก็บไฟล์ vob ชั่วคราว และ dvd ไว้เก็บโครงสร้างไฟล์สำหรับเขียนลงแผ่น

$  mkdir temp dvd

คัดลอกไฟล์ vob จากแผ่นด้วยคำสั่ง dvdunauthor

$ cd temp
$ dvdunauthor /media/cdrom0

จะได้ไฟล์ vob ออกมาหลายไฟล์ แต่เราจะเก็บเฉพาะไฟล์ vob_01t_xxx.vob เท่านั้น

$ rm vob_01m*

ตรวจดูขนาดไฟล์ว่ารวมกันมากกว่า 4.3G หรือไม่ หากมากกว่าให้ลองดูภาพด้วย vlc แล้วสังเกตุช่วงเวลาที่จะทำการตัดต่อไว้
สมมุติเราได้ไฟล์ vob_01t_001.vob ออกมาไฟล์เดียว และจะตัดที่เวลา 1 ชั่วโมง 2 นาที 3 วินาที ใช้คำสั่ง ffmpeg ในการตัด

$  ffmpeg -i vob_01t_001.vob -sameq -target dvd -ss 0:0:0 -t 01:02:03 file1.vob

จะได้ file1.vob เป็นไฟล์ส่วนแรก
และ

$  ffmpeg -i vob_01t_001.vob -sameq -target dvd -ss 01:02:03 file2.vob

จะได้ file2.vob เป็นไฟล์ส่วนหลัง

เตรียมนำไฟล์ที่ได้ไปสร้างเป็นโครงสร้าง dvd คือ
สร้างไฟล์โครงสร้าง xml สมมุติชื่อ auth.xml บรรจุไฟล์ file1.vob ลงไป

$ vi auth.xml
<dvdauthor allgprm="yes">
  <vmgm />
  <titleset>
    <titles>
      <pgc>
        <vob file="file1.vob" />
      </pgc>
    </titles>
  </titleset>
</dvdauthor>

สร้าง dvd

$  dvdauthor -o ../dvd -x auth.xml

สร้างไฟล์ iso

$  mkisofs -dvd-video -o ../dvd.iso ../dvd

นำไปเขียนแผ่น

$  wodim -v gracetime=2 dev=/dev/cdrom speed=1 -eject ../dvd.iso

ต่อจากนี้ก็เอาไฟล์ที่เหลือ คือ file2.vob มาสร้างเป็นแผ่นต่อไป

เสร็จแล้วครับ

Topic: