最近工做中由于项目的缘由边学边用,接触并使用JavaCV作了一些相关的产品,目前以为,JavaCV在图形图像(人家自己就是一个视觉库)的功能真的挺强大,并且使用起来避免了复杂的平台处理。下面整理一下对JavaCV库的初步理解。java
1. JavaCV 简介
JavaCV是对各类经常使用计算机视觉库的封装后的一组jar包,其中封装了FFmpeg、OpenCV等计算机视觉编程人员经常使用库的接口,能够经过其中的Utility类方便的在包括Android在内的Java平台上调用这些接口。其中使用最多的应该就是FFmpeg了。 android
最开始Javacv是googlecode下面的一个项目,后来迁移到了github,所以JavaCV相关的包名也由com.googlecode.javacv
改成org.bytedeco.javacv。
目前最新版本是 1.3.3。项目地址:https://github.com/bytedeco/javacvgit
2. JavaCV 基本使用指南
从github项目中下载打包好的jar包,其中javacpp.jar 和 javacv.jar是必须的两个包,而后须要什么功能就添加额外的包。例如我须要用到ffmpeg进行视频录制,则须要添加ffmpeg.jar和ffmpeg-android-arm.jar(打包的arm平台so库)。这里很方便的地方是,so库文件都放在了jar文件里面,在集成的时候很简洁明了。 github
3. JavaCV 相关例子
短视频录制:编程
https://github.com/peirenlei/FFmpegRecorder
https://github.com/CrazyOrr/FFmpegRecorderpost
短视频录制 + 拉流存储 + 视频转播:google
https://github.com/lmylr/LyMediaspa
4. JavaCV常见问题
4.1. 在Android M平台,会有异常java.lang.UnsatisfiedLinkError: org.bytedeco.javacpp.avutil
这个问题,在做者的Issue里面也有人反映过:code
https://github.com/bytedeco/javacv/issues/245、https://github.com/bytedeco/javacv/issues/579 视频
最终是经过ReLinker解决的:The UnsatisfiedLinkError X File (a real experience)
解决这个问题以前从未想过System.loadLibrary("")
会不可靠,在这里替换为ReLinker.recursively().loadLibrary()以后,问题就解决了。