Video Frames to Grid of Images

Hi, I made a tool like this in Quartz Composer a while ago and thought it would be an interesting project to repeat in Vuo.

Set a path to an H264 encoded video and a number of frames stills will be distributed across a grid. I need grids of frames for animation analysis at work and printing summaries of animations. Scrub mouse X to move through the videos timebase. Srcub Y to effect the gap size…

The ‘Arrange Layers in a Grid’ made it a breeze, but there are still a few issues, but it never really worked in QC:

  1. performance of the editor - it crawls on my Early 2013 Macbook Pro. I get a very irritating, uninteruptable artefact when a dragged noodle locks into a drag and spins off scrolling the editor window on frantic random clicking makes it stop moving.

  2. I always have to force quit the viewer app. This might be the sub-optimal design of what I’m trying to do. So I need to edit with the player stopped.

Things I need to help:

  1. Exposable editable settings with real-time preview like the publishable parameters GUI in QC otherwise tweaking the spacing / scaling is almost undoable.(re-compile is what crashes the viewer app). I’ve got the time scrub on the X position of the mouse and the ‘scale of the gap’ to the y. These are from the ‘change grid spacing’ demo and may need tweaking. I’ve played but the crashes make iterating over this composition almost impossible.
  2. Less visual noise in the editor app
  3. An Iterator (though that didn’t really work for this in QC).
  4. Export frame to image node.
  5. Input splitter node
  6. Group / colour coding / annotating collections of nodes (the notes feature in QC)

Any help to get the following would be appreciated

  1. autoscale the layer and the padding layer to the window size
  2. better tweaking of the Y gap
  3. use the aspec-ratio of the video to drive the even distribution of the frames (but the ‘arrange layers in a grid’ node is just wonderful! but I’d love it to be able to add padding to the images and get the even frame working nicely)
  4. Choosiing the frame-gap interactive - it is currently hard coded to 1 (is that one frame or one second?)

However, I like the direction of things… nice job.

Kind regards Ian Grant

video_frames_in_grid_001_IG.vuo (49.9 KB)


Your post covers a lot of ground!

  • We’ve been able to reproduce your composition hangs, and we’re investigating now. In the future, please help us out by submitting a bug report when your composition hangs or crashes.
  • Yes, the drag scroll of cables is an issue. It’s scheduled to be fixed in 0.9.
  • Exposable editable settings — planned for future. Meantime, you can connect a “Share Value” node to values you’d like to modify, and edit its input. This is the Vuo equivalent of an input splitter. You can then use a “Fire on Start” or “Fire Periodically” to propagate that change. Note that every trigger port in a composition can be manually fired by using the option that comes up when you right click on the trigger port.
  • Export Frame to Image and Iteration support is future work.
  • Comments are planned. As you know, you can color-code nodes. You can also change their titles to be more descriptive.
  • We’re planning to add a margin port in 0.9 to “Arrange Layers in a Grid.” In the meantime, you could change scaleToFit to false, then set the size of each layer smaller than the size it would take up in the grid — that would effectively add padding. See File > Open Example Composition > vuo.layer > Change Grid Spacing.
  • “use the aspec-ratio of” — We’re planning to add an “arrange layers with wraparound” node; maybe that would help?
  • “Choosiing the frame-gap interactive” — frameTime is seconds. Perhaps instead of adding 1,2,3, add 1 each time, and chain the “Add” nodes. Then use “Share Value.”
  • You might investigate if the “Enqueue” and “Get Item from List” nodes would be useful in this composition.

In Vuo 0.9, we’ve made some improvements that should help with the issues you mentioned:

  • We added the ability to edit values in published ports
  • We fixed some issues causing the VuoCompositionLoader app to hang during livecoding.

And, for Vuo 1.0, we’re working on more performance improvements.