Mercurial > mplayer.hg
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 |