Hand-to-hand combat with Mac videos

I just survived several days of intense fighting with my Mac, and thought I’d share my tale of woe.

The basic problem is that there seems to be a big product gap between the two uses cases of “I’ve got a 30 second home video I want to put on a DVD”, and “I’m a professional video editor”.

For example, I needed to create a 45 minute Flash video for the CodeRage II virtual developer conference that CodeGear (Borland) puts on every year. I’m giving a talk on “Impact Analysis for the Rest of Us”.

I used SnapzPro X to record the video on my G4 PowerBook, and ran into the following problems:

  • I couldn’t use H.263/H.264 to record, as otherwise the video would be blank. I wound up using Apple’s “Animation” codec, which didn’t compress it very well, but was reliable.
  • I couldn’t use audio compression, as otherwise it would be scratchy. So I went for mono/8-bit/22.050 KHz, to keep it reasonably small.
  • Sometimes the recording would be really scratchy. Once this was due to my mic (I’m using a Sennheiser headset), but the other two times it was SnapzPro…I could record with no problems using Quicktime. Restarting my Mac solved the problem both times. I hate restarting my Mac to “fix” a problem – it feels like a cop-out.
  • I was getting white flashes at the end of the video segments. Changing the key frame rate to every 3 frames seemed to solve that problem. Before that it was on “automatic”, so maybe that doesn’t work at low frame rates – I was only recording at 3 frames per second.

But now I had a number of video segments (30 seconds to 5 minutes in length) that I needed to clean up, then merge, and I had to be able to generate a Flash .flv file as the final product.

The upgrade to Quicktime Pro gave me the basic editing I needed, though the controls at the bottom of the movie for specifying segments should be improved. If you want to get rid of a 2 second snippet in a 400 second record, it’s a real PITA.

But when I tried pasting segments into one master QT movie, and then saving the result, I’d always get a “movie contains invalid data” error.

So then I purchased VisualHub, which can stitch together QT .mov files, and also save as Flash .flv. Unfortunately it can’t stitch Flash, so you have to first create a combo .mp4 file, and then convert that to Flash.

But the resulting Flash had a weird color shift, where everything was washed out. Working backwards, the problem happens during the conversion from .mov to .mp4. I found one post about this on the net, where the solution was to use the advanced VisualHub settings and force the conversion of .mov to .mp4 to use ffmeg (low level support) versus Quicktime. Huh? But it worked, which was great.

Oh, and setting the audio bitrate to 64 kbps in the Advanced settings helped remove most of the scratches and echos in the audio track.

Unfortunately using VisualHub to stitch files together caused another problem, where the audio/video tracks would get out of sync. The movie would wind up playing a few seconds faster than the audio – and since this was a tutorial, with lots of “so now I click on this thing” instructions, that wasn’t acceptable. Plus there were odd white flashes inserted between some of the movies.

Back to the drawing board. Turns out I can generate a combo movie and then export it from QTPro, even if I can’t save the results, and the exported move seems valid. So then I can just use VisualHub to convert that to Flash, and avoid any time skew.

But the conversion of 20 minutes of video suddenly took 80 minutes, which was much slower than before.

Ah, when exporting it I can save it using the same Sorenson 3 video codec as what Flash uses for its .flv format. And this then dropped the conversion time in VisualHub back down to a reasonable 13 minutes.

But I’m back to having color shift problems in the resulting move. Looks like the problem happens when converting from the color gamut used by the Animation codec to the color gamut used by the Sorenson 3 codec, at least when Quicktime is doing the conversion.

So my final solution was to export from Quicktime Pro using the same “Animation” codec, which generates huge files (400MB for my 40 minutes of video), but without any color shift. Then I take this combo file in VisualHub and convert it to Flash (.flv) with that funky “Force ffmpeg” advanced setting, and the end result is good. Plus there’s a bonus in that the conversion time is once again reasonable, about 15 minutes on my older, slower PowerBook.

Compared to the time required to outline, record, transcribe, edit, and re-record the presentation, the video editing time was probably an order of magnitude more.

And what’s really sad, if you use a Mac and believe that it really is “the digital hub” that Jobs talks about, is that the preferred solution for creating these types of presentations is to use Camtasia Studio, which is a Windows-only solution. But wait, there’s also Adobe’s Captivate – oh, but that’s also Windows only. I think Steve needs to stop by my office for a chat.

— Ken

Some additional notes from my experience –

  • I used setmy.browsersize.com to make my browser window exactly 1024×768.
  • I ran PowerPoint in it’s “fit to window” mode, and made it’s window match the browser window.
  • I used SnapzPro to record a fixed size (1024×768) movie at 3fps, then save as Apple Animation, 3fps, key frame ever three frames, thousands of colors, high quality. And the audio was no compression, 22.050 KHz, 8-bit, mono.
  • I’d open the resulting movie file with Quicktime Pro, then delete any gaps and mumbles, and save it to a new file.
  • When all the movie pieces were recorded, I copied the first piece, named it “Combo”, and then started inserting the other pieces one at a time. I’d open the next movie, select all, copy, close the movie, and then select “Add to movie” in the combo movie.
  • When I was done, I’d try to save the movie. Sometimes the worked, sometimes I’d get an error saying the movie contained invalid data. Using a lower value for the key frame rate seemed to reduce the odds of this happening.
  • Regardless, I’d then export it using the same video settings from SnapzPro, with a key frame every 3 frames.
  • Then I’d launch VisualHub and drag the exported combo movie into its window. I’d set the output format to be Flash, and check the “Raw .flv format” checkbox. In the advanced settings window, I’d check the “force: ffmpeg decoding setting”, set the framerate to 3, and set the audio bitrate to 64 (Kpbs), not 48 like the picture below.
  • Then I click the convert button and pray.

Some pictures of the process. First, the Quicktime export settings:

quicktime-export-settings.png

The VisualHub conversion window:

visualhub-conversion.png

And the VisualHub advanced settings window:

visualhub-advanced-settings.png

Advertisements

4 Responses to Hand-to-hand combat with Mac videos

  1. rbe5000 says:

    I had similar problems last year building a presentation for Code Rage on my Mac. I recommend the rehearsal with the Code Gear guys next week to see that it goes well. I ended up having to do some last minute tweaks before the presentation last year.

    See you at the virtual conference.

    Bob Evans
    Agitar Software

  2. kkrugler says:

    @Bob – Thanks for the input. I’ve got a session scheduled this morning, and I’m burning incense in the probably vain hope that no tweaking is required.

    BTW, we should talk about how we could best add Crap4J to Krugle, to automatically analyze all of the Java code we’ve got.

    — Ken

  3. rbe5000 says:

    Hi Ken,

    Sorry I never responded to this. It’s hard to keep track of the blog comments spread out across the blogosphere.

    I hope your presentation went well.

    It would be great to talk about adding Crap4j to Krugle. You can reach me at NOSPAM robert DOT evans AT acm DOT org NOSPAM

    Bob

  4. Brad Landers says:

    Sorry, I know this is from last year, but I think I might be able to offer some insight here. I too struggled with FLV output until I found VisualHub, but there is a critical component in your workflow that differs from mine. I use iMovie HD (v6) to edit my screen captures together with transitions and title frames. From there, I output to “full quality”, then use VisualHub to render an FLV without any special settings. The output has been flawless thus far.

    Also of note is that I have been through the ringer with ffmpeg and creating FLVs. I avoid it at all cost. The audio-sync issue you mentioned is the most common issue I’ve run in to when using ffmpeg and FLV output. It seems to happen mostly when the video has been compressed prior to using ffmpeg to convert to FLV.

    Hope that helps as well! 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: