LinHES Forums http://forums.linhes.org/ |
|
Transcode into anything that's not a nuv? http://forums.linhes.org/viewtopic.php?f=17&t=19605 |
Page 1 of 1 |
Author: | balthisar [ Thu Feb 26, 2009 8:51 pm ] |
Post subject: | Transcode into anything that's not a nuv? |
I've been wracking my brain over this... any means of doing the following? I don't mind doing the work, but a starting point would be good! Goal: transcode recorded programs into mp4, delete the original mpg2, and have the item remain in the database? The reasons are many, but mostly I want to save space on the stuff my wife doesn't get to watching for a while, while avoiding nuv's (our front ends are all XBox xbmc's with crappy support for nuv's, such as no seeking). Here are a couple of approaches I've consider: #1: Use nuvexport via a script run as a user job, which will put the new file in the same tv directory, then erase the original file. But then how do I update the database to point to the new file? How do I communicate from the user job which is the correct record to update? #2: Same as number one, but use any other encoder I want to, but the same problem remains: updating the table to point to the new file. Any ideas? I don't mind rolling my own, and I feel competent to do it, except for identifying the correct table records. Any pointers? THANKS! |
Author: | cliffsjunk [ Tue Mar 03, 2009 11:54 pm ] |
Post subject: | |
You might try this for a test: Run nuvexport and produce an avi with the same base name as the mpg. Move the mpg out of the tv directory, move the avi(/mp4/etc) into it and try to play it. If it doesn't work, just put the mpg back and delete the avi. If it does work, you will need to play with mythcommflag to get it to redo the seek table for each file you replace this way. Another possiblity: Nuvexport them into the /myth/video directory and watch them as videos. Your front ends will need to mount the back end's /myth directory to their own /myth directory to be able to watch videos (using mythvideo) that are actually stored on the back end. This works, all my systems are set up that way. Sub-option: use a different "explorer like" tool on the frontends to browse the /myth/video directory and avoid running a frontend on them? Final possiblilty: scripting sql commands isn't that bad if you are conforable with writing scripts. I think that mysql is the command you are after, but I don't know which table the data is in or the syntax to use (database is probably mythconverg). I don't know if the standard recording player can even handle an avi as it normally just handles mpg or nuv files. |
Author: | Gnarl [ Wed Mar 04, 2009 9:16 am ] |
Post subject: | |
Here is a couple of scripts I have to remove commercials and export to avi as user jobs, they shouldn't be too hard to combine and modify for your purpose Code: #!/bin/bash VIDEOIN=$1 FILENAME=$2 QUERY=/tmp/$FILENAME.sql # Check to see if there is a cutlist echo "select cutlist from recorded WHERE basename = '$FILENAME'" > $QUERY CUTLISTEXIST=$(mysql -u mythtv -pmythtv -h mb01 mythconverg < $QUERY |grep -e 1 -e 0) # If no cutlist exist exit, if [ $CUTLISTEXIST = 0 ] then echo "No Cutlist" >> /var/log/mythtv/mythbackend.log else # Exporting video minus the data in the cutlist CUTLIST=$(mythcommflag --getcutlist -f $VIDEOIN | tail -n 1 | awk '{print $2}' | sed 's/,/ /g') if [ $? -ne 0 ]; then echo "Copying cutlist failed for ${FILENAME} ($VIDEOIN) with error $?" exit $? fi mythtranscode -m -i $VIDEOIN --honorcutlist "$CUTLIST" --showprogress -o "$VIDEOIN.tmp" if [ $? -ne 0 ]; then echo "Transcoding failed for ($VIDEOIN) with error $?" exit $? fi rm -f "$VIDEOIN" rm -f "$VIDEOIN.tmp.map" mv "$VIDEOIN.tmp" "$VIDEOIN" mythcommflag -f $VIDEOIN --rebuild # Removing the cutlist from recording (but leaving commercial flags) mythcommflag --clearcutlist -f $VIDEOIN ERROR=$? if [ $ERROR -eq 0 ]; then # Fix the database entry for the file echo "UPDATE recorded SET cutlist = 0, commflagged = 0, filesize = $(ls -l $VIDEOIN | awk '{print $5}') WHERE basename = '$FILENAME';" > $Q$ mysql mythconverg -h mb01 -u mythtv -pmythtv < $QUERY fi fi rm -f $QUERY Code: #!/bin/bash
VIDEOIN=$1 FILENAME=$2 # Variable used to get name of file on filesystem FSNAME=$3 #$(echo $VIDEOIN |gawk -F'/' '{ print $4 }') # Check to see if there is a cutlist echo "select cutlist from recorded WHERE basename = '$FSNAME'" > /tmp/query CUTLISTEXIST=$(mysql -u mythtv -pmythtv -h mb01 mythconverg </tmp/query |grep -e 1 -e 0) echo "$VIDEOIN ---- $FILENAME ---- $FSNAME ---- $CUTLISTEXIST" > /tmp/variables1 OUTDIR="/myth/video/videos" # Sanity checking, to make sure everything is in order. if [ -z "$VIDEOIN" -o -z "$FILENAME.avi" ]; then echo "Usage: $0 <PathToVideoFileName> <OutFile> <OutDirectory>" exit 5 fi if [ ! -f "$VIDEOIN" ]; then echo "File does not exist: $VIDEOIN" >> /tmp/exportlog 2>&1 exit 6 fi # If no culist exist, export to avi directly else cut out commercials then export if [ $CUTLISTEXIST = 0 ] then ffmpeg -i "$VIDEOIN" -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k "$OUTDIR/$FILENAME.avi" -deinterlace else # Exporting video minus the data in the cutlist CUTLIST=$(mythcommflag --getcutlist -f $VIDEOIN | tail -n 1 | awk '{print $2}' | sed 's/,/ /g') if [ $? -ne 0 ]; then echo "Copying cutlist failed for ${FILENAME} ($VIDEOIN) with error $?" >> /tmp/exportlog 2>&1 exit $? fi mythtranscode -m -i $VIDEOIN --honorcutlist "$CUTLIST" --showprogress -o "$OUTDIR/$FILENAME.tmp" >> /tmp/exportlog 2>&1 if [ $? -ne 0 ]; then echo "Transcoding failed for ${FILENAME} ($VIDEOIN) with error $?" >> /tmp/exportlog 2>&1 exit $? fi # Now we'll convert the new temp file to avi using ffmpeg ffmpeg -i "$OUTDIR/$FILENAME.tmp" -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k "$OUTDIR/$FILENAME.avi" -deinterlace >> /tmp$ if [ $? -ne 0 ]; then echo "Could not covert file to avi. Aborted with error $?" >> /tmp/exportlog 2>&1 fi # Now, regardless of an ffmpeg error we'll remove the interim files rm -f "$OUTDIR/$FILENAME.tmp" "$OUTDIR/$FILENAME.tmp.map" >> /tmp/exportlog 2>&1 fi |
Author: | elgordo123 [ Wed Mar 04, 2009 3:23 pm ] |
Post subject: | |
You can also do the export to ipod script after each recording. You also need to either modify it or add a new one that moves that new ipod video and overwrites the one in /myth/tv, renaming the new ipod.mp4 file to the 1008_20393939.mpg or whatever. Linux/Mplayer doesn't care about the extension. Once in a while when my Irblaster doesn't change or it records it off a different card and I have to get a missed show from "other sources", I just rename it (it's normally an avi) to the filename in /myth/tv like 1008_2093903.mpg and it works great. So I know this method will work. |
Page 1 of 1 | All times are UTC - 6 hours |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |