summaryrefslogtreecommitdiffstats
path: root/TOOLS
diff options
context:
space:
mode:
authorreynaldo <reynaldo@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-11-16 19:15:27 +0000
committerreynaldo <reynaldo@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-11-16 19:15:27 +0000
commit5141ab0c17a89617a66770f66e0cf5caaadb694f (patch)
tree69145bf959b8e76aae797f1e20e40ffc07701057 /TOOLS
parenta5cf8da5a9a9d7df0f178d5feb43c0fedb910439 (diff)
downloadmpv-5141ab0c17a89617a66770f66e0cf5caaadb694f.tar.bz2
mpv-5141ab0c17a89617a66770f66e0cf5caaadb694f.tar.xz
Added new TOOL to convert 'anything supported' to VCD/SVCD (PAL/NTSC) using mencoder
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@16997 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'TOOLS')
-rw-r--r--TOOLS/README13
-rwxr-xr-xTOOLS/qepdvcd.sh291
2 files changed, 304 insertions, 0 deletions
diff --git a/TOOLS/README b/TOOLS/README
index 17bb7cfdd9..7fd72856d3 100644
--- a/TOOLS/README
+++ b/TOOLS/README
@@ -186,6 +186,19 @@ Note: The script is probably bash dependent and it's just a quick
+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
-----------------------------
diff --git a/TOOLS/qepdvcd.sh b/TOOLS/qepdvcd.sh
new file mode 100755
index 0000000000..b6f4dbfe1b
--- /dev/null
+++ b/TOOLS/qepdvcd.sh
@@ -0,0 +1,291 @@
+#!/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@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