我检查过this https://stackoverflow.com/questions/12813089/i-am-working-on-android-camera-app-i-want-to-capture-image-and-change-its-backgr问题。
非常相似:
我想用 Android 相机录制视频。
之后,使用库删除带有色度键的背景。
首先,我认为我应该使用 android NDK 来摆脱 SDK 内存限制并使用整个内存。
视频的长度很短,只有几秒钟,所以也许可以处理。
我更喜欢使用 SDK 实现并设置android:largeHeap="true"
,因为 .so 文件架构不匹配。
请提供有关 SDK 或 NDK 的任何库建议。
在我看来,你应该更喜欢基于 NDK 的解决方案,因为视频处理是一个消耗 CPU 的操作,而 java 代码不会给你带来更好的性能。此外,最流行和最可靠的媒体处理库通常是用 C 或 C++ 编写的。
我建议你看一下FFmpeg https://www.ffmpeg.org/。它提供了处理多媒体的能力。chromakey https://www.ffmpeg.org/ffmpeg-filters.html#toc-chromakey过滤器可以帮助您去除绿色背景(或任何您想要的颜色)。然后,如果需要,您可以使用另一个视频作为新背景。看blend https://www.ffmpeg.org/ffmpeg-filters.html#blend_002c-tblend过滤文档。
Filters https://www.ffmpeg.org/ffmpeg-filters.html#Description是一个美好而强大的概念。它们可以通过以下方式使用ffmpeg
工具命令行或通过libavfilter https://www.ffmpeg.org/doxygen/3.1/group__lavfi.htmlAPI。对于前一种情况你应该找到ffmpeg
为 android 编译的二进制文件并用传统方式运行Runtime.exec()
。对于后一种情况 - 您需要编写本机代码,以创建适当的过滤器图并执行处理。此代码必须链接到 FFmpeg 库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)