[MPlayer-cvslog] CVS: main/TOOLS qepdvcd.sh, NONE, 1.1 README, 1.12, 1.13

Reynaldo H. Verdejo CVS syncmail at mplayerhq.hu
Wed Nov 16 20:15:29 CET 2005


CVS change done by Reynaldo H. Verdejo CVS

Update of /cvsroot/mplayer/main/TOOLS
In directory mail:/var2/tmp/cvs-serv17235

Modified Files:
	README 
Added Files:
	qepdvcd.sh 
Log Message:
Added new TOOL to convert 'anything supported' to VCD/SVCD (PAL/NTSC) using mencoder

--- NEW FILE ---
#!/bin/bash
#
# QEPDVCD
#
# Most of this stuff comes straight from mplayer documentation
# options are limited only to an small usesfull subset, if you 
# want more control, RTFM and DIY
#
# Version:          0.1
#
# Licence:          GPL
#
# Author:           Reynaldo H. Verdejo Pinochet <reynaldo at opendot.cl> 
#
# Script:           MPlayer Sources. Anything supported to vcd/svcd pal/ntsc 
#
# requires:         mencoder
#
# sugests:          vcdimager / cdrecord 
#
# Thanks to:        Carlos Navarro Salas - name author ;)
#					
#

# Defaults

MYNAME=`basename $0`
TARGET="svcd"
ENCQ="2"
ABPS="224"
VBPS="2000"
NORM="NTSC"
SPLIT="0"
TOLERANCE="85"
OUTNAME="mencodedvcd"
SUBFILENAME=0

EDLFILENAME="pass.edl"
HAVESUB=0
WORKDIR="."
RATIOX=4
RATIOY=3

OPTIONS="INPUTFILENAME TARGET ENCQ ABPS VBPS NORM SPLIT TOLERANCE OUTNAME"

function usage()
{
echo ""
echo "usage $MYNAME inputfile [options]"
echo ""
echo "Options: [Default value]"
echo ""
echo "-t	Target svcd|vcd [svcd]"
echo "-q	Encoding quality 0|1|2 [2]"
echo "-a	Audio bitrate in kbps [224]"
echo "-v	Video bitrate in kbps [2000 For SVCD, 1150 For VCD]"
echo "-n	Norm NTSC|PAL [NTSC]"
echo "-d	Divide/splits movie at given times time1:time2:... [No split]"
echo "-s	Shitty TV screen tolerance %, afects subtitle positioning [85]"
echo "-u	Subtitle file name [No subtitle]"
echo "-o	Output Basename [mencodedvcd]"
echo ""
echo "In case you want to use -a/-v please read:"
echo "http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-vcd-dvd.html"
echo ""
}

function test_needed()
{

for i in mencoder; do
	if [ -z "`which $i`" ]; then
		echo "[ERROR] mencoder not found in $PATH!"
		exit 1
	fi
done

}

function test_sugested()
{

for i in vcdimager cdrecord; do
	if [ -z "`which $i`" ]; then
		echo "[WARNING] $i not found in $PATH!"
		echo "youre likely to need it after we finish"
		exit 1
	fi
done
}

test_needed
test_sugested

if [ $# -lt 1 ]; then
	echo ""
	echo "[ERROR] Input filename parameter is mandatory"
	echo ""
	usage
	exit 1
fi

case $1 in
	-*)
 		usage
		exit 1
		;;
	*)
		INPUTFILENAME=$1
		shift 1
		;;
esac

while [ "$1"x != "x" ]; do
	case $1 in
		-t)
		TARGET=$2
		shift 1
		;;
		-q)
		ENCQ=$2
		shift 1
		;;
		-a)
		ABPS=$2
		shift 1
		;;
		-v)
		VBPS=$2
		shift 1
		;;
		-n)
		NORM=$2
		shift 1
		;;
		-d)
		SPLIT=$2
		shift 1
		;;
		-s)
		TOLERANCE=$2
		shift 1
		;;
		-u)
		SUBFILENAME="$2"
		HAVESUB=1
		shift 1
		;;
		-o)
		OUTNAME=$2
		shift 1
		;;
	esac
	shift 1
done

echo ""
echo "[STATUS] Will re-encode using the following params:"
echo ""
for i in $OPTIONS ; do
	echo "$i ${!i}";
done

# Parameter Sanity Check ###########################################
# We need to check supplied params against known format constraints
####################################################################

if [ $TARGET = "svcd" ]; then
	if [ $ABPS -gt 384 ]; then
		echo "[ERROR] SVCD max abitrate is 384kbps"
		exit 1
	fi
	if [ $VBPS -gt 2600 ]; then
		echo "[ERROR] SVCD max vbitrate is 2600kbps"
		exit 1
	fi
else [ $TARGET = "vcd" ]
	if [ $ABPS -eq 224 ]; then
		echo "[ERROR] VCD abitrate must be 224kbps"
		exit 1
	fi
	if [ $VBPS -gt 1150 ]; then
		echo "[ERROR] VCD max vbitrate is 1150kbps"
		exit 1
	fi
fi

# Set encoding options ##############################################

if [ $TARGET = "svcd" ]; then
	FORMAT="xsvcd"
	VCODEC="mpeg2video"
	VRCMINRATE=4
	VRCMAXRATE=2500
	VRCBUFSIZE=917
	if [ $NORM = "NTSC" ]; then
		SCALEX=480
		SCALEY=480
		KEYINT=18
		OFPS="24000/1001"
		TELECINE=":telecine"
	else [ $NORM = "PAL" ]
		SCALEX=480
		SCALEY=576
		KEYINT=15
		OFPS=25
	fi
else [ $TARGET = "vcd" ]
	FORMAT="xvcd"
	VCODEC="mpeg1video"
	VRCMINRATE=$VBPS
	VRCMAXRATE=$VBPS
	VRCBUFSIZE=327
	if [ $NORM = "NTSC" ]; then
		SCALEX=352
		SCALEY=240
		KEYINT=18
		OFPS="24000/1001"
	else [ $NORM = "PAL" ]
		SCALEX=352
		SCALEY=288
		KEYINT=15
		OFPS=25
	fi
fi

# Start reencoding ###################################################

cd $WORKDIR

if [ $(($HAVESUB+1)) -eq 1 ]; then
	SUBTITLESTRING="/dev/null"
else
	SUBTITLESTRING="$SUBFILENAME"
fi

if [ $SPLIT == "0" ]; then
	CICLES=0
	TIMESTRING=""
else
	if [ -e $EDLFILENAME ]; then
		echo "[ERROR]"
		echo "-d option needs to generate a temporary file called"
		echo "$EDLFILENAME you already have one on this dir, please"
		echo "remove/rename it and run $MYNAME again."
		echo ""
		exit 1
	else
		EDLSTRING=$(echo $SPLIT | sed -e s/:/' '/g)
		EDLARRAY=($EDLSTRING)
		CICLES=$(echo $EDLSTRING | wc -w)
		TIMESTRING="-edl $EDLFILENAME -hr-edl-seek"
	fi
fi


for j in $(seq 0 $CICLES); do

	NEWNAME=$OUTNAME"_PART"$j".mpg"
	echo ""
	echo "Making $NEWNAME, wish me luck ;-)"
	echo ""

# Create EDLFILENAME #################################################

	if [ $CICLES -ge 1 ]; then
		for i in $(seq 0 $CICLES)
		do
			if [ $i -eq $j ]; then
				if [ $j -ne 0 ]; then
					echo "0 ${EDLARRAY[$(($i-1))]} 0" > $EDLFILENAME
				fi
				if [ $i -ne $CICLES ]; then
					echo "${EDLARRAY[$(($i))]} 999999 0" >> $EDLFILENAME
				fi
			fi
		done
	fi
		
# Mencoder Time ;-) ###################################################

mencoder -ovc lavc -oac lavc -vf expand=:::::$RATIOX/$RATIOY:1,scale=$SCALEX:$SCALEY,harddup -srate 44100 -af lavcresample=44100 -lavcopts acodec=mp2:abitrate=$ABPS:vcodec=$VCODEC:vbitrate=$VBPS:keyint=$KEYINT:mbd=$ENCQ:vrc_buf_size=$VRCBUFSIZE:vrc_maxrate=$VRCMAXRATE:vrc_minrate=$VRCMINRATE:aspect=$RATIOX/$RATIOY -of mpeg -mpegopts format=$FORMAT$TELECINE -sub $SUBTITLESTRING -subpos $TOLERANCE -subwidth $TOLERANCE -ofps $OFPS $TIMESTRING -o $NEWNAME $INPUTFILENAME

echo "Encoding of $NEWNAME Finished"
echo "Run vcdimager -t svcd/vcd $NEWNAME and burn with cdrecord"

done

echo "$(($CICLES+1)) VCD/SVCD file(s) created!!!"
echo "Happy to be of some help ;-) have fun"
exit 0

Index: README
===================================================================
RCS file: /cvsroot/mplayer/main/TOOLS/README,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- README	4 Oct 2005 15:46:58 -0000	1.12
+++ README	16 Nov 2005 19:15:27 -0000	1.13
@@ -186,6 +186,19 @@
 
 
 
+qepdvcd.sh
+
+Author:       Reynaldo H. Verdejo Pinochet
+
+Description:  anything supported to vcd/svcd pal/ntsc converter 
+
+Usage:        qepdvcd.sh file <options>
+              run with no args to see the list of options
+
+Note:         you will need vcdimager/cdrecord to master/burn the resulting
+              files
+			  
+			  
 Tech scripts in the TOOLS dir
 -----------------------------
 




More information about the MPlayer-cvslog mailing list