.
 
.

ÜberwareTM

View Forum Thread

Anyone can view the forums, but you need to log in in order to post messages.

> Forum Home > Support > Best Method FFmpeg x264 Quicktimes from Rendered Image Sequence?

  Mon, 28/Nov/2011 8:48 PM
John
6 Posts
We want to automatically render Quicktimes of every job sent to our farm. I'm looking for a recommendation for the best method based on our set up.

We are rendering EXRs out of Nuke 6.2v1 on a mixed 32bit XP and 64bit Windows 7 farm.

Can I send a post-render command to FFmpeg on one machine to grab the output image sequence? Or perhaps there's a better method?
   
  Wed, 30/Nov/2011 8:12 PM
Robin
1138 Posts
You have several options:

1. You can submit a second job that is dependent on the first that generates the movie. The job should have a single packet to do the whole movie on a single machine, and you would set the -WaitForJobID to the ID of the first job. This method can be automated by a submit script. There is a Nuke submit script available on our web site here:

http://www.uberware.net/download/smedgeRender.py

In this case, the second job is an independent job, which will appear in the system as a separate job in the queue. It will be run on one of the engines in the pool to which this second job is assigned. This gives you the most flexibility.

2. You can add an event command to the Job. You probably want to use the JobFinishedSuccessfulEvt for this. You can add this command manually to the event command in the GUI (using the Submit Job window), or you can have it added to a job you submit by a script as well. The event will not appear in the job queue as a separate job, and it will always be run on the Master machine.

3. You can run Herald on a machine of your choosing, and add an action to run the movie generating script that way. Again, you will probably want to follow the JobFinishedSuccessfulEvt for this. In this case, you would only need to set up the action one time, but it would need to be set up in a manner that would work with any job you set off. The machine that was running Herald would be the machine that did the work of generating the movie file.

Which way is best will depend on your pipeline and the machines you want to use. I hope this helps. Please let me know if you have any questions or need any help actually implementing any of these options.

Thanks,
-robin
   
  Mon, 05/Dec/2011 7:08 PM
John
6 Posts
Robin, thanks for your breakdown of my options. I'd like to pursue option 3.

Can you help me determine the Smedge variables to use in the Herald command field (for FFmpeg)?

As far is understand, I'd need a Smedge variable that points to the output frames, and a relative output path. For example:

$FFmpeg -i $( [smedge-output-frames] ) -vcodec libx264 -preset slow -crf 18 $( [output-path-relative-to-scene-file] ).mov

Does that makes sense?


Edited by author on Tue, 06/Dec/2011 2:34 PM
   
  Tue, 06/Dec/2011 2:19 AM
Robin
1138 Posts
Smedge holds the image format in the format for a printf format (e.g. the_file_name.%04d.tif), which should be acceptable to ffmpeg. You can access the image file sequences using $(ImageFileList). You can get a path relative to the scene by using $(Scene) and adding the "Path" parameter name command.

Say the scene is:

J:\Project\scenes\scene.nk

and you want to save the move in

J:\Project\movies\scene.mov

Your command could be something like this:

$FFmpeg -i $(ImageFileList) -vcodec libx264 -preset slow -crf 18 $(Scene.Path.Path)\movies\$(Scene.File.CutExtension).mov


You can find more information in the Administrator Manual. Parameter commands are described on page 15, the common parameters (including the RenderJob parameters where $(Scene) and $(ImageFileList) are described) starts on page 18, and the Nuke specific parameters are on page 108.

   
  Fri, 09/Dec/2011 5:41 PM
John
6 Posts
Hi Robin,

The $(ImageFileList) variable appears to be empty.

I can see the rendered frames in the job history and use the "Explore Images Folder" menu to browse the folder successfully.

We are using Smedge 2010 Update 1.

Do you have any idea why this variable may be empty?
   
  Mon, 12/Dec/2011 1:38 PM
Robin
1138 Posts
I'm sorry, I gave you the wrong parameter. $(ImageFileList) is the list of images detected by a specific work unit. You want to use the $(ImageFormat) parameter. Sorry for my confusion!

Thanks
-robin
   
  Tue, 13/Dec/2011 2:32 PM
John
6 Posts
Thanks Robin, that worked. :)

So for anyone else wanting to use this method:

  1. Download compiled FFmpeg build from http://ffmpeg.zeranoe.com/builds/

  2. In Herald, my Job Finished event initiates the Execute a command action which is

    "C:\Program Files\ffmpeg-git-985e768-win32-static\bin\ffmpeg.exe" -y -r 24 -i $(ImageFormat) -vcodec libx264 -preset slower -profile baseline -threads 0 $(Scene.Path.Path)\Review\$(Scene.File.CutExtension).mov

*Note, playback in Quicktime on Windows was choppy unless I used the baseline profile.

Edited by author on Sat, 17/Dec/2011 12:17 AM
   
Page 1 of 1

.
.
.
.
©2000 - 2013 Überware. All rights reserved