Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert WEBM to HEVC with alpha

I'm trying to convert a simple WEBM video with transparency to HEVC with alpha. I couldn't find any resources about how to convert without losing the alpha channel.

I don't know if it's possible with FFMPEG:

encoding requests cannot be made here as FFmpeg does not contain a native hevc encoder.

cf. https://trac.ffmpeg.org/ticket/7965

Here is the WEBM video sample: https://filebin.net/c4orn2u48jb3gufr

like image 893
Bastien Robert Avatar asked May 07 '20 15:05

Bastien Robert


1 Answers

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

  • #7965 - Support for HEVC decoding with Alpha
  • #9088 - HEVC bitstream with alpha layer to mp4
like image 192
llogan Avatar answered Oct 07 '22 06:10

llogan