Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] script to convert multiple *vdr to cd-sized *avi
- To: vdr@linuxtv.org
- Subject: [vdr] script to convert multiple *vdr to cd-sized *avi
- From: Andreas Reichel <andreas.reichel@i-kit.de>
- Date: Tue, 5 Mar 2002 21:59:51 +0100
- Content-type: text/plain
- Delivered-To: mhonarc@limes.convergence.de
- In-Reply-To: <listar-03052002211650.3087.2@chambertin>
- Organization: privat
- References: <listar-03052002211650.3087.2@chambertin>
- Reply-to: vdr@linuxtv.org
- Sender: vdr-bounce@linuxtv.org
lists VDR
which
hi everybody,
please excuse my bad english grammer style, i'm not a native english
speaker. perhaps somebody finds following script usefully somekind. i use
it, to convert my movie-records from *vdr in *avi-files. please send me
further suggestions it looks hacky a little bit. i'm testing some
border-detection too, perhaps some times later we will integrate this.
greetings from germany,
Andreas Reichel
#!/bin/bash
#------------------------------------------------------------------------
-------------------------------------# command: "/usr/local/bin/vdr2avi.sh 16:9"
OR "/usr/local/bin/vdr2avi.sh 4:3" in # path of movie files (something
like /video/${MOVIENAME}/${TIMECODE}/)# author: Andreas Reichel
# email: andreas.reichel@i-kit.de
# url: http://www.i-kit.de
#------------------------------------------------------------------------
-------------------------------------#
# simple bash-script to transcode multiple *.vdr files to cd-sized
avi-files in mpeg4-format# use it, to convert videos recorded from
dvb-cards# use it for free, but please send me copies of modifications
#------------------------------------------------------------------------
-------------------------------------# simple howto:
#
# 1) record the movie using vdr [1] and the linux-dvb-drivers [2]
# 2) cut the movie using vdr [1]
# 3) run this skript to convert the pva-pes formatted movie-files to
ps-formated mpegII-files using # pvastrumento [3] and wine [4]
# 4) run this skript in directory of movie-files to transcode [5]
# 5) optional: burn the avi-files to cdrom
#------------------------------------------------------------------------
-------------------------------------# sources and references:
# [1] http://www.cadsoft.de/people/kls/vdr/download.htm
# [2] http://www.linuxdvb.tv/download/
# [3] http://www.offeryn.de/dv.htm
# [4] http://www.winehq.org/download.shtml
# [5]
http://www.theorie.physik.uni-goettingen.de/~ostreich/transcode/#download
#------------------------------------------------------------------------
------------------------------------- EXT="vdr"
NICELEVEL=10 # run it in background
RM_TMP_FILES=1 # set it "1" if instant removing of obsolete
temporary files wanted # to save disk space
# set it "0" to safe transcoding without deleting
temporary files
AF="" # initialise empty, will hold concanated filesnames later
CODEC="mpeg2" # input-codec
OUT_MCODEC="xvid" # xvid|divx|opendivx
MBITRATE="1400,1000,100" # bitrate, key-frames, crispness
RES169="640x360"
RES43="640x480"
ABITRATE="128" # vbr using lame seems to bee broken
CDSIZE="700" # use 700mb splitting
WINE=`which wine` # path to wine
TRANSCODE=`which transcode` # path to transcode
CPVAS='/usr/local/bin/cPVAS.exe' # path to cPVAS.exe
case "${1}" in
"16:9") Y=80
RES=${RES169}
;;
"4:3") Y=0
RES=${RES43}
;;
*) echo "Usage: /usr/local/bin/mpeg2avi.sh 16:9|4:3"
exit 1
;;
esac
# test, if all needed programs are found
if test -z ${WINE}
then
echo "Error: Wine not found in PATH"
exit 1
fi
if test -z ${TRANSCODE}
then
echo "Error: Wine not found in PATH"
exit 1
fi
if test ! -s ${CPVAS}
then
echo "Error: cPVAS.exe not found"
exit 1
fi
for F in `ls *.${EXT}`
do
FN=`basename ${F} .${EXT}`
if `test $[${FN}] -gt 0`
then
#demux video, first create job-file
echo -e "offeryn pvas job v002016 # DO NOT DELETE THIS
LINE\n\044JOB\ndemux ${FN}.${EXT} ${FN}.mpv ${FN}.mpa\naudio 1\nvideo
1\n\044PARMS\nloglevel 2\nfixstart 1\nsync 1\ndropgop 1\ndropwronggop
1\nstrongaudio 1\nshortscan 0\nscanseq 200\nsetbr 1\nsetvbr 1\nsetavg
1\nadjusttc 1\npacksize 0\nsplitsize 0\noverlap 1\nspliteven
0\nsplitaudioFMT 1\ngoppts 1" > ${FN}.ajb chmod 0644 ${FN}.ajb
nice -n ${NICELEVEL} ${WINE} -- ${CPVAS} ${FN}.ajb > ${FN}.log
#get video-frames in movie
FRAMES=`awk '/^Video:[ 0123456789.]+/ {match($0,/[0123456789.]+/);
print substr($0,RSTART,RLENGTH)}' ${FN}.log` test $? -ne 0 && (echo "ERROR:
${F}, demuxing"; exit 1) test ${RM_TMP_FILES} -gt 0 && rm -f ${FN}.${EXT}
test ${RM_TMP_FILES} -gt 0 && rm -f ${FN}.ajb
#first loop, get vbr-settings and the -s option from astat-plugin
NORMALIZE=`nice -n ${NICELEVEL} transcode -x ${CODEC} -y
${OUT_MCODEC} -i ${FN}.mpv -p ${FN}.mpa -R 1 -O -V -M 2 -c 0-${FRAMES} -w
${MBITRATE} -j ${Y},0,${Y},0 -Z ${RES} -J astat -b ${ABITRATE} | awk '/-s[
0123456789.]/ {match($0,/-s [0123456789.]+/); print
substr($0,RSTART,RLENGTH)}'` test $? -ne 0 && (echo "ERROR: ${F}, first
loop"; exit 1)
#second loop, make the movie using the calculated settings
nice -n ${NICELEVEL} transcode -x ${CODEC} -y ${OUT_MCODEC} -i
${FN}.mpv -p ${FN}.mpa -o ${FN}.avi -R 2 -O -V -M 2 -c 0-${FRAMES} -w
${MBITRATE} -j ${Y},0,${Y},0 -Z ${RES} -b ${ABITRATE} ${NORMALIZE} test $? -ne 0 &&
(echo "ERROR: ${F}, second loop"; exit 1)
test ${RM_TMP_FILES} -gt 0 && rm -f ${FN}.mpv ${FN}.mpa # remove
temp-files AF="${AF} ${FN}.avi" # concanate filenames
fi
done
#get name of parent-dir as moviename
DIRNAME=`(cd ..; pwd)`
TOP_DIRNAME=`(cd ../.. ; pwd)`
MOVIENAME=`basename ${DIRNAME} ${TOP_DIRNAME}`
# merge avifiles and remove them
avimerge -i ${AF} -o ${MOVIENAME}.avi
#test $? -eq 0 && exit 1
test ${RM_TMP_FILES} -gt 0 && rm -f ${AF}
#split in cd-sized chunks and clean up
avisplit -i ${MOVIENAME}.avi -o ${MOVIENAME} -s ${CDSIZE}
test ${RM_TMP_FILES} -gt 0 && rm -f ${MOVIENAME}.avi *.log
exit 0
--
_________________________________________________________________________
Andreas Reichel +49 0174-3262-499 :Phone
Hasenweg 2c andreas.reichel@i-kit.de :Email
D-04463 Grosspoesna, Germany www.i-kit.de :HTTP
_________________________________________________________________________
end
-- No attachments (even text) are allowed --
-- Type: application/pgp-signature
Home |
Main Index |
Thread Index