【发布时间】:2020-02-11 09:15:21
【问题描述】:
在以前的 macOS 版本(10.14 Mojave 和更早版本)中,我使用 FFmpeg 将带有 alpha 的视频覆盖在另一个视频之上,并取得了很大的成功。现在,当更新到 macOS Catalina 时,相同的 FFmpeg 命令突然不起作用。它只是在透明度应该根据 Alpha 通道的地方产生黑色。我叠加在上面的视频是一个 ProRes 4444 文件(其中包括一个 Alpha 通道),它不再按预期工作。
我已经尝试了几个版本的 FFmpeg,从夜间版本到最新的稳定版本(版本 4.2.1)都无济于事。没有任何效果:-(
我一直使用的最简单的命令形式如下:
ffmpeg -y -i skiing.mp4 -i subtitles.ap4h -filter_complex overlay subtitled.m4v
不起作用。但是,如果我用带有 alpha 的简单 .png 图像替换 subtitles.ap4h 文件,它可以工作吗?
我也一直在尝试混合滤镜,但我真的不明白它的要点。
有人可以解释一下吗?有没有其他人看到过这个问题。
您对如何使用 blend 过滤器而不是 overlay 过滤器来完成相同的任务有什么建议吗?
您可以在我的 Dropbox 中找到我使用的示例文件...
https://www.dropbox.com/s/8z3grpsbejb1na0/skiing.mp4?dl=0 https://www.dropbox.com/s/8c79lg07rbuqyhn/subtitles.ap4h?dl=0
真的很期待有人帮我解开这个谜。
最好的问候 / 约根
【问题讨论】:
-
我在
subtitles.ap4h中看不到任何alpha。根据您的命令的日志输出,像素格式为 yuv444p12le,我希望 yuva444p12le 或类似格式。如果最终目标是添加字幕,为什么不使用典型的字幕格式,例如 ASS 或 SRT? -
所以您是说 subtitles.ap4h 文件中没有 alpha?也许这就是问题所在?我还尝试了一个带有 alpha 的 HEVC 文件,我可以使用 Safari 确认它具有 alpha。同样的问题。但也许 FFmpeg 还没有处理带有 alpha 的 HEVC?
-
subtitles.ap4h是 ProRes。它似乎没有阿尔法。 FFmpeg ProRes 解码器可以处理 yuva*,因此请确认您正在输出来自subtitles.ap4h的任何内容的 alpha。 HEVC 解码尚不支持 alpha:Support for HEVC with Alpha。为什么不使用 ASS/SRT? -
是的!感谢您的投入,终于让它工作了!我正在使用 AVFoundation 和 AVAssetWriter 导出 subtitles.ap4h。我注意到导出的文件没有您正确说明的 Alpha 通道。我将 CVPixelBuffers 的像素格式从 kCVPixelFormatType_32BGRA 更改为 kCVPixelFormatType_32ARGB ......导出的 ProRes 文件像 macOS Mojave 一样具有 alpha 版本!非常感谢您帮助我解决这个问题:-)
-
既然您找到了问题的解决方案,您可以将其添加为下面的答案。
标签: ffmpeg macos-catalina