Is it possible to get FFmpeg to use hardware acceleration for HEVC transcoding on macOS?
I have a MacBook Pro with a Kaby Lake processor running macOS High Sierra (10.12). Is it possibe somehow to setup FFmpeg to utilize hardware encoding of HEVC with toolbox, instead of libx265?
On macOPS there’s videotoolbox.
Check this out for the encoder options:
ffmpeg -hide_banner -h encoder=hevc_videotoolbox
Output:
Supported pixel formats: videotoolbox_vld nv12 yuv420p
hevc_videotoolbox AVOptions:
-profile <int> E..V.... Profile (from 0 to 3) (default 0)
main E..V.... Main Profile
main10 E..V.... Main10 Profile
-allow_sw <boolean> E..V.... Allow software encoding (default false)
-realtime <boolean> E..V.... Hint that encoding should happen in real-time if not faster (e.g. capturing from camera). (default false)
-frames_before <boolean> E..V.... Other frames will come before the frames in this session. This helps smooth concatenation issues. (default false)
-frames_after <boolean> E..V.... Other frames will come after the frames in this session. This helps smooth concatenation issues. (default false)
Maybe you can test with that, if you have a recent Mac.
More on videotoolbox: https://developer.apple.com/documentation/videotoolbox
As you can see, it taps into the hardware-based encoders available on macOS, offering a unified API for video encoding across multiple abstractions (Intel's QuickSync on supported Intel IGPs, etc).
Grab a build here: https://evermeet.cx/ffmpeg/
Not sure if this has changed since the OP's comment, but in FFmpeg 4.x the command is:
ffmpeg -hide_banner -h encoder=hevc_videotoolbox