使用 alpha 将 WEBM 转换为 HEVC

Bas*_*ert 3 ffmpeg video-encoding

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

我不知道 FFMPEG 是否可行:

由于 FFmpeg 不包含本机 hevc 编码器,因此无法在此处发出编码请求。

参见 https://trac.ffmpeg.org/ticket/7965

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

llo*_*gan 5

VideoToolbox 支持 alpha/透明度

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

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

改编自相关提交的示例命令:

ffmpeg -i input%03d.png -c:v hevc_videotoolbox -allow_sw 1 -alpha_quality 0.75 -vtag hvc1 output.mov
Run Code Online (Sandbox Code Playgroud)

“带 Alpha 的 HEVC 视频”配置文件仅在该-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
Run Code Online (Sandbox Code Playgroud)

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

要观看的相关错误报告