Category Archives: Final Cut Server

Final Cut Server Mac OS X Server Xsan

Scripting Video Changes in Lion: avconvert, pcastaction & podcast

The avconvert command is a new addition in OS X Lion that allows administrators to quickly and easily convert video from one format to another using presets for video conversion. The presets are mostly common Apple formats tuned to specific devices.

In its simplest form, avconvert uses a preset, a source and then an output to convert the source to the output using the preset to define the format to use for conversion. A useful preset is the 640×480 one. To convert this using this idea:

/usr/bin/avconvert --preset Preset640x480 --source /Convert/test.mov --output Converted/test.mov

While some of the presets are pretty self explanatory, I haven’t gone through them all to see their specific outputs. Simply regressioning through each and then doing a get-info on the resultant QuickTime should net such a result.

You can also use avconvert to extract audio or video only, to change data rates, track height and width, convert codecs, change frame rates and event o frame reordering. You can also specify a closed caption track, thumbnail tracks and all kinds of other cool stuff. While avconvert is the latest addition to video augmentation commands, the pcastaction command has also received some new features. I had previously written up a list of verbs for pcastaction at http://krypted.com/mac-os-x-server/pcastaction-verbs. This list is further enhanced in Lion. New verbs include:

  • addchapter – adds a chapter at a specified time
  • addtracks – add tracks using an optional offset and layers
  • deletetracks – deletes audio, video or audio_and_video tracks
  • extracttracks – outputs audio, video or audio_and_video tracks
  • flatten – flattens .mov, .m4v, .m4a and .m4b movies
  • join – joins two input files into an output file with an optional gap
  • qtimport – prepares QuickTime files with optional chapterizing
  • qtinfo – obtains keys from QuickTime files
  • sharewithpodcastlibrary – option for submitting a file to another Podcast Producer library
  • split – splits a QuickTime movie and outputs two files that are split at the time specified in the –time option
  • trim – specify start and end and remove the rest of the file

The podcast command, used to run Podcast Producer workflows is also still around and can be very useful. While there isn’t new stuff, it is worth mentioning that –addacl becomes –addaccess, –make explicit becomes –makefeedexplicit and –makenonexplicit becomes –makefeednonexplicit. There’s also the long, long awaited option for –removeepisode. This last option allows administrators to remove episodes from the Podcast Producer library based on the UUID of the episode. In my testing, you still need to remove the entry from the blog if you are also exporting episodes to the a blog, but this is basically what we were doing in the Deleting a Podcast post I did some time ago at http://krypted.com/mac-os-x-server/deleting-a-podcast-in-podcast-producer, just they wrap the three commands into one option of the podcast command. Still look to the asset removal article I did for actually scrubbing files (http://krypted.com/mac-os-x-server/scrubbing-assets-from-podcast-producer) . Feed removal is also still manual: http://krypted.com/mac-os-x-server/removing-feeds-from-podcast-producer.

ACL management remains about the same (http://krypted.com/mac-os-x-server/podcast-producer-workflow-acls). While I never got around to writing up how to programatically manage ACLs in Podcast Producer, it is worth mentioning that podcast’s –addacl option and –enableacl will allow you to do so. They, along with other options in podcast and pcastaction are much better documented in the man pages in lion, so the things I couldn’t get to work in 10.6 should be sorted out somewhere in 10.7.

Finally, while nothing new, the work I did on image file automation ( http://krypted.com/mac-os-x/automating-image-file-changes) with sips I now have hooking into podcast workflows. I hope to publish an article on this at some point in the future, but the idea is a workflow where you drop an image and a video into a folder (or use an upload dialog) and it watermarks the video with a compressed-down version of the image… Also, avconvert offers a perfect compliment to podcast workflows. I’ve had a number of instances where people were trying to feed pcastaction formats that were unsupported, video that was too large or other problematic inputs and so avconvert allows us to sanitize the inputs for pcastaction or podcast prior to managing our workflows. With launchdaemons watching directories this provides some of what Final Cut Server was able to provide, only without the database of assets, easy way to tag them, etc, etc, etc, etc. Overall, a very nice incremental update to Podcast Producer and en masse video management in Lion. Nothing jaw dropping or massive, but some nice new features, better documentation and in my testing so far, more overall stability.

cloud Final Cut Server

Amazon S3 File Size Limits

Back in November of 2008 I did an article awhile back on a way to use Amazon’s S3 to hook into Final Cut Server. At the time though, S3 had a pretty big limitation in that it wasn’t really suitable for backing up large video files as an archive device for Final Cut Server. But today, Amazon announced that S3 now supports files of up to 5 terabytes using multipart upload (previously the maximum file size was 5 gigabytes).

This finally means that files do not have to be broken up at the file system layer in order to back up to Amazon’s cloud. However, this does not mean that traditional disk-to-disk backup solutions can be leveraged to provide a good target for backups and archives as backups need to be performed using the multipart upload. The ability to now use S3 for large files allows us to finally use Amazon S3 in a way that is much simpler that it was to do so previously, although it is still not as transparent as using a file system or URI path.

Overall, this represents a great step for Amazon and I hope to see even more of this in the future!

Business Final Cut Server Mac OS X Mac OS X Server Mac Security Xsan

The Xserve Has Been Discontinued

The Xserve has officially been discontinued by Apple and will no longer be sold after January, 2011. Mac OS X Server will still be available on Mac Mini and Mac Pro (which will be the only option for Metadata Controllers on Mac OS X). Apple has produced a transition guide, available here.

Xserve Transition Guide

Xserve Transition Guide

I do like the Mac Mini server, I just can’t seem to fit a fibre channel card into them. Before the Xserve, we used to buy Marathon rack mount kits for G3 and G4 systems. I would anticipate that a new business will spring up that takes the place of the Xserve, putting Apple logic boards and CPUs into a smaller U configuration, although if that were profitable perhaps Apple would still be doing it… Either way, we had a good run with Xserve (sniffs and queues up a sad song).

Remember, remember the 5th of December, the day the Xserve was killed!

Final Cut Server

Archive & Restore Assets with fcsvr_client

Final Cut Server has an option to archive and restore assets. When archiving an asset, the asset will be moved to a file system path that is represented by the device ID. The archival and restore can be done using the steps shown in this video:


The process of archival and restore can be kicked off from the command line, which will initiate the movement of the asset. To archive an asset, you will use the archive verb with the fcsvr_client tool. This will require you to provide the asset ID number along with the device that you will be archiving the asset to. For example, to archive an asset with an ID of 318 to a device with an ID of 8 you will use the following command:

fcsvr_client archive /asset/318 /dev/8

Once archived, the asset can be easily restored provided that it is still in the archive path that it was backed up to. So assuming that the asset is still on /dev/8 you could use the following command to restore the asset (the device path is implied as it is tracked in the metadata that corresponds to the asset ID:

fcsvr_client restore /asset/318

If archiving and restoring, it is never a bad idea to log that the action was sent to the queue. For example, if the asset ID were a variable of ASSET and the device had an ID of DEV then you could use the following to log that the automation had been fired off:

fcsvr_client archive /asset/$ASSET /dev/$DEV
/usr/bin/logger “Asset $ASSET is being copied to device $DEV”

FileMaker Final Cut Server

Scripting Productions and Assets in Final Cut Server

When you’re integrating Final Cut Server with other products, you often find yourself writing scripts to perform various tasks. One of those tasks might be to create a new project, or a production as it’s called in Final Cut Server. Because a production can have a number of attributes, a great way to do this is to create a template production and then make copies of it (or clones) when you want to create subsequent projects. To do so, you’ll use the fcsvr_client command, along with the clone verb. The -name option will allow you to set the name of the production which would then be followed by the unique ID of the production template that you manually create using the Final Cut Server application. Presuming we are creating a production called Emerald with a template of /project/298, we could use the following:

fcsvr_client clone –name Emerald /project/298

If we wanted to get the ID of this project, we would then use:

fcsvr_client search –crit Emerald /project

We could then go a step further and actually create an asset in this new project by using the –projaddr option for createasset. In the below example, we’ll presume that the new project ID was 299 and then create an asset called Emerald1.mov that is stored on a device with an ID of 5 as well as provide a description and a tag:

fcsvr_client createasset –background –projaddr /project/299 pa_asset_media /dev/5/Emerald1.mov CUST_DESCRIPTION=”Emerald throwing food at daddy” CUST_KEYWORDS=”food fight”

Now to throw it all together in a little script that could be fired off through another application that can be kicked off from another application. In the below, we assume that it is a bash script that was handed a project name via $1, a device ID in $2 and a file name in $3:

#!/bin/bash
fcsvr_client clone –name $1 /project/298
MyProjectID = fcsvr_client search –crit “$1″ /project
/usr/bin/logger “Production $MyProjectID with name of $1 created”
fcsvr_client createasset –background –projaddr /project/$MyProjectID pa_asset_media /dev/$2/$3 CUST_DESCRIPTION=”Automatically uploaded file” CUST_KEYWORDS=”movie, automated”
/usr/bin/logger “Asset $3 on device $2 created in production $1″

If we had just wanted to create the asset, we could have simply used line 5, placing the Project ID in $1 by changing out $MyProjectID with $1. We could also use Transmogrifier to easily return the assetID once it has been created in Final Cut Server, allowing that to be returned to the application that might be calling up this script. This allows you to integrate the asset and production creation part of Final Cut Server with other solutions, such as a PHP web upload application, FileMaker or even another Digital Asset Management solutions.

Final Cut Server

Analyzing Assets with fcsvr_client in Final Cut Server

Sometimes Final Cut Server can’t create proxies as part of the analyze phase of ingesting an asset. Maybe it’s busy, maybe it’s doing too large a batch or maybe it’s just having a hard day. Either way, sometimes it just doesn’t analyze like it’s supposed to. Therefore, you can analyze an asset using the fcsvr_client command. This allows you to find assets that currently do not have a poster frame or a proxy and regenerate them.

Typically, you would right-click on the asset from the GUI and then click on the Analyze button to re-analyze, but what if there are a lot? Then you’d want to automate it. You can find whether a single item has a proxy using the fcsvr_client command along with the list_parent_links. For example, for asset 318 the following would show the other assets that you have:
fcsvr_client list_parent_links /asset/318

You can then re-analyze using the fcsvr_client analyze option (assuming a video file with the asset ID of 318):
fcsvr_client analyze –fcp /asset/318

Or, if you’re trying to work with all of the items within a given Final Cut Pro project instead of a video asset ID, use the -fcp flag along with the ID of the Final Cut Pro project (assuming a project with asset ID of 319):
fcsvr_client analyze –fcp /asset/319

You can count your assets using the fcsvr_client count option:
fcsvr_client count –recurse /asset

This allows you to loop through all the assets ($id is the increasing number in the loop) and set a proxy variable to:
fcsvr_client list_parent_links /asset/$id | grep Proxy(3) | awk ‘{print $2}’

Then you would simply do something like this:
if [ -d "$proxy" ] ; then
fcsvr_client analyze –fcp /asset/$id
else
/usr/bin/logger “Asset: $id already exists”
fi

Final Cut Server

Asset Paths In Final Cut Server from the CLI

Final Cut Server devices are locations where files are stored. Locations are then set using that device as a relative path within Final Cut Server. For example, if you have a device called MySAN it might end up being /dev/3.

When you import an asset into Final Cut Server, the asset is given an asset ID. For example, you might upload a movie called Rudy.mov that might have an asset with ID number 318 (asset numbers are assigned from Final Cut Server when the asset is imported. But once the asset is imported the location path in the database is then stored relative to the device. So for example, Rudy.mov might be located at /dev/3/dogmovies/Rudy.mov even if the actual file system path is /Volumes/MySAN/dogmovies/Rudy.mov

You can find an assets path pretty easily using the Final Cut Server client. You can also use the fcsvr_client command to retrieve it programatically. To continue with the example, let’s find the path to the file using the
fcsvr_client list_parent_links /asset/318

The output would look similar to:
Proxy(3): /dev/3/dogmovies/Rudy.mov

But if you need the actual file system path then you have a little more work to do. It’s easy enough to then convert /dev/3 to a URI if you set it as a constant. However, this doesn’t allow for future proofing the code. Therefore there is a feature that we put into FCS Transmogrifier ( http://transmogrifier.sourceforge.net ) to look up a file system path based on a deviceID: –getDevicePath. To look up the deviceID of 3 (where that Rudy.mov clip is stored from earlier in the example):
transmogrifier –getDevicePath –deviceID=3

Then you can assemble the device path with the folder name. Or, to make it easier if you’re just looking to get the path to the file, using Transmogrifier you can get that by using the –getAssetPath option:
transmogrifier –getAssetPath –assetID=318

You can also get the assetID based on a files path, (which can be helpful if you’re going to be archiving the file) using the –getAssetID option:
transmogrifier –getAssetID –assetPath=”/Volumes/MySAN/dogmovies/Rudy.mov”

Overall, trading asset paths back and forth based on IDs allows you to call assets from other solutions provided you know the ID.

Final Cut Server Mac OS X Mac OS X Server Mac Security Mass Deployment Xsan

Mac OS X Server Groups on LinkedIn

In case you haven’t seen them there are a number of groups for Mac OS X Systems Administrators on LinkedIn:

Final Cut Server Mac OS X Mac OS X Server

FCS 1.5.1 Story on Xsanity

Posted a little whatnot on FCS 1.5.1 over at Xsantiy, here. Hope you enjoy!