2009年05月03日 DVD to VCD(VIDEO CD)
_ DVD to VCD(VIDEO CD)
私のメインのデスクトップ機にはDVD-ROMドライブは付いているが、DVD-R等に書きこみ出来るドライブは付いていない(今時なのだが)。なぜなら、それは私がSCSI至上主義を貫いているからに他ならない。
SCSIのDVD-Rドライブなどは(しかも内蔵に限る)は、めったに手に入らない。
さっさと、そんな主義はとっぱらって、数千円のIDE接続のドライブを手に入れれば良いだけの事なのだが、今さらこのマシン(Pentium-II 375MHZ)に投資するのも、なんだかなぁ...というところ。
そんな事で、今までもDVDを焼くときはmpeg4にして、データとしてCD-Rに焼いているのだが、当然パソコンでないと視聴できない。
そんな状況を少しでも(努力のみで)向上させるために、DVDを(懐かしの)Video CDとして焼くスクリプトを作った。当然、MAX70分から80分程度のソースに限るのだが。まぁ、うちのブラウン管テレビで視聴する分には充分(と言ってみる)。
#! /bin/sh if [ "X$1" = "X-h" -o "X$1" = "X--help" ] then echo "Usage : dvd2vcd.sh [-rw] [-s hh:mm:ss] [ -e hh:mm:ss] [-a ax:ay] [-t title] [-c chapter] [-vb vbitrate] [-ab abitrate] [-f fps] [-al audio_lang] [-sl subtitle_lang]" echo "" echo " -rw : CD-RW" echo " -s start_time : start position time" echo " -e end_time : pass time" echo " -a ax:ay : source aspect(default 16:9)" echo " -t title : title number(default 1)" echo " -c chapter : chapter(default 1)" echo " -vb vbitrate : video bitrate (kbit) (default 1150)" echo " -ab abitrate : audio bitrate (kbit) (default 224)" echo " -f fps : frame per second(default 24)" echo " -al audio_lang : audio language (default ja,en)" echo " -ai audio_id : audio id" echo " -sl subtitle_lang : subtitle language (default none)" echo " -si subtitle_id : subtitle id " exit 0 fi # resample=44100 expand=352:240 packetsize=2324 # vbitrate=1150 abitrate=224 ofps=24 aspect=16:9 # rw=no start="" end="" title="1" chapter="1" alang="ja" aid="" slang="" sid="" # while [ $# != 0 ] do case $1 in -rw ) rw=yes ;; -s ) shift start="-ss $1" ;; -e ) shift end="-endpos $1" ;; -a ) shift aspect=$1 ;; -t ) shift title="$1" ;; -c ) shift chapter="$1" ;; -vb ) shift vbitrate="$1" ;; -ab ) shift abitrate="$1" ;; -f ) shift ofps="$1" ;; -al ) shift alang="$1" ;; -ai ) shift aid="$1" ;; -sl ) shift slang="$1" ;; -si ) shift sid="$1" ;; esac shift done # ex=`echo ${expand} | cut -d: -f1` ey=`echo ${expand} | cut -d: -f2` ax=`echo ${aspect} | cut -d: -f1` ay=`echo ${aspect} | cut -d: -f2` sy=`expr ${ex} \* ${ay} / ${ax}` if [ ${sy} -gt ${ey} ] then sy=${ey} sx=`expr ${ey} \* ${ax} / ${ay}` else sx=${ex} fi # if [ "X${alang}" = "X" ] then alang_opt="" else alang_opt="-alang ${alang}" fi # if [ "X${aid}" = "X" ] then aid_opt="" else aid_opt="-aid ${aid}" fi # if [ "X${slang}" = "X" ] then slang_opt="" else slang_opt="-slang ${slang}" fi # if [ "X${sid}" = "X" ] then sid_opt="" else sid_opt="-sid ${sid}" fi # function menc() { vpass=$1 filename=$2 mencoder dvd://${title} -chapter ${chapter} \ ${start} ${end} \ ${alang_opt} ${aid_opt} \ ${slang_opt} ${sid_opt} \ -afm libmad, \ -vfm ffmpeg, \ -af resample=${resample} \ -vf scale=${sx}:${sy},expand=${expand} \ -oac lavc \ -ovc lavc \ -lavcopts vcodec=mpeg1video:vbitrate=${vbitrate}:vhq:vpass=${vpass}:acodec=mp2:abitrate=${abitrate} \ -ofps ${ofps} \ -of mpeg \ -mpegopts format=xvcd:size=${packetsize} \ -o ${filename} } # menc 1 /dev/null menc 2 /tmp/dvd2vcd.$$.tmp.mpg # vcdimager --cue-file=/tmp/dvd2vcd.$$.tmp.cue \ --bin-file=/tmp/dvd2vcd.$$.tmp.bin \ /tmp/dvd2vcd.$$.tmp.mpg # if [ ${rw} = yes ] then cdrdao blank -n --speed 8 --device 0,3,0 fi cdrdao write -n --speed 8 --device 0,3,0 /tmp/dvd2vcd.$$.tmp.cue # rm -f /tmp/dvd2vcd.$$.tmp.*
mencoderでDVDをmpeg1形式に変換し、vcdimagerでmpeg1形式からVIDEO CD形式に変換する。最後に、それをcdrdaoでCD-Rに焼けば完成。
cdrdaoの--device指定は(当然)環境によって異なるので注意すること。
VIDEO-CDの規格上はmpeg1のビットレートは1150Kbps(以下?)、音声のビットレートは224Kbps(固定?)という事なのだが、うちのDVDプレーヤー(Panasonic NV-VHD1)では規定ビットレート以下であれば再生できた(ただし、表示される進行時間が早く進んで行くが...)。いわゆる規格外VCDということになるのだろうが、とりあえず画質の低下を我慢すれば2時間の映画を無理矢理CD-R1枚に納める事も可能。