This guide will demonstrate a method for creating multi-track, multi-media, self-contained quicktime movies. A good example of this would be the presentation format where there are multiple tracks of media that need to be coordinated with specific timings. Perhaps there is a ‘talking head’ video track, and a series of slides that need to be synchronized with the video. Herein you will learn some of the dark secrets of QuickTime Pro that allow this media to be arranged and nicely wrapped up in a single quicktime movie file, suitable for rtsp streaming, fast-start download, or any other non-network delivery mechanism.
In case you are wondering what this method has to offer above and beyond more conventional tools like iMovie, allow me to illuminate. iMovie forces all video elements into a single video track when you export to QuickTime. This means that all visual elements will be compressed with the same codec. Another problem with iMovie is that all visual elements are forced into the same time base (in the case of iMovie which works only in the DV format, that is 30 frames per second). For an efficient and good looking presentation, we want to include tracks of various types with different properties in a single quicktime wrapper. This allows our slides to have a different time base and compression characteristics than the video portions.
Normally this type of work would require a powerful quicktime authoring tool such as LiveStage Pro, but we will do it entirely with QuickTime Pro. One of the coolest things about QuickTime is the way it allows for placement of non-time-based media onto a timeline using the Add Scaled function, which we’ll be using a lot. In effect, it can stretch a single image to occupy any desired duration on the time line, and it can do this without converting the still image into a conventional video track that has a frame rate. This is similar to what you get when using iPhoto to export a quicktime slide show, except we’ll be using more than just slides.
This guide includes step-by-step instructions as well as video walkthroughs captured with Snapz Pro. My whole idea for this project came to me one day as I was surfing FreeCache and I happened up on a quicktime movie of Ben Hammersley speaking about “the semantic web” (oooh, aaah :). The movie was great, but the slides he was showing were not readable at all. This, I thought, was sadly unfortunate, as the movie did not realize the full academic value of this speaking engagement. I have seen the coolness of fancy QuickTime authoring at sites like macenterprise.org, but had never really tried my own hand at it. So, I decided to give it a go. Searching around Ben’s webiste, I found the series of slides he was showing in the video which I would attempt to roll into some sort of QuickTime preso.
Finally, before we get started, shouts out to a QuickTime-savy friend deep within that fruit company who wishes to be known only as devotion :) His knowledge of QuickTime voodoo helped quite a bit.
For this walkthrough, we’ll use the following ingredients:
- A QuickTime movie, relatively small, with an audio and video track of the talking head variety
- Slides to show throughout the movie. They should all have the same attributes with respect to size, co0dec, etc
- A background image
- Open QuickTime Player.
- Choose “Open Image Sequence” from the File menu.
- Select the first of your images, which should be named sequentially.
- Select the default of 3 seconds per frame.
- Save the resulting movie, making sure to select the “self contained” button.
Queue up the video
- Open the quicktime movie that contains the video / audio track.
- Find the exact spot where you wish the *second* slide to appear, and note the time in the controller. This will be the length of the first slide.
- Select some of the first slide from the slides movie created previously (hold shift while dragging in the timeline, adjusting the crop markers as necessary; exactly how much you select doesn’t matter).
- Copy the selection to the clipboard.
- Open Timeline.mov.
- Make a selection from the beginning of Timeline.mov that equals the duration of the first slide. Start by shift-clicking somewhere in the timeline, then adjust the right-hand crop marker as necessary.
- From the Edit menu, choose “Add Scaled”.
- Again from the Edit menu, choose “Extract Tracks…”, and pick the Video track. A new movie is created that contains only this track (and not the text track).
- Close Timeline.mov without saving
- Save the new movie as slides_timed, being sure to select the “self contained” button.
- Go back to the original video and find the exact point in time where the third slide is to begin. Find the difference between this figure and the previous time to get the duration of the second slide.
- Open the original slides movie, select a bit of the second slide, copy, select the desired duration in Timeline.mov, add scaled, and extract the video track.
- Select all in this new movie, and copy.
- Go to the very end of slides_timed, and paste. slides_timed now contains the first two slides with each having a specific duration. You get the picture.
- Repeat this process to slice out more slides, pasting each one onto the end of slides_timed. Be sure the playhead is at the very end of the movie before you paste (and it should be if you don’t move it after pasting). Eventually you’ll end up with a slides_timed movie that is (hopefully) roughly equal in length to your main video.
- In slides_timed, select all and copy to the clipboard.
- Return to the main video and place the playhead at the beginning.
- From the Edit menu, select all and then add scaled.
- Open the properties window by choosing “Get Movie Properties” from the Movie menu (command J).
- Select “Video Track 1” (which corresponds to the a/v track) and “Size” from the two menus in the Properties window.
- Click the “Adjust” button.
- Click the main video track, and then drag it around to position it as desired relative to the slide. Use the arrow keys to nudge one pixel at a time.
- Click the “Done” button when finished.[/list]
- Feed the background image to QuickTime Player to open it as a movie.
- Select All, copy, and go to Timeline.mov again.
- Select any range of time and Add Scaled.
- Extract the image track.
- In the resulting movie, select all and copy.
- Return to the main video, select all, and Add Scaled
- Pull open the Properties window, select the image track, and position it as described previously, this time choosing Video Track 3. Again, use the arrow keys to nudge.
- Use the “Layer” menu in the properties window to adjust the z axis position of the layers.
- From the File menu, choose “Export”.
- Select “Movie to Hinted Movie” from the Export menu, and “Default Settings” from the Use menu. This will create hints allowing both rtsp streaming, and ‘fast-start’ downloads via http or ftp
That’s it! There is no step 41! You now have a self-contained, hinted quicktime presentation for the low low price of around $30, and however much 4 hours of your time is worth ;). Obviously this can be taken in about a million different directions, and the design procedures documented here should be pretty extensible.
It will probably take a few tries to get this going smoothly. The bulk of the work is creating the timed slides movie; exactly how much work depends on how many slides there are. Once the timed slides movie is done, the compositing steps are pretty easy. If you mess up in a compositing step, you can use the “Delete Tracks…” function to remove tracks individually.
The movie I produced for Ben should be available on his website, but is also linked here.
Although I will take no time here to talk about the various quicktime codecs and data rate considerations, please be sure to be as kind as possible with respect to the data rate of your movie. This is especially true if it is to be delivered over a network. Any cleanup or compression of any of the elements should be done *before* compositing them into the final movie.
As a final note: don’t try to get tricky and use clipboard editing to shorten or extend the slides. It’s always better to use the Timeline.mov method to get the length exactly right. For example, pasting a single 60 second segment of a still image is much less resource consumptive than pasting 6 copies of a 10 second segment of the same frame. You can see the evidence by experimenting with these methods and keeping an eye on the movie’s info window (pay attention to the movie size and data rate).
Lots more goodies like this can be found in the book QuickTime for the Web, which also includes a registration key for QuickTime Pro. Highly recommended for anybody who finds this article interesting.
Have fun, and feel free to reply with any additional tips or suggestions.
As a seriously final final note, if you’re ever composing a lengthy post such as this, don’t do it in your browser. If you do, and then you accidentally quit the browser before submiting the post, you might just be screwed… unless of course you knew enough to check your browser cache…
andre@gyro[Caches/Safari]grep -r 'voodoo' * Binary file 00/01/3456279555-1460426007.cache matches Binary file 09/15/3180696217-0503413757.cache matches andre@gyro[Caches/Safari]strings 00/01/3456279555-1460426007.cache | less