I've been doing some webinars lately. There's a webinar schedule on the Smart Bear web site and I wanted to add replay capability. In other words, if someone missed a webinar they could at their convenience click a link and watch a recording of it. Naturally, folks who choose this option won't be able to ask questions, but at least they'll be able to see and hear the demos of our code review tool.
So I thought: okay, no big deal. I'll just take the recording that I created during the webinar and convert it to Flash. Upload the end result to Amazon S3 (where we store some of our larger files) and then I'll be done.
The "convert it to Flash" part was not trivial. This blog entry chronicles some of what I tried and finally, what actually worked.
We use GoToMeeting/GoToWebinar from Citrix. And in general I've been very happy with how both services work. There is an option to record a webinar and you have to choose which format should be used for the recording:
I always choose the second option because otherwise I'd need a (free) codec from Citrix in order to play the resulting recording. The upshot is that after the webinar ends, my system is tied up for a while by some Citrix software that is converting the recording into a "standard" .wmv file.
And sure enough, if I use a recent version of Windows Media Player, I can watch and listen to the resulting .wmv file without any problems.
The problem is that I don't want to publish a .wmv file. I would prefer to provide Flash, since the Flash player is pretty-much available everywhere and Windows Media Player is not.
Initial Attempt: Camtasia Studio
My first attempt was with Camtasia Studio from TechSmith. I had used it quite a bit in a past life and was always impressed with it. Sure enough, it imported the .wmv file with no problems and then I was able to easily drag-and-drop it to the timeline. Unfortunately, when I tried to publish the end result as Flash, Camtasia Studio would hang with 0.6% of the task complete.
Hmmm... maybe try a different tool. This was a big mistake that cost me several hours of frustration - I should have first done more research on the underlying problem.
I charged headlong into the world of the FFmpeg command line utility. It trundled along for a while and then reported a buffer overrun error. As Brandon would say: Fail.
Paul recommended Kino. So I fired up VirtualBox and started an Ubuntu installation that I use for Linux stuff. Kino was able to read the .wmv file and convert it. Unfortunately, the end result was a video that was only 13 minutes long. Since the input was 57 minutes, Kino was clearly not going to work.
Leveraging the Work of Others
At this point the common denominator was that the .wmv file produced by Citrix seemed to be kind of odd. In other words, three very different tools all had some sort of trouble reading/converting it. I'm not a codec guru so I started searching the web for tips.
The first thing I found was this excellent entry from Sam Charrington. I thought: "I have hit gold!" I downloaded the Windows Media Encoder and followed the instructions. Alas, no joy. Camtasia Studio got much further, to 22% complete, but it still locked up when trying to produce Flash output.
I did find an interesting clue on the blog entry from Sam Charrington: "Apparently the WMV files produced by GoToMeeting don’t contain the
timing/keyframe information required to be properly rendered by Camtasia."
Hmm.... perhaps that missing information also confuses Kino and FFmpeg.
Searching the TechSmith site, I then found this gem: "The Microsoft Screen Capture codec does not contain time stamps.p These are needed for Camtasia to edit and produce a movie.p This essentially puts gaps in the file that Camtasia cannot read."
The folks at TechSmith recommended two workarounds: re-capture the video with their tool or try re-encoding it with Windows Media Encoder. They specifically state that the Windows Media Encoder approach might not work in all cases, which I had already discovered.
The only guaranteed-to-work method I found was to play the .wmv file that Citrix produced in Windows Media Player. Capture that playback with the Camtasia Recorder utility. Yes, this means you have to play the whole recording - in my case, all 57 minutes of it. And during that time, you cannot use the portion of the screen that is displaying the video for anything else.
I did not attempt to capture the sound with Camtasia Recorder. Instead, I set the input option to the microphone and then muted the microphone. So the end result was a video (a .camrec file in Camtasia terminology) that had images but no sound.
Adding the sound from the original .wmv was easy. I used Camtasia Studio's import media option to add the original .wmv file to the Camtasia project I created with the .camrec file. I then right-clicked the .wmv file and chose Add to Track > Audio 2.
That gave me a timeline with video from the .camrec file and audio from the .wmv file. I was then able to publish the end result as Flash.
I saw some complaints from folks who feel like all this hassle is Citrix's fault. But from what I can tell, it is really Microsoft's issue. What Citrix could do that would really help me out would be to partner with TechSmith and offer an option to record in their format. I dream of some day seeing this as my list of options: