FCP howto: Use Batch Export to create a directory of still frames from a bin of clips

February 3rd, 2010

If you’ve got a bunch of clips in a Final Cut Pro Browser window, and you’d like to quickly generate a still frame for each clip, you can use the “Still Image” feature of FCP’s ancient “Batch Export” feature to automate much of the process. Here’s how:

Rt Overlays (Ignored By Utest)
1. Choose a representative frame in each clip. (Click any of these images to see them nice and big.

Making Stills From Fcp Step 2
2. Send the clips to FCP’s Batch Export feature and bring up its “Settings” window.

Exporting Stills From Fcp Step 3
3. Choose the destination for the exported files and set Batch Export to create still images.

The result will be a folder full-resolution PNG images, each named after its parent clip, deposited in the chosen destination folder.

I often end up processing directories full of such uncompressed images further using the excellent command-line Imagemagick utilities using the tcsh shell’s1 “foreach” command to iterate through all the images.2 It generally goes a little something like this:

$ tcsh3
% cd directory_of_images4
% foreach foo (*.png)5
foreach? convert -geometry 330x800 "$foo" "$foo:r.jpg"6
foreach? rm "$foo"7
foreach? end8

The result of this command is a set of JPEG-compressed images, one per clip selected in step 2, each resized proportionally to fit within a 330×800 rectangle.

  1. This is also easy to do with OS X’s default bash shell, but I’m more fluent in tcsh. []
  2. You may prefer GraphicConverter, Photoshop, or MS Paint. Imagemagick combined with the command line is mad fast for both image transformations and automatically renaming files. []
  3. Switching to the tcsh for this because I have yet to internalize Bash's foreach syntax. []
  4. If you're unfamiliar with command lines and shells, please note that the "%" character here represents the tcsh command-prompt, the "$" in the previous line represents the typical Bash command-prompt. Don't type these characters in your commands, they're just here for show. []
  5. "foo" is a placeholder of my choosing. There's nothing special about the string "foo". You can replace it with anything you like, such as "image", "placeholder", or "your_mom". Just make sure to use the same string in place of all the "$foo" commands below. []
  6. Each time tcsh iterates through your commands, it will replace the string "$foo" with the filename of an image from the set chosen by "*.png", which is every file in the directory ending in ".png". Adding a ":r" to "$foo" indicates that tcsh should expand the filename but leave off the period and filename extension –in this case "$foo:r.jpg" removes ".png" from the file and adds ".jpg" in its place. The quotes around "$foo" are optional if your filenames do not contain spaces or special characters. []
  7. Removing the original png file because all I ever wanted were the tiny JPEGs. []
  8. One more note from Captain Obvious: If you try to copy and paste any of these commands, be sure not to copy and paste the superscript numbers that lead to these footnotes. []

assistant editor Unix tricks

January 25th, 2010
It’s time to take apart some Final Cut Pro xml and add some newly received VFX clips to the VFX database. One of these days, I’ll explain all of these steps and how they might be useful in other workflows. For now, enjoy a look at a relaxing vacation from graphical user interfaces and mouse-clicks; A trip to the Terminal. If you have any Unix or XML knowledge, there might be something of interest in here.

Assistant-2:20100125 CAB$ xmlstarlet sel -t -m "//children/clip"\
-v "name" -o "," \
-v "out - in" -o "," -v "in" -o "," -v "out" -o ","\
-v "media/video/track/clipitem/start" -o "," \
-v "media/video/track/clipitem/end" -o ","\
-v "media/video/track/clipitem/file/timecode/frame" -o ","\
-v "media/video/track/clipitem/file/name" -o ","\
-v "media/video/track/clipitem/file/timecode/string" -o ","\
-v "media/video/track/clipitem/file/timecode/reel/name"\
-n 20100123_vfx_received.xml | tee 20100123_vfx_received.csv

52A-2_01_VFX_v1,178,0,178,0,178,,52A-2_01_VFX_v1.mov,,
52A-2_02_VFX_v1,141,0,141,0,141,,52A-2_02_VFX_v1.mov,,
52B-2_01_VFX_v1,152,0,152,0,152,,52B-2_01_VFX_v1.mov,,
53-3A_01_VFX_v4,307,0,307,0,307,,53-3A_01_VFX_v4.mov,,
54-3A_01_VFX_v1,188,0,188,0,188,,54-3A_01_VFX_v1.mov,,
C100_C016_0920LS_03_VFX_v1,102,0,102,0,102,,C100_C016_0920LS_03_VFX_v1.mov,,
C102_C011_0903RU_03_VFX_v1,79,0,79,0,79,,C102_C011_0903RU_03_VFX_v1.mov,,
C102_C011_0903RU_04_VFX_v4,256,0,256,0,256,,C102_C011_0903RU_04_VFX_v4.mov,,
C102_C011_0903RU_05_VFX_v2,200,0,200,0,200,,C102_C011_0903RU_05_VFX_v2.mov,,
C102_C011_0903RU_06_VFX_v2,147,0,147,0,147,,C102_C011_0903RU_06_VFX_v2.mov,,

Assistant-2:20100125 CAB$ cd thumbs/
Assistant-2:thumbs CAB$ tcsh
[Assistant-2:additions/20100125/thumbs] CAB% foreach foo (*.png)
foreach? convert -geometry 330x800 "$foo" "$foo:r.jpg"
foreach? rm "$foo"
foreach? end
[Assistant-2:additions/20100125/thumbs] CAB%

The starting point is a bin of clips in an FCP project. I’ve exported that bin as FCP XML, and have also batch exported the clips inside it as stills (to PNG, the default). The commands above are the meat of the process. Then the comma-separated-value list of clips I generate with the xmlstarlet command gets imported into an openoffice (or Excel) spreadsheet (a step I’ve ommitted here), and is massaged into a csv format for import into a Filemaker Pro database of VFX clips. Finally I import the thumbnails for each clip into the database. Fun stuff, pretty much.

The theme of Tampa Intl Airport: Beware Falling Artwork

January 7th, 2010
I didn’t see any artwork fall on anyone at the Tampa International Airport today, but the art sure looked ominous.

See the full gallery on posterous

Posted via email from Zach’s posterous

Final Score

January 7th, 2010
Building wins by 2. ThyssenKrupp Elevator fans are permanently devastated.

Posted via email from Zach’s posterous

Becky’s Floppy Fantasy

December 26th, 2009

Posted via email from Zach’s posterous

Hot Wood, Crack Flame, and Log

December 26th, 2009
It’s log, it’s log, it’s big it’s heavy, it’s hot woooood!

See the full gallery on posterous

Posted via email from Zach’s posterous

Good shabbos and motzei Xmas y’all

December 25th, 2009

Posted via email from Zach’s posterous

Xmas is actually a celebration of Brad’s birthday

December 25th, 2009
Happy birthday Brad. What do you get for the person who has everything (that existed before 1950)?

See the full gallery on posterous

Posted via email from Zach’s posterous

Pu push it real good

December 25th, 2009

Posted via email from Zach’s posterous

4 8 15 16 23 42 reasons I’ll get nothing done in the next few weeks

December 9th, 2009
Namaste,

The package has arrived.

Posted via email from Zach’s posterous


Bad Behavior has blocked 253 access attempts in the last 7 days.