Transcoding for the PDA

From MythTV Official Wiki
Revision as of 18:17, 21 November 2006 by JeffVolck (talk | contribs)

Jump to: navigation, search

I created a simple script to transcode recordings for a PDA (Dell Axim X51V in my case). The files get stored in the directory "pda" under my video directory. I just copy the files I want onto a memory card and watch them using TCPMP. An hour long show comes out to 145M or so (that's alot of shows on a $40 2G card). They play wonderfully on the PDA.

I created a second user job to run after Zach's removecommercial script from the Wiki. I check only those shows I want a copy of for the PDA.

Here's the commands I used to create the user job:

mysql> use mythconverg;
mysql> UPDATE settings SET data='/usr/local/bin/pdatranscode %DIR%
%FILE% "%TITLE%" %STARTTIME%' WHERE value='UserJob2';
UPDATE settings SET data='PDA Transcode' WHERE value='UserJobDesc2';
mysql> UPDATE settings SET data='1' WHERE value='JobAllowUserJob2';

Then I create a script call "pdatranscode" and put it in "/usr/local/bin". I have two methods to transcode here. The first one uses mythtranscode's low quality transcoder (number 29 on my system). I have low quality set to 320x240 with a 300k bitrate. An hour long show came out to 136M. The second method uses mencoder. Mencoder produced a show 145M in size. Uncomment whichever you prefer to use.

Here's the script:

# /bin/sh
# pdatranscode
#
# created by Jeff Volckaert (inspired by Zach White)
# modified 11/10/06
VIDEODIR=$1
FILENAME=$2
TITLE=$3
# Remove non-alpha characters from TITLE
TITLE=${TITLE//[^a-zA-Z0-9]/}
STARTTIME=$4

# Sanity checking, to make sure everything is in order.
if [ -z "$VIDEODIR" -o -z "$FILENAME" ]; then
       echo "Usage: $0 <VideoDirectory> <FileName> "<Title>" <Starttime>"
       exit 5
fi
if [ ! -f $VIDEODIR/$FILENAME ]; then
       echo "File does not exist: $VIDEODIR/$FILENAME"
       exit 6
fi

# Transcode the file (Uncomment the method you want to use)

# Transcode using Myth's Transocde for Low Quality
# mythtranscode -i  $VIDEODIR/$FILENAME -o
$VIDEODIR/pda/$TITLE-$STARTTIME.avi -l -p 29


# Transcode using mencoder Xvid
# mencoder -vf scale=320:240 -oac mp3lame -lameopts mode=0:cbr:br=96
-af volnorm -srate 32000 -ovc xvid -xvidencopts bitrate=300 -o
$VIDEODIR/pda/$TITLE-$STARTTIME.avi $VIDEODIR/$FILENAME -quiet

# Transcode Using lavc's mpeg4 (this is what I use)
mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=300:vhq:vpass=1 -vf
scale=320:240 -oac lavc -lavcopts acodec=ac3:abitrate=128 -ffourcc
DX50 -o $VIDEODIR/pda/$TITLE-$STARTTIME.avi $VIDEODIR/$FILENAME -quiet

chmod 664 $VIDEODIR/pda/$TITLE-$STARTTIME.avi

ERROR=$?
if [ $ERROR -ne 0 ]; then
       echo "Transcoding failed for ${FILENAME} with error $ERROR"
       exit 3
fi