changeset 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 cfa4a2c0366e
children cfab2ce8a840
files TOOLS/mencvcd
diffstat 1 files changed, 173 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TOOLS/mencvcd	Thu Apr 11 22:53:48 2002 +0000
@@ -0,0 +1,173 @@
+#!/bin/sh
+#
+# Version:          0.1.1
+#
+# Licence:          GPL
+#
+# 2002/05/11        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
+#
+################################################################################
+#
+# global options 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
+
+################################################################################
+
+function usage() {
+   echo "usage: $HOWCALLED <filename> [options] [mplayer options]"
+   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
+   echo "example:"
+   echo "'$HOWCALLED crazy -dvd 3 -w' encodes and burns dvd title 3 to VCD in wide"
+   echo "                             screen format."
+}
+
+HOWCALLED=`basename $0`
+NAME=$1
+if [ $# -le 1 ]; then
+   usage 
+   exit 1
+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
+
+params=""
+wide=""
+blank=0
+burn=1
+mkstream=1
+abr=224
+masr=44100
+denoise="cat -"
+norm="VCD"
+mplexnorm="-f 2 -V"
+mpegnorm="-f 2 -b 1152"
+imaget="-t vcd2"
+while [ "$1"x != "x" ]; do
+   case $1 in
+      -w)
+      	wide="-M WIDE2STD"
+	;;
+      -abr)
+      	abr=$2
+	shift 1
+	;;
+      -asr)
+        masr=$2
+        shift 1
+        ;;
+      -blank)
+      	blank=1
+	;;
+      -burn)
+      	burn=1
+	;;
+      -noburn)
+        burn=0
+	;;
+      -mpg)
+      	mkstream=0
+	;;
+      -denoise)
+        denoise="yuvdenoise"
+        ;;
+      -vcdout)
+      	norm="VCD"
+	mplexnorm="-f 2 -V"
+	mpegnorm="-f 2 -b 1152"
+	imaget="-t vcd2"
+	;;
+      -svcdout)
+        norm="SVCD"
+	mplexnorm="-f 4 -V"
+	mpegnorm="-f 4"
+	imaget="-t svcd"
+	;;
+      *)
+	params="$params $1"
+	;;
+   esac
+   shift 1
+done
+
+if [ -n "$wide" ]; then
+   if [ "$norm" == "SVCD" ]; then
+      wide=""
+      mpegnorm="$mpegnorm -a 3"
+   fi
+fi
+
+# encode streams
+if [ $mkstream -eq 1 ]; then
+   # start mplayer
+   mplayer -noframedrop -aop list=resample:fout=$masr -vo yuv4mpeg -ao pcm \
+      -waveheader $params &
+
+   # mjpegtools / sox
+   ($denoise < stream.yuv | \
+      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) &
+   
+   # wait for finishing the subprocesses
+   wait
+fi
+
+# remove pipes
+rm -f stream.yuv
+rm -f audiodump.pcm
+rm -f audiodump.wav
+
+# 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
+
+# burn the vcd
+[ $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
+
+exit 0