2012年3月7日星期三

复制DVD到mp4文件

最近有需要复制DVD到U盘给电视机播放,网上搜索了一下,找到这个:

http://luy.li/2011/05/15/dump_dvd/

觉得不错,就编辑记录在下面,备用。

--------------------- 原文 ---------------------

注意:此脚本只是一个对我来说刚刚够用的脚本,并不是一个通用的方案,如果你的源DVD里有多语言、多字幕之类的,很可能需要修改参数才能正常运行,另外输出文件的码率、画面长宽、声音采样率等,也需要按实际情况修改。

给儿子买了12张巧虎的DVD,但是这年头,已经很少见DVD播放器了,电视机都是直接插U盘的,所以打算把DVD里的内容dump到U盘里(mp4格式),再进行播放。我的盘是按故事分段的,所以我也按段分成不同的mp4文件,一个盘的内容放在一个目录里。
用到的几个命令:
  • lsdvd命令可以取得DVD的标题、语言、字幕、分段等信息。
  • mencoder是个强大得一塌糊涂的视频/音频编码工具。
  • eject命令可以弹出光盘,放在脚本最后最合适了。

上脚本:

#!/bin/sh
 
DIR="/media/sda1/qiaohu"
DVD=`lsdvd`
title="`echo "$DVD" | grep "^Disc Title:" | cut -d ":" -f2-`"
title=${title:1}
chapters="`echo "$DVD" | grep "^Title" | awk -F"[ ,]+" '{print $6}'`"
echo "$title | $chapters"
T="$DIR/$title"
if [ -d "$T" ] ; then
 i=1
 while [ -d "$T$i" ] ; do
  ((i++))
 done
 T="$T$i"
fi
mkdir "$T"
i=1
while [ $i -le $chapters ] ; do
 echo $T/$i.mp4
 mencoder -of lavf -lavfopts format=mp4 -oac lavc -ovc lavc -lavcopts aglobal=1:vglobal=1:\ 
vcodec=mpeg4:vbitrate=800:acodec=libfaac:abitrate=96 -af lavcresample=48000 -vf dsize=\
720:540:0,scale=0:0,expand=720:540,harddup -ofps 29.970 -srate 48000 -o "$T/$i.mp4" dvd://1 \
-chapter $i-$i
 ((i++))
done
 
eject