使用 alpha 将 WEBM 转换为 HEVC

Convert WEBM to HEVC with alpha

我正在尝试将具有透明度的简单 WEBM 视频转换为具有 alpha 的 HEVC。我找不到任何关于如何在不丢失 alpha 通道的情况下进行转换的资源。

我不知道 FFMPEG 是否可行:

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

比照。 https://trac.ffmpeg.org/ticket/7965

这是 WEBM 视频示例:https://filebin.net/c4orn2u48jb3gufr

VideoToolbox 支持 alpha/透明度

FFmpeg 没有自己的 HEVC/H.265 编码器。它支持 7 HEVC/H.265 外部编码器(大多数是基于硬件的),包括目前不支持 alpha 的 libx265。

截至目前只有 VideoToolbox HEVC 编码器 (-c:v hevc_videotoolbox) 支持 alpha。这是 Apple 硬件的硬件加速编码器。这已在 FFmpeg 4.3 发布后更新,因此您必须使用当前 git 分支的构建,或等待 4.4.

示例命令改编自相关 commit:

ffmpeg -i input%03d.png -c:v hevc_videotoolbox -allow_sw 1 -alpha_quality 0.75 -vtag hvc1 output.mov

“HEVC Video with Alpha”配置文件仅在 -alpha_quality 值不为 0(默认为 0,范围 0-1)时使用。有关详细信息,请参阅 ffmpeg -h encoder=hevc_videotoolbox

这个答案可能会因为不断的发展而变得过时,所以一定要研究当前的情况。

检查编码器是否支持 alpha/透明度

$ 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

如果它支持 alpha,它将具有名称中带有 a 的像素格式,例如 yuva420prgba。如您所见,libx265 尚不支持 alpha。

要观看的相关错误报告