Captioning Web Video

I’m no video expert. Yet I often find myself encoding, editing, and otherwise manipulating video for the web. Recently, I completed a video project that involved converting a DVD of a 40-minute presentation into a movie that could be viewed on a web page, as a whole or in chapters. The final product had to be captioned.

Converting the DVD into video for the web was easy. I used Handbrake to rip the DVD into MP4 format. Editing was equally easy. I used iMovie to add title screens and transitions, and to break the movie up into chapters. Adding the captioning, however, was tricky.

Why bother with captioning? Here are some good reasons: so that those who are deaf or hard of hearing can enjoy the video, so the text is indexed by search engines, and to aid those for whom English is a second language. And here’s another: the Twenty-First Century Communications and Video Accessibility Act of 2010.

If captioning is important, then why isn’t it a mainstream practice? I’m not qualified to answer that question, but my guess is that it’s in part due to the fact that captioning is time-consuming and difficult. For instance: with external captioning (where captions are contained in an external file and sync with the video), there are multiple formats and a lack of clear standards. And for embedded captioning (where captions are simply typed in an editor and then exported with the movie), it’s just plain tedious work.

For my recent video project, I considered three captioning options:

  1. Embed the captions. The first option is to place the captions directly into the movie itself using a tool such as Final Cut Pro,  iMovie, or  Adobe Premiere.  I have Final Cut Pro, but I tend to use iMovie since most of the video work I do is short and simple. It’s the easiest tool for the job and the results look good. Here’s the thing about iMovie: while there are dozens of title/text effect options, none are designed for captioning (which is surprising given Apple’s robust accessability options for the OS). Despite this shortcoming, I’ve discovered that I can ‘fake’ captions by adding lower thirds to each segment of video. Making a default lower third overlay in iMovie into something that resembles a caption is a matter of changing font sizes. You can see an example of this in a recent video podcast I produced. This works, but it isn’t a practical solution for a long movie. In truth, it’s really not an ideal solution for any length movie because the captions are permanently embedded in the video. Screen readers and search engines can’t see this text. People can’t choose to turn the captions on/off. So I didn’t choose this option for my project.
  2. Dump the text on the page. A second option is to dump the captioning for a video on a page, underneath the video as HTML text. This may technically meets accessibility requirements, but it’s a lousy solution. The text is unassociated with the video. One can read the text or watch the video. It’s not feasible to do both at the same time. Nix.
  3. Create an external caption file. This last choice is the best solution: create an external caption file that will appear in sync with the video. Captioning is then matched up with the video, it’s readable by screen readers, and it’s good for search engines. It can also be turned on or off at the user’s discretion.

So how do you create and deploy and external caption file? If you simply wish to place a video on Youtube, it’s easy. Once you upload your video to the free service, Youtube offers free auto-generated machine transcription. While you’ll find that video speech-to-text accuracy is hit-and-miss (more miss in my experience), the important part is that Google generates  time codes that precisely match the the audio in the video. So once you download the caption file from Youtube, it’s a simply a matter of manually correcting the text so that what appears in the caption will match what is actually being said in the video.

If you don’t want to (or can’t because of workplace policy) solely use Youtube to present your video, it’s still a very useful tool. How? If you are embedding captions in a video using an editor such as iMovie, YouTube will do half of the work for you by delivering a fair approximation of a transcript. If you want to use an external caption file elsewhere with a different video player, you can still use this Google-generated file. You just need to convert it into the right format.

Here’s the process I used to generate a caption file for my video project:

  • I began by uploading the video to my YouTube channel.
  • I then requested that YouTube auto-generate a Subviewer caption file for this movie (Be patient. It may take hours to get this file back from Google because you’ll be in a queue with tons of other people).
  • I then downloaded this file and opened it up in text editor. 
  • The next step is tedious, but necessary: cleaning up the machine-generated text. I opened my movie in a QuickTime player window and, as it played, edited my caption text to correct errors and typos. It’s not too bad if you toogle between a text editor and QuickTime using Cmd-Tab.
  • Once I had my cleaned-up Subviewer text file, I copied and pasted it it into a free online converter to generate into the appropriate format. In my case, I generated a DFXP file for use with a Flash player. Here are three conversion tool options:
    • 3PlayMedia Caption Format Converter. This converter lets you convert from SRT or from SBV to  DFXP, SMI or SAMI (Windows Media), CPT.XML (Flash Captionate XML), QT (Quicktime), and STL (Spruce Subtitle File).
    • Subtitle Horse. A free online caption editor. Exports DFXP, SRT, and Adobe Encore files.
    • Subviewer to DFXP. This free online tool from Ohio State University converts a YouTube .SBV file into DFXP, Subrip, or QT (QuickTime caption) files. I used this tool for my project.

What’s the appropriate format?

  • YouTube: Subviewer (.SBV) 
  • iTunes, iOS: Scenarist Closed Caption (.SCC) 
  • Flash: DFXP, Timed Text Markup Language, the W3C recommendation. These are plain ol’ XML files.  You could also use the SubRip (.SRT) file format for Flash.
  • HTML5:  See this post.

If you’re not using a hosted service like YouTube or Vimeo (which, incidentally, does not support external captions), you’ll of course have to decide how to present the video on your site. There are many options. You can roll your own player with external captions using Adobe Flash. You can use off-the-shelf players that support captioning such as Flowplayer and JW Player — these two commercial products offer very easy setup and they offer HTML5 video players with Flash fallback. Another option: you might try HTML5 with experimental captioning support (note that Safari 5 now supports captioning with the HTML5 video tag). As I said, there are options. The video player discussion is beyond the scope of this post (and I don’t want to go down the HTML5 vs. Flash rabbit hole!).

My main goal here is to point out that Google’s machine transcription is good for more than just hosting a captioned video on Youtube. It’s trivial to convert this caption file into a variety of formats. The key point is that you don’t have to manually add time codes for your video. This critical step is done for you.

Yet even with this handy Google tool, generating caption files (and getting them to work with video players) remains an unwieldy task. We clearly need better tools and standards to help bring video captioning into the mainstream.

P.S. While researching this post, I came across two low-cost tools that look like solid options to create iOS and iTunes movies with captions. Both are from a company called bitfield. The first is called Submerge. This tool makes it very easy to embed (hard-code) subtitles in a movie and will import all the popular external captioning formats. The second is called iSubtitle. This tool will ‘soft-code’ subtitle tracks so you can add multiple files (languages) and easily add metadata to your movie.

in tip | 1,409 Words

Dropbox 1.0

The best online file synching service is now out of Beta. Dropbox 1.0 offers selective folder synchronization (hooray!), an easier installation process, improved performance, and a slew of bug fixes.  If you’re not on Dropbox, why not? The first 250MB of storage space is free. And if you get new people to sign up to the service, you get an additional 250MB of free space per person. Speaking of which, if you’re new to Dropbox … why not use this referral link to sign up. He he.


in tip | 87 Words


Huffduffer. It’s a creation of web developer Jeremy Keith, who says he originally invented this tool for himself to fill a simple need.

Like many online tools with staying power, ‘filling a simple need’ is often the first litmus test for success. The second is filling a simple need well. And this site does the job very well. Huffduffer is an easy-to-use, elegant, friendly way to create your own personal podcast stream from found audio on the web. The part that makes Huffduffer so useful is RSS feed creation. It’s easy to bookmark audio, but not so easy to create an iTunes-compatible RSS feed. I think of it this way: Huffduffer is to audio what Instapaper is to text.

I must admit, though, that I have only just started using this tool as intended. So far, I’ve primarily been using it as a discovery tool to find audio content I otherwise would not have known existed by subscribing to Huffduffer’s ‘Popular’ feed. As you may surmise, this feed delivers a steady stream of what other people are ‘Huffduffing.’ The downside to this stream is that there are often many duplicate posts, so you’ll find yourself often deleting entries that you’ve seen before. The upside is that the content is usually interesting and there’s plenty of new content every day. For my long daily train commute, this feed is most welcome.

You’ll find that much of the ‘popular content’ tends to be in the vein of tech, design, web design/development, science fiction, speculative science, and hard science. This surely says a lot about the core users of the site. And this makes sense given who created it: I surmise that site usage has spread mainly by word-of-mouth and via conferences. I, for instance, discovered it a web design conference where Jeremy Keith was speaking. So if you are particularly interested in this type of content, you’ll get a lot out of this feed. As a secondary benefit, the popular feed has helped me find many a new podcast to subscribe to via iTunes. Now I need to start huffduffing some of my own ‘found audio.’ 

Here are a few recent items from the ‘popular’ feed that I really enjoyed:

Conversation with William Gibson — A discussion with William Gibson about where we are headed in the post-internet age.

Arthur C. Clarke, Alvin Toffler, Margaret Mead —  A talk recorded in 1970 about the future. From the show notes on Huffduffer: “At the time of this recording Arthur C. Clarke had recently collaborated on the movie 2001: A Space Odyssey with Stanley Kubrick. Alvin Toffler’s mega-influential book, Future Shock, is about to be published. And Margaret Mead is the world’s foremost cultural anthropologist.”

Kevin Kelly interview — An interview with Kelly about his new book, “What Technology Wants.” Fascinating stuff.

The Value of Ruins — James Bridle from dConstruct 2010 (a design & creativity conference) asks “as we design our future, should we be concerned with the value of our ruins?” 

If you’d like some more background, check out this interview with Jeremy Keith on Huffduffer. And if you’re curious about the meaning behind the word ‘Huffduffer,’ here’s an explanation.

VPN options

Since I’m moving into a hotel for a couple of months at the end of this week, I’ve been shopping around for a Virtual Private Network.

The type of VPN I’m talking about is not the kind that one uses to connect securely to an office network. What I’m talking about is a VPN that provides encryption from a PC to a remote VPN service. This type of VPN protects data while the bits are ‘in the air’ over a public WiFi connection. Once it reaches the VPN company, it’s decrypted and sent along to intended destinations via a wired connection. What you get out of this kind of service is, essentially, a greater level of insurance that your internet activity over public WiFi will remain safe and secure.

When I first started looking into this, I found that there’s a question of whether or not this is really necessary. I found two categories of opinions in my research. Some people feel that it’s generally OK to forego the use of a VPN while engaged in general browsing at a public WiFi hotspot, but it’s best to wait until you get home to do anything sensitive involving passwords. Mail is a particular concern here. This camp notes that it’s generally safe to engage in password-protected activities provided you ensure you’re on a secure connection (i.e. https). However, this is generally not the safest option. Most of the comments I came across suggest that it’s a best practice to use a VPN connection whenever you tap into a public WiFi hotspot (even if you’re on a wired hotel connection), and doubly so if you are going to be on said public network for an extended period of time.

I’m opting for the more secure solution. It’s a low-cost security measure. It’ll give me peace of mind. But which trusted service should I use?

I started out by trying two free options. The first is the popular HotSpot Shield. This service works as advertised, but I found that it notably decreased my connection speed. It also requires the installation of an application that resides in the menu bar. When it’s launched, it fires up an ad-based browser page that is a bit obtrusive, but not too bad. All considered, I concluded that it’s a good option if you’re looking for an occasional-use VPN while, say, at a coffee shop for a few hours. Hotspot Shield also offers a free iPhone VPN option. While the iPhone service was very simple to set up, I could not get it to work on my iPhone after trying for several days.

The second free VPN option I tried is called ItsHidden. The caveat with this free service is that you’re booted off of your connection every 20 minutes. If you don’t want to be disconnected after a set period of time, the service offer a pay option for $12.99 a month. There are two things I liked about ItsHidden. First, it requires no software installation. Second, it was a lot speedier than Hotspot Shield. However, I felt uneasy about entrusting my longterm online activity to the service. Their website offers no clues about who they are, where they’re located, or how long they’ve been in business. And, frankly, it looks like the site was put together in someone’s basement. It doesn’t inspire confidence. I read in one forum that the main reason this service was set up is to accommodate BitTorrent traffic. I’m sure there’s a lot of legit BitTorrent traffic taking advantage of this service, but I couldn’t shake the feeling that it was, well, kind of shady. So I moved on.

I narrowed down my options to two popular pay options from long-established VPN companies. One is called WiTopia. The other is called HotSpotVPN. Both appear to be great options. The deciding factor in my case was that WiTopia only offered a year subscription, while HotSpotVPN offered month-to-month (and even daily) rates. If you are looking for a long-term relationship, WiTopia is substantially cheaper. They offer one year of 256-bit encrypted SSL service for $60 (in comparison, HotSpotVPN would cost about $138 for a year of 256-bit SSL).

The nice thing about HotSpotVPN—in addition to short-term rates—is that the SSL option offered by the company comes with an additional free PPTP connection, ideal for setting up VPN on an iPhone or iPod Touch. I opted for the cheaper $10.88 month Blowfish 128-bit encryption option after reading in several forums that this amount of encryption, while on the low end of the spectrum of what’s available, is more than adequate.

So there you have it. I signed up yesterday. It works great on my Mac and my iPhone. Significantly, I’ve found no noticeable speed difference while using it. Setup is quite easy: HotSpotVPN e-mailed me a zipped file with my encryption keys and certification files with easy-to-follow instructions about how to install them in my user Library. They also offered up the option to install Tunnelblick, an open source GUI for OpenVPN on the Mac (OpenVPN, I’ve learned, is used by most consumer VPN services).

I can’t comment on Tunnelblick, however, because I didn’t install it. I use an alternative paid VPN client called Shimo for my VPN connections, which I highly recommend. If you’re curious as to why I use Shimo, the main reason is that it seamlessly imports Cisco VPN settings (which is what I use for work). If you’ve ever used the abysmal Cisco VPN client, you’ll understand. Shimo allows me to easily switch between Cisco and, now, my new HotSpotVPN service. I can connect and disconnect from each VPN service in seconds.

One final note: I learned during this process that SSL is generally the best option if you’re looking for the fastest solution that will work anywhere. If you decide to use a VPN service whenever you access a public network, SSL is the way to go.

in tip | 987 Words

Aviary Now Free

Aviary, a slick collection of browser-based design and editing tools that I wrote about last February, is now free.

From the Aviary blog:

We have long felt that to better serve our core mission our complete feature set needed to be in the hands of everyone – not just those who could afford it. Fortunately, our recent round of funding (by Spark Capital, Bezos Expeditions & others) enables us to finally achieve this goal…

Aviary remains a socially-focused suite of applications, meaning that sharing and derivative works are encouraged. ‘Free’ means that all users may now save private files, add custom watermarks or go watermark-free for creative works, and access all Aviary tutorials. As opposed to the free online version of Photoshop, there are also no storage limitations (Adobe charges you if you go over 2GB).

This is an amazing collection of free tools. For those who are following the current Flash debate, note that these tools are Adobe Flex/Air-based. For artists, note that you own full rights to all works you create with these tools. For those who can’t afford the pricey Adobe Creative Suite apps, note that this suite is a surprisingly powerful alternative.

I like to think of Aviary as a creative playground. Even if you own the Adobe Creative Suite, you may still find that the Aviary tools are a lot of fun to play around with, especially Peacock (the Effects Editor).

in tip | 237 Words

Upgrading to WordPress 2.9

I just upgraded to WordPress 2.9, neglecting beforehand to deactivate my plugins. This is a mistake. If you’re using and install updates manually as I do, ensure you turn your plugins off. Also ensure you take the time to back up your site and your MySQL database. It’s worth the extra effort in case anything else goes wrong.

At any rate, after I performed the update, I could see my site but was unable to access wp-admin. The solution: I removed all of my plugins using my FTP client. It loaded without a problem after that. Then I added the plugins back one at a time until I found the offending item. In my case, it was WP Security Scan. I’m sure the developer of this plugin will release an update imminently, but it is currently incompatible with the 2.9. Once I removed it, all was well.

in tip | 147 Words

The DNS choice

Last week, the tech world was abuzz with the launch of Google’s new public Domain Name System (DNS) resolution service.

Since I posted a while back about OpenDNS, I thought I’d share my thoughts on this subject. The main question I set out to answer is whether or not I should switch from OpenDNS to Google’s Public DNS?

As I began this experiment, my most important criteria was speed. Which service offers the fastest browsing experience? To answer that, I searched around and discovered this helpful post on TechSutraGoogle DNS vs OpenDNS: Google Rocks for International Users.

One of the readers over at TechSutra (Stevan Bajić) wrote the following bash script to test out the speed of four popular alternative DNS services. To use this script, run this in terminal (you can enter any domains you want here):

isp=$(dig +noall +stats 2>&1 | awk '$2~/^SERVER:$/{split($3,dnsip,"#");print dnsip[1]}');
s=" ";
header=("Domain${s:0:23}" "Your ISP${s:0:10}" "Google${s:0:10}" "${s:0:10}" "OpenDNS${s:0:10}" "DNS Adv.${s:0:10}");
echo "${h}";
echo "| ${header[0]:0:23} | ${header[1]:0:10} | ${header[2]:0:10} | ${header[3]:0:10} | ${header[4]:0:10} | ${header[5]:0:10} |";
echo "${h}";
for i in "" "" "" "" "" "";
echo -ne "| ${ii:0:23} |";
for j in "${isp}" "" "" "" "";
r="${s:10}$(dig +noall +stats +time=9 @${j} ${i} 2>&1 | awk '$2~/^Query$/{print $4" "$5}')";
echo -ne " ${r:${#r}-10} |";
echo -ne "n${h}n";

I ran tests at different times of the day, and on different days. For me, OpenDNS and Google were consistently fast. Results for Level3, DNS Advantage, and my ISP varied widely (sometimes I’d get decent results, sometimes response times were abysmal).

While the results I received from Google and OpenDNS were best, the difference in speed between the two was negligible. We’re talking milliseconds here, after all. I don’t think I’m really going to notice the difference between a response time of, say, 11 ms and 13ms (although research indicates that milliseconds do makes a difference).


One think to keep in mind is that the initial test you perform may return slower results than subsequent tests for some obscure sites. The first time you search for, for example, (my wife’s blog) the DNS service will likely have to go out and get this IP address from an authoritative server. After that first lookup, the IP will be cached with the DNS server, so the response time will be quicker for subsequent tests. In short, run multiple tests.

My results jibe with those coming in from readers at TechSutra: that OpenDNS may have a slight edge for many U.S. locations, while Google DNS may have the edge for users outside of the U.S. Best to test it out the alternatives for yourself.

So, I’ve established that Google DNS and OpenDNS offer comparably faster DNS lookups compared to my ISP. Both services also offer security features to make browsing safer (my ISP may have these features, but I have no way of knowing what’s going as these details aren’t published. I have greater confidence that Google and OpenDNS DNS servers are not and will not be compromised).

Now, which to choose?

1. Do I want to use yet another Google service?

I’m not too worried about this. Google privacy policy is very clear. I’ve experienced no cause for concern with my Google services.

2. Do I have a problem with the way OpenDNS operates?

When I began this comparison, the answer was ‘not really.’ After pondering this for a while, I have to say I do have a problem. With OpenDNS, if you type in a domain that does not exist, you are redirected to an OpenDNS ad-based search page. This is bad behavior. I knew this already, but I didn’t worry about. I turned off NX Domain redirection in my OpenDNS user settings. Here’s the part that annoys me: OpenDNS describes this feature as ‘typo correction,’ but say nothing about how this is tied to redirection to their own ad page if the domain can’t be resolved. They should take a cue from Google and explain this more clearly. Sure, this service corrects typos (changes .cmo to .com, for example), but this is only a minor feature of a service that’s really about generating revenue from the mistakes people make in entering URLs. In addition, when you perform a Google Search using OpenDNS, your request is redirected to an OpenDNS server before going to Google by default. This may also be turned off (by unchecking ‘Enable OpenDNS Proxy’) but it’s not really clear how to do it. And let’s face it, most users aren’t going to mess with OpenDNS advanced settings. Lastly, you must have BOTH ‘Enable OpenDNS Proxy’ and ‘Typo Correction’ turned on to enjoy the benefits of OpenDNS’ content filtering features (one of the big reasons people like OpenDNS).

Here’s the bottom line: OpenDNS offers a fast DNS service that includes many extra free or pay features. It’s a good option if you need those extra features and aren’t worried about the way the service handles your requests. The main gripe I have with OpenDNS is that they are not transparent about how they’re doing business. Google, on the other hand, offers a fast DNS service and reliable security features. It’s a good option if you don’t need extra bells and whistles.

Think I’ll switch over to Google DNS.

iPhone App Freebies and Sales Abound

This may be old news to most readers, but in case you’ve missed it, Blacksmith Games has organized a holiday giveaway of one iPhone game per day for the month of December. It’s called Appvent Calendar 09. Some of the games are quite good. Today, for example, you can pick up an excellent well-designed, and beautifully illustrated game called Blimp from Craneballs Studios (normally $2.99).

Also of note on the App store, Nuance Communications recently released a very impressive spoken word-to-text translation tool called Dragon Dictation. It’s free for a limited time. I’m very impressed with the accuracy of the app. It’s produced using the same engine behind the popular (and expensive) desktop clients Dragon Naturally Speaking and Mac Dictation. Once you capture your text, you can copy it to the clipboard, email it, or send it as a text message. Note that the app works by ferrying your voice recording to servers at Nuance, hence you need a WiFi or cellular connection. While translation speeds are zippy over WiFi, it’s a bit slow on my Edge connection. Of course, it’ll be faster on the 3G network. It’s definitely worth picking up while it’s free.

Last but not least, it’s worth your time and effort to monitor price drops and giveaways on the App store this month. There are a ton of one-day-only and limited-time holiday deals hitting the store each day. I use a free iPhone/Touch app called AppMiner to keep on top of the deals. and are also good places to monitor price drops and promotions online.

in tip | 262 Words

Free Snail-Mail Holiday Postcard from Gmail

snail-mail holiday card on your behalf to a (U.S.-based) recipient of your choice. There are six Gmail-themed cards to choose from.

A kind gesture? A small test of a future Google service? A subtle nudge to get would-be Gmail users online? The Gmail team says it’s simply a ‘token of appreciation to our most enthusiastic fans.’ My guess is that the offer will be up a week or less before they’re overwhelmed by requests.

in tip | 77 Words

Killer Dropbox Services Add-on

Dropbox to ferry files around using the public folder, don’t miss this time-saving Services add-on.

Once installed, right-click on any file on your Mac, select the ‘Services’ menu, then choose either ‘Move’ or ‘Copy to Dropbox.’ That’s it. Your file is moved (or copied), and the public link to the file is copied to your clipboard, ready to send.

Many more useful services are available at Mac OSX Automation.