Now you can transcode to 4K ProRes over 3x faster with FCPX

FCPX transcoding

I don’t use FCPX as my editor, and why should I use it to transcode media when we have Compressor for that?

The answer may surprise you…

Adobe vs Apple vs Blackmagic – transcoding speed in 4K

The Canon 1D C’s massive 4K files gave me a good chance this week to put Premiere CC, Resolve 11 and Final Cut Pro X through the grinder plus a few other apps as well. The camera showed up some marked differences between the apps.

FCPX’s performance is astounding. On my Macbook Pro Retina 15″ and 27″ iMac 2013 it was the only one capable of playing 4K MJPEG material in realtime, flawlessly. Resolve can’t do it. Premiere can’t do it. Quicktime and VLC Player can’t do it. Yet I can edit a multi-track 1D C project straight away in FCPX and not even have to transcode at all. However I still want to transcode the 4K MJPEG files. Premiere is my main editor and it cuts through 4K ProRes like butter, just not 4K MJPEG or H.264. Also the 1D C’s files are enormous – 1 minute it clocks in at 4GB and the 1D C splits files at this point, so a 4 minute clip is actually 4 separate files despite the card being formatted ExFat. Way to go Canon on a $12k camera. Way to go!

A transcode from crappy MJPEG to glorious ProRes has the potential to save A LOT of drive space over the year when edits get locked and master files get archived away. I see no reason to keep the MJPEG when the ProRes looks identical. Never mind HQ, I find a high quality transcode to ProRes Proxy is almost visually lossless compared to the original 4K MJPEG files. Yet this yields a file of 720MB from the 4GB original. That’s more like a GH4 clip!

The speed of the transcode then becomes the next hurdle… Resolve could barely muster 10fps and averaged 7fps. That means hours, potentially days of transcoding time for less than a day of shooting. It isn’t much better on a Mac Pro as it isn’t optimised for MJPEG and it isn’t very good under Windows either. Resolve can transcode 4K raw faster than this. Premiere and Adobe Media Encoder took 3 minutes to transcode a 1 min 1D C clip to 4K ProRes, so around the same speed as Resolve… simply not good enough unfortunately.

FCPX on the other hand was simply magic. It was able to transcode in realtime from MJPEG to ProRes. It didn’t introduce the banding I saw earlier in Premiere either.

For 1 min (4GB) 4K MJPEG…

  • Resolve = 3 min
  • Adobe Media Encoder = 3 min
  • Apple Compressor = 3 min
  • Apple FCPX = 58 sec

The reason it is so fast is that it is the ONLY software I know of that encodes to ProRes using both GPU and 64bit CPU acceleration. The conversion is real-time so a 1 minute clip takes 1 minute to convert.

However it has a fundamentally basic flaw (no surprise there). No batch convert! You have to click on each clip one at a time and press cmd-E for the transcode (Share) window, then press enter twice then select the next clip, repeat. F***ing madness. There is no faster way than what the superb Larry Jordan suggests on his blog if you want the space saving 4K ProRes LT or 4K Proxy from FCPX. You can batch export projects (timelines) but this ends up even slower because you have to create a project for each clip and drag the clip to it before you can run the project batch export job. Apple are nuts if they think taking batch export out of Final Cut was a sensible decision. Such a fundamental thing!

The magic solution

Thankfully and almost by accident they have a transcoding feature that (nearly) gives us what we want. This feature will batch transcode all your 4K files to 4K ProRes 422 at a single click. This is the standard flavour of ProRes in-between LT and HQ with a bitrate of around 440Mbit, just under the 500Mbit of the 1D C’s silly MJPEG codec. Unfortunately you can’t change this so it’s ProRes 422 or nothing. Therefore you don’t get the lovely space saving of LT or Proxy but it does mean we can edit like butter in Premiere and apply FX without everything grinding to a crawl and requiring constant rendering. Critically this also avoids the banding problem I highlighted earlier in the week here.

Here’s how to do it…

Thanks to Jay for the tip

In FCPX click Import and choose your files, clicking Import Selected…

Make sure the “Create optimized media” box is selected (as below screen shot) and “Leave files in place”.

fcpx-transcode

Note: for 1080p you can use Create Proxy Media instead which will save space by using ProRes Proxy but for 4K it’s not much good as it always downscales to 1080p or 2K!

FCPX will start the transcode in the background as if it isn’t doing anything. Crafty! Using FCPX for editing at the same time will stall or slow the transcoding dramatically so let it run if you plan to use the transcoded files in another NLE, which is kind of the whole point of doing this.

To check the progress of the transcoding click the background tasks icon above the timeline (where timecode is shown).

fcpx-background-tasks

The transcoded files are saved on the drive where your FCPX library / project is stored. To get to the files (and put them in a more accessible place for Premiere) right click (or ctrl-left-click) on your FCPX library file (by default in the Movies folder of OS X) and select “Show Package Contents”. Then go to the Folder named after your project and find “Transcoded Media”, then the sub-folder “High Quality Media” is where you will find the lovely ProRes jewels.

You can use this technique on any media, it doesn’t have to be 4K and it doesn’t have to be from a 1D C. You can transcode H.264 1080p to ProRes this way and it will be much quicker than doing it any other way, i.e in Compressor or Resolve. You will still want to use Resolve to handle raw / Cinema DNG however and you will still need to use a dedicated H.265 transcoding app for the NX1 as Apple don’t support HVEC in FCPX… yet.

Conclusion

Apple have under-utilised their high performance architecture in FCPX. Apple’s own transcoding app Compressor is supposed to share the same high performance architecture of FCPX but it doesn’t. It’s 3x slower on a single computer than FCPX is at transcoding to ProRes and production houses are wasting hours on that and other software that isn’t using a GPU powered ProRes transcode. Compressor is also stuck in a 32bit world whilst FCPX is brand new 64bit architecture.

However to have a basic feature like the ability to choose your codec for optimised media and not even a way to batch convert clips using the export (share) function are glaring omissions in FCPX. So if you want to batch convert to ProRes LT you have to drop performance 3x in Compressor!? Who the hell is in control of pro apps at Apple and indeed do they even have anybody in control?

I can see some pretty major areas of improvement on the other sides too. While Resolve has the most complete performance on a CUDA system it drops the ball for the 1D C pretty badly and won’t do H.265 from the NX1 either. Adobe’s performance is in need of a major hike as Premiere and Media Encoder don’t seem to use the GPU for any exporting or transcoding tasks. The Mercury Playback Engine which does use the GPU can’t play 4K MJPEG files from the 1D C at all without dropping frames constantly. I believe the Main Concept encoding engine behind Premiere supports Intel QuickSync for faster H.264 encoding but that doesn’t help when it comes to ProRes, Cinema DNG raw or various other formats. Indeed there are more third party plugins for Premiere that utilise the GPU than bits of Premiere that do! With all of Adobe’s resources you’d think they’d have cracked it.

Apple’s decision to start afresh with FCPX on the technical / architecture side is really paying off. The best performance by far. The problem with FCPX is they also threw out the design handbook and years of editor terminology and usability (“library” for project, “project” for “timeline” and “share” for “export” – why!?) as well as fundamental basics. Stuff like batch export and many preferences / tuning options removed for the sake of dumb simplicity. Final Cut Pro 7 was not broken, it just needed a performance hike, not remoulding into iMovie. No matter how good the performance is, I won’t go back to it as an editor yet.

Third party converters

Only a tiny handful of these stand out. iFFMPEG for the Mac can transcode NX1 and 1D C 4K video to ProRes using all the available CPU cores. Even then it’s way slower than FCPX’s GPU accelerated ProRes transcode but it will be an interesting app to try on a Mac Pro with 12+ cores and a much faster clock-speed. Also the engine behind this app, FFMPEG, is open source and constantly evolving so it is future proof and may improve in performance terms during the year. For Windows users, check ClipToolz out. It’s free and looks like it might be worth a try! Unfortunately I haven’t tried it myself yet – it wouldn’t install on my 64bit Windows system, as it needs a 32bit version of Windows. Do let me know of any other notable transcoding apps on the forum!

Comment on the forum