👋如何快速有效降低 JavaCV
依赖包体积?
⚽️小叙
相信很多同学在刚开始使用 JavaCV 计算机视觉库进行开发的时候都会碰到这个问题,JavaCV视觉库内包含丰富的常用工具包,包括:OpenCV, FFmpeg, libdc1394, FlyCapture, Spinnaker, OpenKinect, librealsense, CL PS3 Eye Driver, videoInput, ARToolKitPlus, flandmark, Leptonica, and Tesseract… 博主就不一一列举了,感兴趣的同学可以查看相关源码,地址如下:JavaCV。
博主正在开发音视频流采集和录制功能,需要用到的工具包主要包括 OpenCV, FFmpeg以及平台相关的依赖包,但并不需要用到所有的依赖,优化和降低依赖包体积的需求就出现了。
待我查阅了相关的资料,整理并提供了以下快速解决方案,请往下看。
⚽️冗余的依赖包
博主粗略的计算了一下,javacv-platform依赖包大概 883.5MB ,噩待优化。
<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.5.8</version> </dependency>
以下图片是冗余的项目Jar包,里面包含大量未使用到的依赖
⚽️优化后的依赖包
以下依赖项可根据不同的平台变量进行切换,方便适配各平台进行开发
<properties> <javacv.version>1.5.8</javacv.version> <javacv.opencv.version>4.6.0-1.5.8</javacv.opencv.version> <javacv.ffmpeg.version>5.1.2-1.5.8</javacv.ffmpeg.version> <javacv.openblas.version>0.3.21-1.5.8</javacv.openblas.version> <javacpp.platform.android-arm>android-arm</javacpp.platform.android-arm> <javacpp.platform.android-arm64>android-arm64</javacpp.platform.android-arm64> <javacpp.platform.android-x86>android-x86</javacpp.platform.android-x86> <javacpp.platform.android-x86_64>android-x86_64</javacpp.platform.android-x86_64> <javacpp.platform.ios-arm>ios-arm</javacpp.platform.ios-arm> <javacpp.platform.ios-arm64>ios-arm64</javacpp.platform.ios-arm64> <javacpp.platform.ios-x86>ios-x86</javacpp.platform.ios-x86> <javacpp.platform.ios-x86_64>ios-x86_64</javacpp.platform.ios-x86_64> <javacpp.platform.macosx-x86_64>macosx-x86_64</javacpp.platform.macosx-x86_64> <javacpp.platform.linux-armhf>linux-armhf</javacpp.platform.linux-armhf> <javacpp.platform.linux-arm64>linux-arm64</javacpp.platform.linux-arm64> <javacpp.platform.linux-ppc64le>linux-ppc64le</javacpp.platform.linux-ppc64le> <javacpp.platform.linux-x86>linux-x86</javacpp.platform.linux-x86> <javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64> <javacpp.platform.windows-x86>windows-x86</javacpp.platform.windows-x86> <javacpp.platform.windows-x86_64>windows-x86_64</javacpp.platform.windows-x86_64> </properties> <dependencies> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacpp</artifactId> <version>${javacv.version}</version> <classifier>${javacpp.platform.windows-x86_64}</classifier> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>openblas</artifactId> <version>${javacv.openblas.version}</version> <classifier>${javacpp.platform.windows-x86_64}</classifier> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>opencv</artifactId> <version>${javacv.opencv.version}</version> <classifier>${javacpp.platform.windows-x86_64}</classifier> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>ffmpeg</artifactId> <version>${javacv.ffmpeg.version}</version> <classifier>${javacpp.platform.windows-x86_64}</classifier> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>${javacv.version}</version> </dependency> </dependencies>
使用以上优化后的依赖,体积直接减少了 807MB。
⚽️总结
阶段 | 体积 |
初始包 | 69.5MB |
优化前 | 953MB |
优化后 | 146MB |
通过图表可以看出,优化效果还是非常明显的,又可以愉快的进行开发了。写作不易,一键三连。
👬 交友小贴士: