Mercurial > mplayer.hg
view TOOLS/mencvcd @ 6643:01eaf5358176
Changed the way that the streams are requested.
Now the streams are requested depending on the bandwidth option.
If the option is not set, the higher bitrate stream is chose.
Moved the asf_http_streaming_ctrl_t struct to asf.h
author | bertrand |
---|---|
date | Fri, 05 Jul 2002 02:46:03 +0000 |
parents | 3dcf7fe14bd3 |
children | a9b01022396a |
line wrap: on
line source
#!/bin/sh # # Version: 0.1.9 # # 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 # 2002/04/16 v0.1.3: # - new option "-burnonly" # - new option "-vbr" # - removes mpg file after mastering cd image # (mplayer can read bin images!) # - bugfixes # 2002/04/22 v0.1.4 # - bugfixes / changes # - more options # 2002/05/06 v0.1.5 # - new option "-norm" # 2002/05/08 v0.1.6 # - bugfixes # - new option "-vfr" # - "-norm" renamed to "-vnorm" # 2002/05/15 v0.1.7 # - bugfixes # - more help # 2002/05/26 v0.1.8 # - new option "-sync" # 2002/06/19 v0.1.9 # - new option "-mpgonly" # ################################################################################ # # 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" VCDMODE=2 SVCDMODE=5 ################################################################################ function usage() { echo "usage: $HOWCALLED <name> [options] [mplayer options]" echo echo "$HOWCALLED options:" echo echo "-?|-h help." echo "-abr <n> output audio bitrate in kbs [224]." echo "-asr <n> output audio sample rate in Hz [44100]." echo "-blank cleans cd-rw before burning." echo "-burnonly burn only the premastered <name>*.cue/<name>*.bin images." echo "-cdsize <n> maximal size of cd images [646]." echo "-denoise denoises mpeg stream." 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 "-mpgonly do only encoding to mpeg 1/2 format." echo "-noburn disables burning." echo "-ratio <s> output ratio size of frames, see yuvscaler (1)." echo "-size <X>x<Y> sets output size of frames." echo "-svcdout encode to SVCD format [VCD default]." echo "-sync <n> set the presentation timestamp offset of video" echo " stream w.r.t. audio stream (video-audio) in mSec." echo "-vbr <n> output video bitrate in kbs [VCD:1152, SVCD:2500]." echo "-vfr <n> sets the frame-rate of the output-stream. Currently" echo " only the standard MPEG rates are supported." echo " 0 - illegal" echo " 1 - 24000.0/1001.0 (NTSC 3:2 pulldown converted FILM)" echo " 2 - 24.0 (NATIVE FILM)" echo " 3 - 25.0 (PAL/SECAM VIDEO / converted FILM)" echo " 4 - 30000.0/1001.0 (NTSC VIDEO)" echo " 5 - 30.0" echo " 6 - 50.0 (PAL FIELD RATE)" echo " 7 - 60000.0/1001.0 (NTSC FIELD RATE)" echo " 8 - 60.0" echo "-vnorm p|n|s sets the input video norm p, n or s:" echo " forces the input stream to be treated as PAL|NTSC|SECAM" echo " regardless of what the stream header might suggest." echo "-w outputs in wide screen format 16:9." echo echo "examples:" echo echo "'$HOWCALLED crazy -dvd 3 -w':" echo "encodes and burns dvd title 3 to VCD in 16:9." echo echo "'mencvcd carter -dvd 1 -sid 0 -aid 128 -ss 3:00 -frames 1500 \\" echo " -noburn -vnorm n -vfr 1':" echo "this encodes 1500 frames of dvd title 1 with subtitle 0 and audio stream" echo "128 starting from 3:00 with frame rate 29.97 fps and input video norm NTSC" echo "and output frame rate 23.98 fps because of the 3:2 pulldown method in NTSC." } 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 sub="" size="" ratio="" params="" wide="" blank=0 burn=1 burnonly=0 mp3=0 mpgonly=0 mkstream=1 abr=224 abrset=0 asr=44100 vbr=1152 vbrset=0 denoise="cat -" norm="VCD" mplexnorm="-f $VCDMODE -m 1 -V -b 46" max=646 mpegnorm="-f $VCDMODE -b $vbr -B 260 -V 46" imaget="-t vcd2" yuvin="" framerate="" sync="" 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 ;; -burnonly) burnonly=1 burn=1 ;; -vfr) framerate="-F $2" shift 1 ;; -mp3) mp3=1 ;; -mpg) mkstream=0 ;; -mpgonly) mpgonly=1 ;; -vnorm) yuvin="-n $2" shift 1 ;; -denoise) denoise="yuvdenoise" ;; -ratio) ratio=$2 shift 1 ;; -sid) # mplayer option: have to set vop expand, too!!! sub="-vop pp,expand=-1:-1:-1:-1:1 -sid $2" shift 1 ;; -size) size=$2 shift 1 ;; -svcdout) norm="SVCD" ;; -sync) sync="-O $2" shift 1 ;; -vbr) vbr=$2 vbrset=1 shift 1 ;; *) params="$params $1" ;; esac shift 1 done # some configs if [ "$norm" == "SVCD" ]; then [ $vbrset -eq 0 ] && vbr=2500 mplexnorm="-f $SVCDMODE -m 2 -V -b 230" if [ -n "$wide" ]; then wide="" mpegnorm="-f $SVCDMODE -b $vbr -B 260 -V 230 -a 3" else mpegnorm="-f $SVCDMODE -b $vbr -B 260 -V 230 -a 2" fi imaget="-t svcd" fi # ratio overwrites wide sizing, size overwrites default frame size [ -n "$ratio" ] && wide="-M $ratio" [ -n "$size" ] && size="-O SIZE_$size" # with mp3 audio set the default audio bitrate to 128 kbs [ $mp3 -eq 1 -a $abrset -eq 0 ] && abr=128 # 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" # start de-/encoding if [ $burnonly -eq 0 ]; then # encode streams if [ $mkstream -eq 1 ]; then # start mplayer mplayer -noframedrop -vo yuv4mpeg -ao pcm -waveheader \ -v -osdlevel 0 $sub $params & # mjpegtools ($denoise < $VIDEO | \ yuvscaler -v 0 $wide -O $norm $size $yuvin | \ mpeg2enc -v 0 -s $mpegnorm -S $max -g 6 -G 15 -r 16 \ $framerate $yuvin -4 2 -2 1 -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 wav file, won't need anymore! rm -f $AUDIO # multiplex streams [ -f $NAME.mpv -a -f $NAME.mpa ] || exit 1 rm -f ${NAME}*.mpg mplex $mplexnorm $sync $NAME.mpv $NAME.mpa -o ${NAME}%d.mpg # should i create only the mpeg file? [ $mpgonly -eq 1 ] && exit 0 # 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 [ -f $bin -a -f $cue ] && rm -f $mpg done # end of streaming/mastering fi # remove pipe, won't need anymore! rm -f $VIDEO # 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