Update June 2014: Quicktime Streaming Server is deprecated. The functions I described no longer work on this server. If anyone is interested in the historical operations of this software, please contact me.
Setting up your own personal web streaming service to support any standard blog is simple, with off-the-shelf components available for MacOS X. You can post links in your blog pages to streams that serve from your desktop streaming server, no files are stored on the upstream server. You must be willing to put your desktop machine up and online 24/7 with a broadband connection (a cable modem is adequate) as a streaming server. I am currently serving these clips on an ancient Powermac G3/400 with a cable modem. Here’s a summary of :
1. Put your MacOS X Apache server up on the net with an IP name. Use dyndns.org to set this up if you are a cable modem user or don’t have a real hostname that resolves in DNS. QTSS requires you to have a real IP name, and to have the system and Apache configs correctly set to the hostname.
2. Install Quicktime Streaming Server 4, it’s a free download. Install the package, go to your Applications folder and click on the QTSSAdminURL icon, the admin page will appear in your browser. Install the required passwords, and your streaming server is running! Click on the little circle with the question mark, the link will explain all about QTSS
3. Now we need some content. You can use any DV stream you can capture on a Mac. A camcorder with a Firewire port can import video using products like iMovie. I want to import from a variety of NTSC and SVideo sources that don’t have Firewire like my DirecTV, TiVo and VCR, so I used the Canopus ADVC-1000 to capture video with Final Cut Pro. Note that the ADVC-1000, like many converters, will not work with Macrovision-protected tapes and DVDs. Copy protection rears its ugly head yet again! There are easy ways around this problem, but it would be illegal under the DMCA to say what they are. Ask your local video geek.
4. Now you need to compress the DV stream into Quicktime, and prepare different versions of the files for streaming at multiple speeds. You could do this entirely with Quicktime Pro, but that process is relatively difficult. I used Cleaner 5.1.1, which has a wizard for creating and compressing Quicktime files for streaming. Even using the Cleaner wizard, you will need to tweak the settings for each speed setting, to pick a compression and frame rate appropriate to each type of video you present. Go in and explore, you can set various Quicktime features like autoplay, play in browser/external player, etc. Be sure to set Cleaner’s options to specify the IP name of your streaming server when you create the files. This will be important when the blog server remotely calls your server for the files.
Cleaner will produce two folders with compressed files. One contains a master movie and a text file with the HTML to access the stream, and another folder contains the compressed Quicktime files. One folder is labeled “Upload to HTTP server” and those go wherever you can serve web pages from, either in your root website or your ~/username/Sites folder. Copy the contents of the folder labeled “Upload to Streaming Server” to /Library/QuicktimeStreaming/Movies.
5. Now you are ready to test the stream! Remember that clip of HTML that Cleaner made and you put in your web server folder? Call it in a web browser and see if it runs from your local Apache server. Access it with your full IP name, like <http://hostname.dyndns.org/clipname.html> (I’m assuming you put the file in your root webserver, /Library/Webserver/Documents/) and see if it streams. If all goes well, when you click on the Play button, you will see “Negotiating… Buffering…” and you will know the file is being served as a stream, and is now accessible to the world.
6. So now that you can stream and have a working sample of HTML with proper tags, with a little editing we can use that same HTML in any other web page. Here’s the chunk of HTML that will stream the file “gumby.mov” just like in my demonstration (I’ve cut it into shorter lines for readability)
<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="256" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"> <PARAM NAME="src" VALUE="gumby_MSTR.mov"> <PARAM NAME="autoplay" VALUE="false"> <PARAM NAME="controller" VALUE="true"> <PARAM NAME="loop" VALUE="false"> <EMBED SRC="gumby_MSTR.mov" WIDTH=320 HEIGHT=256 AUTOPLAY=false CONTROLLER=true LOOP=false PLUGINSPAGE="http://www.apple.com/quicktime/"> </EMBED> </OBJECT> To make this file work on the blog server, you must change the master movie pathnames from relative to absolute, and point to your home server (I’ve marked the pathnames in red to make them easier to locate). In this example, I changed those instances of “gumby_MSTR.mov” to the full URL, like “http://hostname.dyndns.org/gumby_MSTR.mov” or whatever is appropriate for the originating server. I just take the HTML file generated by Cleaner and open it in BBEdit to edit the paths, or I could paste it into a new page in a web editor like GoLive 6 (that’s what I use). Wherever I drop this chunk of HTML into my blog entry or web page source, the Quicktime streaming “badge” will appear. Now I can copy and paste that HTML directly into a new story window on my blog’s html entry page.