Mar 142012

Before I got rid of it, I used my Roku Netflix Player to playback recorded tv from MythTV. Here’s the app and a couple videos showing how it looked.

Here’s a link to Roku’s Developer site

Here’s a link to the zip containing the demo video player. I’ve made a few modifications so it loads a demo video from this site.

To use it, modify conn.UrlPrefix in categoryFeed.brs in the source folder and rezip and upload to the roku device.

Mar 142012

This is just a quick and dirty script to delete MythTV recordings that had been previously transcoded and moved to the stream directory, but have since been autoexpired out of MythTV. This is an issue because trying to pull data outta the MythTV recording database about a recording that has been deleted causes an error because the entry isn’t there anymore. All it does is loop through each file in the stream directory and if it doesn’t exist in /var/lib/mythtv/recordings/ it gets deleted.

Contents of:
/usr/local/bin/ Continue reading »

Mar 142012

Since I’m already transcoding the recordings to h.264, might as well make them easily accessible to my iPhone or Boxee Box or Miro. Since the filenames are more likely to be seen, might as well make them more human readable. The biggest advantage to this renaming a season of a recorded show for archiving using filebot. If you want to get fancy, could use tversity to stream the rss feed to a playstation 3 or an xbox 360, but I still think the Roku is the easiest frontend for previously transcoded material.

Disclaimer: I’ve removed a few things specific to my oddball setup so I can’t guarantee I didn’t break anything.

Contents of:
/usr/local/bin/ Continue reading »

Mar 142012

Before I forget, here’s my MythTV UserJob1:
/usr/local/bin/ %DIR% %FILE%

This script runs on a MythTV recording to remove commercials and transcode to h.264 video that I’ve tested and will play on Android (Motorola Droid), iPhone (iPhone 4), Roku DVP (Original Roku Netflix Player), Boxee Box, and in Miro on Windows.

The contents of
/usr/local/bin/ Continue reading »

Mar 142012

Once the files have been created, will need to create an XML file the brightscript program on the Roku DVP can parse to display show data. This bit of perl reads the stream directory, sorts by file creation date, picks out the .mp4 files, uses the MythTV bindings to pull out show data, smashes it into some XML and writes it to a file.

Contents of:
/usr/local/bin/ Continue reading »

Mar 142012

This is a lot of the rest of the important configuration changes. I’ve added the bandwidth module (more info available in my previous post: Apache 2 bandwidth control) and enabled port 8080 as well since Cox Communications blocks traffic on 80 and 443. Continue reading »

Nov 202011

One of my first experiences with mythtv was restoring a recording and a dump of the MySQL database before I could buy my own tuner card. It was cool to see recordings populated and get a feel for the UI, but it was ultimately pretty pointless. Anyhoo, I bork’d my mythbuntu setup and needed to migrate my previous recordings to another installation. Come to find out, this has gotten so much simpler than ever before! Continue reading »

Oct 252010

My MOTD was lacking, so it got prettied up a bit. I have Apache available externally for Mythweb and transcoded shows. I like to keep an eye on recent accesses.

raging@mythbuntu:~$ cat /etc/update-motd.d/40-apache-hosts
echo "nRecent Apache Accesses"
cat /var/log/apache2/access.log | cut -f1 -d" " | sort | uniq

I loved when mythtv-status was included in mythbuntu, but is in the repository. I missed this feature and wished to have it again.

sudo apt-get install mythtv-status

… but that didn’t quite work. The fix is in this gossamer-threads link.

I didn’t have a MTA configured, and I just wanted to email upcoming recordings to myself, so I set up sSMTP

I got an error
Use of uninitialized value in numeric gt (>) at /usr/bin/mythtv-status line 867.

I love the open source community! This problem had already been identified and solved so i just needed to apply the included .patch file.

I’m including it here again for my convenience if i were to need it again soon,

--- /usr/bin/mythtv-status.orig 2010-11-17 09:52:08.043031500 +0000
+++ /usr/bin/ 2010-11-17 09:36:51.347027492 +0000
@@ -10,6 +10,9 @@

use LWP::UserAgent;
use XML::LibXML;
+# $Date::Manip::Backend = 'DM5';
use Date::Manip;
use Getopt::Long;
use Text::Wrap;
@@ -864,7 +867,7 @@
for my $key (@{ $block->{'human_readable_sizes'}}) {
for my $unit (@size_thresholds) {
if (defined $unit->{'threshold'}) {
- if ($vars->{$key} > $unit->{'threshold'}) {
+ if (defined($vars->{$key}) and $vars->{$key} > $unit->{'threshold'}) {
$vars->{$key} = sprintf("%.1f", $vars->{$key} / $unit->{'conversion'});
$vars->{"${key}_unit"} = $unit->{'unit'};

Mar 232010

I used to encode to mpeg4, which worked pretty well, but quality wasn’t the greatest. The files weren’t exactly tiny either.

/usr/bin/nice -n 19 ffmpeg -i "${directory}/${file}.tmp" -acodec libfaac -ab ${abitrate} -ac 2 -s ${width}x${height} -vcodec mpeg4 -b ${vbitrate} -flags +aic+mv4 -trellis 1 -mbd 2 -cmp 2 -subcmp 2 -g 250 -maxrate 512k -bufsize 2M -metadata title="${file}" "${directory}/${file}.mp4" >> "/tmp/${file}.log" 2>&1

Using libx264 seems to be an improvement. It works pretty well. It plays on my Roku digital video player, my Sandisk Sansa View, my Motorola Droid, JWPlayer, and Miro. I still need to test the xbox running xbmc, xbox 360, and ipod touch. Video files are pretty small.

/usr/bin/nice -n 19 ffmpeg -i "${directory}/${file}.tmp" -s 320x240 -vcodec libx264 -crf 26 -coder 0 -bf 0 -refs 1 -flags2 -wpred-dct8x8 -flags +loop -cmp +chroma -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method umh -subq 8 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 2 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -directpred 3 -trellis 1 -level 13 -maxrate 768000 -bufsize 3000000 -acodec libfaac -ac 2 -ar 48000 -ab 96k -metadata title="${file}" "${directory}/${file}.mp4" >> "/tmp/${file}.log" 2>&1

/usr/bin/MP4Box -tmp "${directory}" -inter 500 "${directory}/${file}.mp4"

I make no guarantees, but for me, it seems to work. An hour of video without commercials removed was around 205M, now it’s around 140M. The resolution is a bit smaller but the files aren’t as blocky and scale up fairly well.