VideoToolbox supports alpha / transparency
FFmpeg does not have its own HEVC/H.265 encoder. It supports 7 HEVC/H.265 external encoders (most are hardware based) including libx265 which does not currently support alpha.
As of now only the VideoToolbox HEVC Encoder (-c:v hevc_videotoolbox
) supports alpha. This is a hardware accelerated encoder for Apple hardware. This has been updated after FFmpeg 4.3 was released, so you'll have to use a build from the current git branch, or wait for 4.4.
Example command adapted from the relevant commit:
ffmpeg -i input%03d.png -c:v hevc_videotoolbox -allow_sw 1 -alpha_quality 0.75 -vtag hvc1 output.mov
The "HEVC Video with Alpha" profile will only be used when the -alpha_quality
value is not 0 (default is 0, range 0-1.). See ffmpeg -h encoder=hevc_videotoolbox
for more info.
This answer may become outdated due to continuous developments, so make sure to research the current situation.
Checking if an encoder supports alpha / transparency
$ ffmpeg -h encoder=libx265
Supported pixel formats: yuv420p yuvj420p yuv422p yuvj422p yuv444p yuvj444p gbrp yuv420p10le yuv422p10le yuv444p10le gbrp10le yuv420p12le yuv422p12le yuv444p12le gbrp12le gray gray10le gray12le
If it supported alpha it would have pixel format with an a
in the name, such as yuva420p
or rgba
. As you can see libx265 does not yet support alpha.
Related bug reports to watch