TLDR: If you run a Mac using Apple Silicon, update ffmpeg
to
dramatically speed up your encodes.
Late last year I traded in my beloved iMac Pro for an iMac Pro Portable
14" MacBook Pro. I cannot overstate how much I love this machine, and when
paired with the LG UltraFine 5K, it is actually a really phenomenal
setup. I have nearly all the benefits of my beloved iMac Pro, but I can
pick it up and move it without a ridiculous carrying case.
When I got the machine, one of the first things I tried, for speed-testing
purposes, was a ffmpeg
encode. As has been mentioned before,
I use ffmpeg
constantly, either directly, or via Don Melton’s
amazing other-transcode
tool.
Given this was my first Apple Silicon Mac, and I sprung for the M1 Max, I was super excited to see how fast transcodes were going to be on this new hotness.
I was sorely disappointed. It seemed that encodes were capped at a mere 2× — about 60fps.
As it turns out, I wasn’t the only one giving this some serious 🤨. I was
pointed to an issue in the repo for the aforementioned other-transcode
repository. Many other people thought this looked really weird.
This was first reported in early November, and then about two months ago, the also-excellent Handbrake found a fix, which seemed to be really simple — a very special boolean needed to be set.
Thankfully, about a month ago, ffmpeg
patched as well. This was
eventually integrated into ffmpeg
version 5.0, which was released on 14 January.
However, I install most things using Homebrew, and the Homebrew formula
wasn’t updated. Using a neat trick that Homebrew supports, I was able
to grab and build the latest (read: HEAD
) version of ffmpeg
and get fast
encodes. However, if you’re not inclined to deal with stuff that fiddly,
as of yesterday, the ffmpeg
formula has been updated.
So, if you do any transcoding using ffmpeg
on your Apple Silicon Mac, now
is the time to do a brew upgrade
.
Before the new ffmpeg
goodies, I topped out encodes at about 2×. Now, using
the latest-and-greatest released version of ffmpeg
, I am getting quite a bit
more than that. On a test mpeg2video
file that I recorded using Channels,
I was able to get a full 10×. 🎉