aboutsummaryrefslogtreecommitdiffhomepage
path: root/TOOLS/mencvcd
diff options
context:
space:
mode:
authorGravatar atmos4 <atmos4@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-04-15 14:01:07 +0000
committerGravatar atmos4 <atmos4@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-04-15 14:01:07 +0000
commit6fbbfc9e17bcfb6a9d92262a6bf184b9d634d31a (patch)
tree0730f8777e76de41e9b625f99edd649fb3ff92b0 /TOOLS/mencvcd
parent6d8cc6f3e94e1f8d71aa85250f9107f93edaadf2 (diff)
Updated to support resampling audio and multiple cds.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5634 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'TOOLS/mencvcd')
-rwxr-xr-xTOOLS/mencvcd169
1 files changed, 111 insertions, 58 deletions
diff --git a/TOOLS/mencvcd b/TOOLS/mencvcd
index f555c79ec7..d533c97515 100755
--- a/TOOLS/mencvcd
+++ b/TOOLS/mencvcd
@@ -1,28 +1,42 @@
#!/bin/sh
#
-# Version: 0.1.1
+# Version: 0.1.2
#
# Licence: GPL
#
-# 2002/05/11 Jürgen Hammelmann <juergen.hammelmann@gmx.de>
+# 2002/04/14 Jürgen Hammelmann <juergen.hammelmann@gmx.de>
#
# Script: MPlayer Sources (DVD) to (S)VCD ripping and burning
#
# requires: newest mplayer cvs version
# mjpegtools v1.6 beta
-# toolame
# vcdimager
# cdrdao
+# lame
#
################################################################################
#
-# global options section, change them to your needs!
+# 2002/04/11 v0.1.0: first version
+# 2002/04/12 v0.1.1:
+# 2002/04/14 v0.1.2:
+# - handles now multiple vcd's
+# - support's mp3 audio as option
+# - use of mp2enc/lame instead of toolame because of support
+# of resampling and mp3
+#
+################################################################################
+#
+# global config section, change them to your needs!
TMPDIR="." # path to directory for creating temporary files, recommended 2-3GB space
CDDRV="generic-mmc" # cdrdao: cdwriter driver
CDDEV="--device 0,1,0" # or comment out and create link /dev/cdrecorder to your cdwriter dev
+
+################################################################################
+AUDIO="audiodump.wav"
+VIDEO="stream.yuv"
################################################################################
function usage() {
@@ -30,20 +44,22 @@ function usage() {
echo
echo "$HOWCALLED options:"
echo
- echo "-w outputs in wide screen format 16:9"
- echo "-abr <n> audio bitrate in kbs [224]"
- echo "-asr <n> audio sample rate in Hz [44100]"
- echo "-blank cleans cd-rw before burning"
- echo "-burn enables burning [default]"
- echo "-denoise denoises mpeg stream"
- echo "-noburn disables burning"
- echo "-mpg don't encode from source, multiplex/burn only the mpeg stream"
- echo "-vcdout encode to VCD format [default]"
- echo "-svcdout encode to SVCD format"
+ echo "-h|-? help"
+ echo "-w outputs in wide screen format 16:9"
+ echo "-abr <n> output audio bitrate in kbs [224]"
+ echo "-asr <n> output audio sample rate in Hz [48000]"
+ echo "-blank cleans cd-rw before burning"
+ echo "-cdsize <n> maximal size of cd images [646]"
+ echo "-denoise denoises mpeg stream"
+ echo "-noburn disables burning"
+ echo "-mp3 outputs audio in mp3 instead of mp2 format"
+ echo "-mpg don't encode from source, multiplex/burn"
+ echo " only the encoded mpg stream"
+ echo "-vcdout encode to VCD format [default]"
+ echo "-svcdout encode to SVCD format"
echo
echo "example:"
- echo "'$HOWCALLED crazy -dvd 3 -w' encodes and burns dvd title 3 to VCD in wide"
- echo " screen format."
+ echo "'$HOWCALLED crazy -dvd 3 -w' encodes and burns dvd title 3 to VCD in 16:9."
}
HOWCALLED=`basename $0`
@@ -55,47 +71,58 @@ fi
shift 1
cd $TMPDIR
-rm -f stream.yuv
-rm -f audiodump.pcm
-rm -f audiodump.wav
-mkfifo -m 660 stream.yuv
-mkfifo -m 660 audiodump.pcm
-mkfifo -m 660 audiodump.wav
+rm -f $VIDEO
+rm -f $AUDIO
+# create a named pipe for video stream
+mkfifo -m 660 $VIDEO
+# some inits
params=""
wide=""
blank=0
burn=1
+mp3=0
mkstream=1
abr=224
-masr=44100
+abrset=0
+asr=44100
denoise="cat -"
norm="VCD"
-mplexnorm="-f 2 -V"
-mpegnorm="-f 2 -b 1152"
+mplexnorm="-f 2 -m 1 -V"
+max=646
+mpegnorm="-f 2 -b 1152 -B 260"
imaget="-t vcd2"
while [ "$1"x != "x" ]; do
case $1 in
-w)
wide="-M WIDE2STD"
;;
+ -h|-?)
+ usage
+ exit 0
+ ;;
-abr)
abr=$2
+ abrset=1
shift 1
;;
-asr)
- masr=$2
+ asr=$2
+ shift 1
+ ;;
+ -cdsize)
+ max=$2
shift 1
;;
-blank)
blank=1
;;
- -burn)
- burn=1
- ;;
-noburn)
burn=0
;;
+ -mp3)
+ mp3=1
+ ;;
-mpg)
mkstream=0
;;
@@ -104,14 +131,14 @@ while [ "$1"x != "x" ]; do
;;
-vcdout)
norm="VCD"
- mplexnorm="-f 2 -V"
- mpegnorm="-f 2 -b 1152"
+ mplexnorm="-f 2 -m 1 -V"
+ mpegnorm="-f 2 -b 1152 -B 260"
imaget="-t vcd2"
;;
-svcdout)
norm="SVCD"
- mplexnorm="-f 4 -V"
- mpegnorm="-f 4"
+ mplexnorm="-f 4 -m 2 -V"
+ mpegnorm="-f 4 -b 2500 -B 260"
imaget="-t svcd"
;;
*)
@@ -121,6 +148,7 @@ while [ "$1"x != "x" ]; do
shift 1
done
+# some configs
if [ -n "$wide" ]; then
if [ "$norm" == "SVCD" ]; then
wide=""
@@ -128,46 +156,71 @@ if [ -n "$wide" ]; then
fi
fi
+# with mp3 audio set the default audio bitrate to 128 kbs
+if [ $mp3 -eq 1 -a $abrset -eq 0 ]; then
+ abr=128
+fi
+
+# audio sample rate in kHz
+((a=$asr / 1000))
+((b=$asr % 1000))
+[ $b -le 9 ] && b="00$b00"
+[ $b -le 99 ] && b="0$b00"
+kasr="$a.$b"
+
# encode streams
if [ $mkstream -eq 1 ]; then
# start mplayer
- mplayer -noframedrop -aop list=resample:fout=$masr -vo yuv4mpeg -ao pcm \
- -waveheader $params &
+ mplayer -noframedrop -vo yuv4mpeg -ao pcm -waveheader $params &
- # mjpegtools / sox
- ($denoise < stream.yuv | \
+ # mjpegtools
+ ($denoise < $VIDEO | \
yuvscaler -v 0 $wide -O $norm | \
- mpeg2enc -v 0 -s $mpegnorm -g 6 -G 15 -r 16 -o $NAME.mpv) &
-
- # we have to use toolame, mp2enc don't understand audiodump.wav directly, no RIFF header?!
- (toolame -m s -b $abr audiodump.wav $NAME.mpa) &
+ mpeg2enc -v 0 -s $mpegnorm -S $max -g 6 -G 15 -r 16 -o $NAME.mpv) &
# wait for finishing the subprocesses
wait
+
+ if [ $mp3 -eq 0 ]; then
+ # mp2enc/lame can't read audiodump.wav directly from named pipe,
+ # we have to read the whole file.
+ mp2enc -b $abr -r $asr -o $NAME.mpa < $AUDIO
+ else
+ lame -b $abr --resample $kasr - $NAME.mpa < $AUDIO
+ fi
fi
-# remove pipes
-rm -f stream.yuv
-rm -f audiodump.pcm
-rm -f audiodump.wav
+# remove pipe and wav file, won't need anymore!
+rm -f $VIDEO
+rm -f $AUDIO
# multiplex streams
[ -f $NAME.mpv -a -f $NAME.mpa ] || exit 1
-rm -f $NAME.mpg
-mplex $mplexnorm $NAME.mpv $NAME.mpa -o $NAME.mpg
-
-# create cd image
-[ -f $NAME.mpg ] || exit 1
-rm -f $NAME.cue $NAME.bin
-vcdimager $imaget -c $NAME.cue -b $NAME.bin $NAME.mpg
+rm -f ${NAME}*.mpg
+mplex $mplexnorm $NAME.mpv $NAME.mpa -o ${NAME}%d.mpg
+
+# create cd images
+for mpg in ${NAME}*.mpg; do
+ [ -f $mpg ] || exit 1
+ cue="`basename $mpg .mpg`.cue"
+ bin="`basename $mpg .mpg`.bin"
+ rm -f $cue $bin
+ vcdimager $imaget -c $cue -b $bin $mpg
+done
-# burn the vcd
+# burn the (s)vcd's
[ $burn -eq 0 ] && exit 0
-[ -f $NAME.bin -a -f $NAME.cue ] || exit 1
-if [ $blank -eq 1 ]; then
- cdrdao blank --reload $CDDEV --driver $CDDRV --blank-mode minimal
-fi
-cdrdao write --reload $CDDEV --driver $CDDRV $NAME.cue
+for cue in ${NAME}*.cue; do
+ bin="`basename $cue .cue`.bin"
+ [ -f $bin -a -f $cue ] || exit 1
+
+ echo "please insert a cd in your cdwriter, after a keypress we start:"
+ read -n 1 i
+ if [ $blank -eq 1 ]; then
+ cdrdao blank --reload $CDDEV --driver $CDDRV --blank-mode minimal
+ fi
+ cdrdao write --reload $CDDEV --driver $CDDRV $cue
+done
exit 0