comparison TOOLS/mencvcd @ 5568:772c627c1494

anything to (S)VCD encode script by Juergen Hammelmann <juergen.hammelmann at gmx.de>
author atmos4
date Thu, 11 Apr 2002 22:53:48 +0000
parents
children b62460b1db74
comparison
equal deleted inserted replaced
5567:cfa4a2c0366e 5568:772c627c1494
1 #!/bin/sh
2 #
3 # Version: 0.1.1
4 #
5 # Licence: GPL
6 #
7 # 2002/05/11 Jürgen Hammelmann <juergen.hammelmann@gmx.de>
8 #
9 # Script: MPlayer Sources (DVD) to (S)VCD ripping and burning
10 #
11 # requires: newest mplayer cvs version
12 # mjpegtools v1.6 beta
13 # toolame
14 # vcdimager
15 # cdrdao
16 #
17 ################################################################################
18 #
19 # global options section, change them to your needs!
20
21 TMPDIR="." # path to directory for creating temporary files, recommended 2-3GB space
22
23 CDDRV="generic-mmc" # cdrdao: cdwriter driver
24 CDDEV="--device 0,1,0" # or comment out and create link /dev/cdrecorder to your cdwriter dev
25
26 ################################################################################
27
28 function usage() {
29 echo "usage: $HOWCALLED <filename> [options] [mplayer options]"
30 echo
31 echo "$HOWCALLED options:"
32 echo
33 echo "-w outputs in wide screen format 16:9"
34 echo "-abr <n> audio bitrate in kbs [224]"
35 echo "-asr <n> audio sample rate in Hz [44100]"
36 echo "-blank cleans cd-rw before burning"
37 echo "-burn enables burning [default]"
38 echo "-denoise denoises mpeg stream"
39 echo "-noburn disables burning"
40 echo "-mpg don't encode from source, multiplex/burn only the mpeg stream"
41 echo "-vcdout encode to VCD format [default]"
42 echo "-svcdout encode to SVCD format"
43 echo
44 echo "example:"
45 echo "'$HOWCALLED crazy -dvd 3 -w' encodes and burns dvd title 3 to VCD in wide"
46 echo " screen format."
47 }
48
49 HOWCALLED=`basename $0`
50 NAME=$1
51 if [ $# -le 1 ]; then
52 usage
53 exit 1
54 fi
55 shift 1
56
57 cd $TMPDIR
58 rm -f stream.yuv
59 rm -f audiodump.pcm
60 rm -f audiodump.wav
61 mkfifo -m 660 stream.yuv
62 mkfifo -m 660 audiodump.pcm
63 mkfifo -m 660 audiodump.wav
64
65 params=""
66 wide=""
67 blank=0
68 burn=1
69 mkstream=1
70 abr=224
71 masr=44100
72 denoise="cat -"
73 norm="VCD"
74 mplexnorm="-f 2 -V"
75 mpegnorm="-f 2 -b 1152"
76 imaget="-t vcd2"
77 while [ "$1"x != "x" ]; do
78 case $1 in
79 -w)
80 wide="-M WIDE2STD"
81 ;;
82 -abr)
83 abr=$2
84 shift 1
85 ;;
86 -asr)
87 masr=$2
88 shift 1
89 ;;
90 -blank)
91 blank=1
92 ;;
93 -burn)
94 burn=1
95 ;;
96 -noburn)
97 burn=0
98 ;;
99 -mpg)
100 mkstream=0
101 ;;
102 -denoise)
103 denoise="yuvdenoise"
104 ;;
105 -vcdout)
106 norm="VCD"
107 mplexnorm="-f 2 -V"
108 mpegnorm="-f 2 -b 1152"
109 imaget="-t vcd2"
110 ;;
111 -svcdout)
112 norm="SVCD"
113 mplexnorm="-f 4 -V"
114 mpegnorm="-f 4"
115 imaget="-t svcd"
116 ;;
117 *)
118 params="$params $1"
119 ;;
120 esac
121 shift 1
122 done
123
124 if [ -n "$wide" ]; then
125 if [ "$norm" == "SVCD" ]; then
126 wide=""
127 mpegnorm="$mpegnorm -a 3"
128 fi
129 fi
130
131 # encode streams
132 if [ $mkstream -eq 1 ]; then
133 # start mplayer
134 mplayer -noframedrop -aop list=resample:fout=$masr -vo yuv4mpeg -ao pcm \
135 -waveheader $params &
136
137 # mjpegtools / sox
138 ($denoise < stream.yuv | \
139 yuvscaler -v 0 $wide -O $norm | \
140 mpeg2enc -v 0 -s $mpegnorm -g 6 -G 15 -r 16 -o $NAME.mpv) &
141
142 # we have to use toolame, mp2enc don't understand audiodump.wav directly, no RIFF header?!
143 (toolame -m s -b $abr audiodump.wav $NAME.mpa) &
144
145 # wait for finishing the subprocesses
146 wait
147 fi
148
149 # remove pipes
150 rm -f stream.yuv
151 rm -f audiodump.pcm
152 rm -f audiodump.wav
153
154 # multiplex streams
155 [ -f $NAME.mpv -a -f $NAME.mpa ] || exit 1
156 rm -f $NAME.mpg
157 mplex $mplexnorm $NAME.mpv $NAME.mpa -o $NAME.mpg
158
159 # create cd image
160 [ -f $NAME.mpg ] || exit 1
161 rm -f $NAME.cue $NAME.bin
162 vcdimager $imaget -c $NAME.cue -b $NAME.bin $NAME.mpg
163
164 # burn the vcd
165 [ $burn -eq 0 ] && exit 0
166 [ -f $NAME.bin -a -f $NAME.cue ] || exit 1
167
168 if [ $blank -eq 1 ]; then
169 cdrdao blank --reload $CDDEV --driver $CDDRV --blank-mode minimal
170 fi
171 cdrdao write --reload $CDDEV --driver $CDDRV $NAME.cue
172
173 exit 0