VHS to S3
Two years ago I embarked on a project to digitize my family's vast VHS based home movie collection. I bought the Elgato USB Video Capture adapter for my Mac and began transferring video by video from an old VHS player to the computer.
My goal was to deliver the collection as a set of DVDs that would be given as gifts for Christmas 2010. I had about 40 or so videos ready to go by December and was ready to start burning. To my dismay the traditional DVD format could only hold around two hours of content and took forever to burn.
I delievered the initial discs covering just 6 videos from 1989. My family loved them and it worked out well. I was happy with the result but there was so much more to show them! DVDs weren't going to accomplish the vision I had in mind. I wanted a library that was so dead simple to access that people would actually watch the videos.
S3 would give me both storage and backup. I would have to build a private web application for access. There would have to be a database of some sort. I would want simple title, description and year metadata on each video.
All of these thoughts were fine except they didn't accomplish the original vision. I wanted my family to experience their home movies together on the big TV in the family room. That's why I started off with DVDs in the first place.
The mobile Safari browser on the iPad has great support for HTML5 video. Any video that comes up in that player can be sent to an Apple TV over AirPlay. So now I had to create a private web application that would bring up HTML5 video players and work well with the touch screen of an iPad.
I hate thinking about servers. When I started out thinking about just how this private web application would be constructed I was thinking Rails. Yet another web app with a relational database that I had to worry about. What if I could get away with not running a server?
I just needed a private link that could render out the contents of an S3 bucket. S3 naturally has an HTTP api that could be called over AJAX if the site itself ran from an s3.amazonaws.com domain. I found an S3 Ajax library and got it to list out the contents of a bucket dynamically. Maybe I really could run this thing entirely out of S3!
There was just one nagging problem: metadata. I really didn't want to run a database or maintain a giant db file in S3. Then I remembered every S3 file object can store its own metadata. I was able to store the simple title, description and year data directly with the video file. I also made the metadata editable within the web app so my family could label the videos for me.
I bought my parents an iPad 2 and Apple TV for Christmas 2011. I loaded up the private S3 url (secured with Access Key and Secret Key) into the iPad and we started watching the home movies together on the big TV. It blew their minds. Over the course of the holiday they would make their way through over 50 movies they haven't seen in decades or never watched beyond filming them. The vision was complete. Now I just have to complete the transfer of the remaining dozens of VHS tapes.
This project is a great example of why HTML5 and the open web wins. Developing an iPhone/iPad app just for this task would have been a huge waste of time. It is also a good case for controlling your own infrastructure. You pay Amazon directly to host and backup this files for you. There are no limits. You pay for what you use. Try finding that kind of deal from many private video service providers. Your files are safe and your Amazon S3 bucket can't be acquired or be deadpooled like every other startup out there. Your memories are too important.