安卓视频去除绿幕背景

3
我已经查看了这个问题。
这很相似:我想用Android相机录制视频。之后,使用一个库去除背景,该背景带有绿幕效果。首先,我认为应该使用Android NDK来避免SDK内存限制并使用整个内存。由于.so文件的架构不匹配,视频长度很短,只有几秒钟,因此可能能够处理它。我更喜欢使用SDK实现并设置android:largeHeap="true"
请推荐任何适用于SDK或NDK的库。
1个回答

2

我认为你应该选择基于NDK的解决方案,因为视频处理是一个消耗CPU的操作,Java代码无法给你更好的性能。此外,最受欢迎和可靠的媒体处理库通常是用C或C++编写的。

我建议你去看看FFmpeg。它提供了处理多媒体的丰富功能。 chromakey 过滤器可以帮助你去除绿色背景(或任何你想要的颜色)。然后,如果需要,您可以使用另一个视频作为新背景。参见blend 过滤器文档。

过滤器 是一个不错且强大的概念。它们可以通过 ffmpeg 工具命令行或通过libavfilter API 使用。对于前者,您应该找到编译为Android的 ffmpeg 二进制文件,并使用传统的Runtime.exec() 运行它。对于后者,您需要编写本机代码,创建适当的过滤器图表并执行处理。此代码必须链接到FFmpeg库。


我想试一试。我是安卓新手。你写的有点令人困惑。你能详细说明具体的步骤,让我能够快速进行吗?我会非常感激你的。 - Kashyap Kotak
FFmpeg库支持此功能。我还通过以下方式获得解决方案:String[] ffmpegComplexCommand = {"-y","-i",backgroundimage.jpg,"-i",SorcevideoPath, "-filter_complex", "[1:v]chromakey=0x3BBD1E:0.03:0.2[ckout];[0:v][ckout]overlay[o]", "-codec:v", "libx264", "-codec:a", "copy", "-crf", "30", "-preset", "ultrafast","-map", "[o]", "-map", "1:a", output.getAbsolutePath()}; - user6628772

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接