8

目前 FFmpeg 支持 VP9 压缩到 yuv420p。

使用grafika作为代码库,我实现了在 Android 中播放 VP9 yuva420p 编码的视频(使用 SurfaceTexture 和 MediaCodec),但我无法从视频中获取 Alpha 通道。

我检查了用 VideoAlphaMode 编码的视频;ID:0x53c0 大小:4,所以我确信视频包含 alpha 通道。

那么问题来了:Android 4.4+解码器是否支持带Alpha通道的VP9?

4

2 回答 2

0

试试看

 ffmpeg -i input.mov -c:v libvpx -pix_fmt yuva420p out.webm
于 2017-06-05T09:03:41.933 回答
0

建议您首先在 64 位 Linux 工作站上构建最新版本的 libvpx。libvpx 测试套件应该包含一个 alpha 通道测试。确保测试通过。如果不是,那是一个不好的迹象,因为 libvpxVP9 的参考实现。

如果是这样,下一步将尝试使用更高级别的库进行 alpha 解码和覆盖,仍然在 Linux 上。我建议使用 GStreamer 1.8.2 或更高版本。将您的剪辑覆盖在“videotestsrc”生成器之上,该生成器将生成大多数视频格式。

如果其中任何一个测试失败,我建议您在继续之前仔细调查原因。

开始使用 Linux 的原因是您可以更轻松地进行构建和故障排除,而且我怀疑您可能遇到了甚至还没有在参考实现 (libvpx) 中实现的规范的边缘,或者难以实现集成到更高级别的库中(因此 GStreamer 建议)。

也就是说,虽然我在 VP8 和 libvpx 方面有丰富的经验,但我没有使用过 VP9 特定的功能集。但是,我很想关注您的努力,并且可能会在您取得进展时提供建议。

于 2017-06-05T18:02:04.250 回答