Mercurial > mplayer.hg
view TOOLS/mencvcd @ 5647:5a2d49aa72c2
Disabled spuenc code due to upcoming prerelease, there are still bugs here
author | mswitch |
---|---|
date | Tue, 16 Apr 2002 11:14:49 +0000 |
parents | b62460b1db74 |
children | 00ac1397ecb7 |
line wrap: on
line source
#!/bin/sh # # Version: 0.1.2 # # Licence: GPL # # 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 # vcdimager # cdrdao # lame # ################################################################################ # # 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() { echo "usage: $HOWCALLED <filename> [options] [mplayer options]" echo echo "$HOWCALLED options:" echo 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 16:9." } HOWCALLED=`basename $0` NAME=$1 if [ $# -le 1 ]; then usage exit 1 fi shift 1 cd $TMPDIR 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 abrset=0 asr=44100 denoise="cat -" norm="VCD" 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) asr=$2 shift 1 ;; -cdsize) max=$2 shift 1 ;; -blank) blank=1 ;; -noburn) burn=0 ;; -mp3) mp3=1 ;; -mpg) mkstream=0 ;; -denoise) denoise="yuvdenoise" ;; -vcdout) norm="VCD" mplexnorm="-f 2 -m 1 -V" mpegnorm="-f 2 -b 1152 -B 260" imaget="-t vcd2" ;; -svcdout) norm="SVCD" mplexnorm="-f 4 -m 2 -V" mpegnorm="-f 4 -b 2500 -B 260" imaget="-t svcd" ;; *) params="$params $1" ;; esac shift 1 done # some configs if [ -n "$wide" ]; then if [ "$norm" == "SVCD" ]; then wide="" mpegnorm="$mpegnorm -a 3" 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 -vo yuv4mpeg -ao pcm -waveheader $params & # mjpegtools ($denoise < $VIDEO | \ yuvscaler -v 0 $wide -O $norm | \ 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 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}%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 (s)vcd's [ $burn -eq 0 ] && exit 0 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