我已查看this问题。
非常相似:
我想用Android相机录制视频。
之后用库删除背景,这是用色度键。
首先,我认为我应该使用android NDK以逃避SDK内存限制并使用整个内存。
视频的长度很短,几秒钟,所以也许能够处理它。
我更喜欢使用SDK实现并设置android:largeHeap="true"
,因为.so文件架构不匹配。
请提供SDK或NDK的库建议。
答案 0 :(得分:1)
IMO您应该更喜欢基于NDK的解决方案,因为视频处理是一项耗费CPU的操作,并且Java代码不会为您提供更好的性能。此外,最流行和最可靠的媒体处理库通常用C或C ++编写。
我建议你看看FFmpeg。它提供了应对多媒体的能力。 chromakey
过滤器可以帮助您删除绿色背景(或您想要的任何颜色)。然后,如果需要,您可以使用其他视频作为新背景。请参阅blend
过滤器文档。
Filters是一个很好的强大概念。它们既可以通过ffmpeg
工具命令行使用,也可以通过libavfilter
API使用。对于前一种情况,您应该找到为Android编译的ffmpeg
二进制文件,并使用传统的Runtime.exec()
运行它。对于后一种情况 - 您需要编写本机代码,创建适当的过滤器图并执行处理。此代码必须与FFmpeg库链接。