A DVR with an RSS feed - Watch Anything on Aything

Dvrapps_medium

Boxee, Hulu, Amazon, Netflix, and iTunes have great potential for the internet connected living room, but what is available for the offline world? I have a strange schedule, I spend a couple of hours on the CTA each day shuttling between work, school, my apartment in Chicago, and my parents suburban home. For scheduling and watching recorded content, not staying in the same bed every night presents an interesting problem.

The last few years I have been experimenting with DVR software to record shows. I've tinkered with abandoned open source projects, tried to make my own DVR software, and found a couple of great packages that still needed some tweaks to meet my strange needs. After years of tinkering, I think I've finally found a setup worth bragging about.

Over The Air TV

YES! No cable. I get cable with the Comcast bundle and the box is currently sitting under a pile off laundry. Cable is a bag of hurt for the tinkering type. I'd rather not use IR blasters or cable cards. Also the Comcast bundle is SD, which come to think about it, doesn't really matter when a majority of my recordings are Hogan's Heroes and Seinfeld reruns. Living in the city, taping a coat hanger to the window gets me a perfect HD signal every time.

Hdhr_medium

Silicon Dust makes the $89 HDHomeRun. This box has a coax connector for an antenna, ethernet port, and a dc jack. Inside are two ATSC tuners that pipe the signal over the network to a computer. Because Digital TV is just an MPEG2 stream, this box can send content to a port and you can use netcat and cron job to painfully make a DVR from the command line! Once I made a tv remote out of a Makefile. I wouldn't suggest using a software build utility to change the channel or record, it just shows the flexibility and openness of the HDHomeRun.

Over-the-air television is composed of MPEG2 encapsulated streams with a bitrate around 19Mbps. While my 15" MacBook Pro with Retina Display handles this fine, my mobile devices choke. Not even the latest Parks and Rec episode is worth the wait for a 6 gigabyte file to transfer. Luckily, mobile devices have hardware accelerated H264 decoding that extends battery life. Unfortunately, making H264 files for them is a fairly resource intensive process, it takes a beefy machine. My i5 box transcodes in realtime. It takes an hour to encode an hour long show.

Accessing DRM free video anywhere and on any device is why I went with my own DVR solution. After transcoding with Handbrake's iPhone 4 preset, I get a videos with a 1.7Mbps bitrate, this works great over my Comcast 36/6Mbps connection of which I am sure I am getting a great deal. The picture looks great on the TV, computer, and mobile devices.

The router at my apartment forwards port 80 to my DVR box and Amazon's Route 53 DNS service acts like DynDNS, updating the CNAME record on a subdomain to point to my external Comcast address. To access the page I go to the site in any browser and can schedule and stream recordings. Behind the scenes, Apache serves the scheduling pages, and video downloads. Its setup to allow devices on the local network to access all the pages and recordings. When schedules, feeds, and videos are accessed from the internet, users login with a username and password which is processed on the backend via standard Apache authentication modules.

Workflow

I like spending ridiculous amounts of time automating repetitive computing tasks. Its very inefficient but I always learn something along the way.

Scheduling

Schedule_medium

MythTV and the MythWeb plugin provides a decent web interface that allows me to browse, search, and select shows for recording. The scheduling data comes from SchedulesDirect. A year subscription sets me back $25 a year, but that is much cheaper than monthly TiVo, Boxee, or Comcast DVR fees.

To schedule a recording, I go to the the website and jump to the 7pm primetime hour and select the evenings shows to record. I also have low priority rules that will record any episode of Hogan's Heroes, Seinfeld, and This Old House. The scheduling pages are easily accessible from any web browser. The mobile experience is not the best, but as basic html with a little JavaScript sprinkled in, its fast on my iPhone 5.

Watching

I use lots of gadgets. DRM free lets me watch anything on anything.

  • Apple iPhone 4
  • Apple iPhone 5
  • Apple iPad 3 The New iPad
  • Apple Retina MacBook Pro 15"
  • Samsung Chromebook
  • Samsung Galaxy Tab 10.1 Google IO edition
  • Sony PS3
  • HP ProBook 6560b
  • HTC EVO 4G

Once recorded, a MythTV user job converts the uncompressed broadcast quality MPEG2 recordings to a compact H264 file for streaming and enjoyment from afar. MythTV runs a simple script after each recording. Handbrake-cli, the command line version of the popular DVD ripping utility, spits out a compact, web-ready H264 file. Web ready puts the metadata throughout the file instead of at the end. This allows for progressive downloading and streaming. Seeking to the middle or end of the video also works. Yes, this has been done on the web for years, but keep on mind that this is all running from a laptop sitting under a pile of Taco Bell wrappers with content from a coat hanger I taped to my window.

On the Web

Html5streaming_medium

MythWeb is just a collection of pearl and php scripts served via Apache. Replacing the included flash player with an HTML5 video player allows recordings to be watched from every browser, including iOS and Android devices. Additionally, the MythWeb RSS template has been modified with an additional enclosure for the H264 recording. This allows any device with a podcast client to automatically download the latest episodes.

On the Mac

Mac_medium

On the mac, dropping the iTunes Podcast folder of the recordings in the dock allows for easy access. A long HDMI cable is hidden behind the TV ready to play content.


On the iPhone

Photo_png_medium

Downcast for iOS - $1.99

iOS has a limited API for background applications. Updating a podcast feed doesn't fall under the 4 types of background processes Apple allows. The developers behind Downcast luckily have found a way around the rules using geofencing to initiate podcast updating. Downcast can be set to update podcasts when at a particular location. Tagging work, school, and home in downcast allows the podcasts to update when I have WiFi. I've heard the Apple Podcast app for iOS 6 is crap, Downcast is a more than worthy replacement that always has my latest DVR recordings and Vergecasts ready to watch!

On Android

Doggcatcher for Android - $4.99

On Android, Doggcatcher works quite well. Its set to refresh the feed and download the last 5 recordings at 3am, well after the transcoding jobs have finished, but still allows enough time to download eposodes over my parents horrible DSL. With Doggcatcher, I don't manage any files, just grab the tab on the way out.

Want it?

If your familiar with networking and scripting, a setup like this isn't that hard to put together. While I had some prior knowledge of MythTV. I set this up from scratch over the course of two weekends. It runs on a standard Ubuntu box and MythTV installation with code snippets found on the web that take care of the H264 encoding and RSS generation. I found these blog entries by Oliver Gorwits to be quite helpful, as in I copied them and they worked. Securing your installation via Apache configuration is fairly easy to setup from the Apache Docs.

Yes, I still use Amazon, Netflix, and Redbox, but this system offers what few subscriptions offer, offline viewing in the disconnected world of a CTA bus ride.