summaryrefslogtreecommitdiffstats
path: root/TOOLS/mencvcd
diff options
context:
space:
mode:
Diffstat (limited to 'TOOLS/mencvcd')
-rwxr-xr-xTOOLS/mencvcd169
1 files changed, 109 insertions, 60 deletions
diff --git a/TOOLS/mencvcd b/TOOLS/mencvcd
index 8593296419..71fa1cb7f5 100755
--- a/TOOLS/mencvcd
+++ b/TOOLS/mencvcd
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Version: 0.1.10
+# Version: 0.2
#
# Licence: GPL
#
@@ -8,12 +8,13 @@
#
# Script: MPlayer Sources (DVD) to (S)VCD ripping and burning
#
-# requires: newest mplayer cvs version
-# mjpegtools v1.6 beta
+# requires: mplayer
+# mjpegtools
# vcdimager
# cdrdao
-# lame
-#
+# lame (optionally)
+# toolame (optionally)
+# sox (optionally)
for exe in mplayer mpeg2enc mp2enc mplex yuvscaler ; do
if [ -z "`which $exe`" ]; then
@@ -21,7 +22,7 @@ for exe in mplayer mpeg2enc mp2enc mplex yuvscaler ; do
exit 1
fi
done
-for exe in vcdimager lame cdrdao yuvdenoise ; do
+for exe in vcdimager lame cdrdao yuvdenoise sox toolame ; do
if [ -z "`which $exe`" ]; then
echo "WARNING: $exe is not found in your path $PATH!"
fi
@@ -62,6 +63,11 @@ done
# - bug fixes
# - tests now, if the commands are in path and give warnings
# and errors.
+# 2002/11/01 v0.2
+# - bug fixes
+# - new options: "-sox", "-volume", "-toolame"
+# - renamed "-mpg" to "-mpegsrc"
+# - default cd size changed to 800mb
#
################################################################################
#
@@ -69,9 +75,10 @@ done
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
-
+CDDRV="generic-mmc" # cdrdao: cdwriter driver
+CDDEV="--device 0,1,0" # or comment out and create link /dev/cdrecorder
+ # to your cdwriter dev
+CDMAXSIZE=800
################################################################################
AUDIO="audiodump.wav"
@@ -81,50 +88,65 @@ SVCDMODE=5
################################################################################
function usage() {
- echo "usage: $HOWCALLED <name> [options] [mplayer options]"
+ echo "Usage: $HOWCALLED <name> [$HOWCALLED options] [mplayer options]"
+ echo
+ echo "For mplayer options see mplayer help and manual."
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 [700]."
- 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 "-?|-h help."
+ echo "-a <n> sets the aspect ratio (for SVCD):"
+ echo " 1 - 1:1 display"
+ echo " 2 - 4:3 display"
+ echo " 3 - 16:9 display"
+ echo " 4 - 2.21:1 display"
+ 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 [800 = 80min raw cd]."
+ echo "-denoise denoises mpeg stream."
+ echo "-mp3 outputs audio in mp3 instead of mp2 format."
+ echo "-mpegsrc don't encode from source, multiplex/burn the "
+ echo " 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 "-sox use sox for audio resampling."
+ 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 "-toolame use toolame instead of mp2enc."
+ echo "-v <volume> change amplitude (floating point); less than 1.0"
+ echo " decreases, greater than 1.0 increases. Use that only"
+ echo " together with sox!"
+ 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 teneriffa teneriffa.avi'"
+ echo "this creates a VCD from an avi file."
+ 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 "'$HOWCALLED 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"
@@ -148,6 +170,7 @@ mkfifo -m 660 $VIDEO
# some inits
sub=""
size=""
+aratio=""
ratio=""
params=""
wide=""
@@ -165,15 +188,20 @@ vbrset=0
denoise="cat -"
norm="VCD"
mplexnorm="-f $VCDMODE -m 1 -V -b 46"
-max=700
-mpegnorm="-f $VCDMODE -b $vbr -B 260 -V 46"
imaget="-t vcd2"
yuvin=""
framerate=""
sync=""
+sox=0
+toolame=0
+volume="1.0"
while [ "$1"x != "x" ]; do
case $1 in
+ -a)
+ aratio="-a $2"
+ shift 1
+ ;;
-w)
wide="-M WIDE2STD"
;;
@@ -191,7 +219,7 @@ while [ "$1"x != "x" ]; do
shift 1
;;
-cdsize)
- max=$2
+ CDMAXSIZE=$2
shift 1
;;
-blank)
@@ -211,7 +239,7 @@ while [ "$1"x != "x" ]; do
-mp3)
mp3=1
;;
- -mpg)
+ -mpegsrc)
mkstream=0
;;
-mpgonly)
@@ -221,6 +249,10 @@ while [ "$1"x != "x" ]; do
yuvin="-n $2"
shift 1
;;
+ -volume)
+ volume="$2"
+ shift 1
+ ;;
-denoise)
denoise="yuvdenoise"
;;
@@ -243,6 +275,12 @@ while [ "$1"x != "x" ]; do
sync="-O $2"
shift 1
;;
+ -sox)
+ sox=1
+ ;;
+ -toolame)
+ toolame=1
+ ;;
-vbr)
vbr=$2
vbrset=1
@@ -256,15 +294,11 @@ while [ "$1"x != "x" ]; do
done
# some configs
+mpegnorm="-f $VCDMODE -b $vbr -B 260 -V 46"
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
+ mpegnorm="-f $SVCDMODE -b $vbr -B 260 -V 230 $aratio"
imaget="-t svcd"
fi
@@ -287,23 +321,38 @@ if [ $burnonly -eq 0 ]; then
# encode streams
if [ $mkstream -eq 1 ]; then
# start mplayer
- mplayer -noframedrop -vo yuv4mpeg -ao pcm -waveheader -benchmark \
- -v -osdlevel 0 $sub $params &
-
+ command="mplayer -noframedrop -vo yuv4mpeg -ao pcm -waveheader -v -osdlevel 0 $sub $params"
+ echo "$command"
+ $command &
+
# mjpegtools
($denoise < $VIDEO | \
yuvscaler -v 0 $wide -O $norm $size $yuvin | \
- mpeg2enc -v 0 -s $mpegnorm -S $max -g 6 -G 15 -r 16 \
+ mpeg2enc -v 0 -s $mpegnorm -S $CDMAXSIZE -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
+ # do resampling with sox
+ if [ $sox -ne 0 ]; then
+ echo "wait, do resampling with sox..."
+ sox $AUDIO -v $volume -r $asr $NAME.wav resample -qs
+ mv -f $NAME.wav $AUDIO
+ fi
+
+ if [ $toolame -ne 0 -a $mp3 -eq 0 ]; then
+ # do mp2 encoding with toolame
+ echo "wait, encoding to mp2 audio with toolame..."
+ toolame -b $abr $AUDIO
+ mv -f `basename $AUDIO .wav`.mp2 $NAME.mpa
+ elif [ $toolame -eq 0 -a $mp3 -eq 0 ]; then
# mp2enc/lame can't read audiodump.wav directly from named pipe,
# we have to read the whole file.
+ echo "wait, encoding to mp2 audio with mp2enc..."
mp2enc -b $abr -r $asr -o $NAME.mpa < $AUDIO
- else
+ elif [ $mp3 -ne 0 ]; then
+ echo "wait, encoding to mp3 audio with lame..."
lame -b $abr --resample $kasr - $NAME.mpa < $AUDIO
fi
fi