如何快速有效降低 JavaCV 依赖包体积?

如何快速有效降低 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.bytedecogroupId>
    <artifactId>javacv-platformartifactId>
    <version>1.5.8version>
  dependency>

以下图片是冗余的项目Jar包,里面包含大量未使用到的依赖

如何快速有效降低 JavaCV 依赖包体积?_第1张图片
如何快速有效降低 JavaCV 依赖包体积?_第2张图片

⚽️优化后的依赖包

以下依赖项可根据不同的平台变量进行切换,方便适配各平台进行开发

    <properties>
        <javacv.version>1.5.8javacv.version>
        <javacv.opencv.version>4.6.0-1.5.8javacv.opencv.version>
        <javacv.ffmpeg.version>5.1.2-1.5.8javacv.ffmpeg.version>
        <javacv.openblas.version>0.3.21-1.5.8javacv.openblas.version>

        <javacpp.platform.android-arm>android-armjavacpp.platform.android-arm>
        <javacpp.platform.android-arm64>android-arm64javacpp.platform.android-arm64>
        <javacpp.platform.android-x86>android-x86javacpp.platform.android-x86>
        <javacpp.platform.android-x86_64>android-x86_64javacpp.platform.android-x86_64>
        <javacpp.platform.ios-arm>ios-armjavacpp.platform.ios-arm>
        <javacpp.platform.ios-arm64>ios-arm64javacpp.platform.ios-arm64>
        <javacpp.platform.ios-x86>ios-x86javacpp.platform.ios-x86>
        <javacpp.platform.ios-x86_64>ios-x86_64javacpp.platform.ios-x86_64>
        <javacpp.platform.macosx-x86_64>macosx-x86_64javacpp.platform.macosx-x86_64>
        <javacpp.platform.linux-armhf>linux-armhfjavacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64>linux-arm64javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le>linux-ppc64lejavacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86>linux-x86javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64>linux-x86_64javacpp.platform.linux-x86_64>
        <javacpp.platform.windows-x86>windows-x86javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64>windows-x86_64javacpp.platform.windows-x86_64>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.bytedecogroupId>
            <artifactId>javacppartifactId>
            <version>${javacv.version}version>
            <classifier>${javacpp.platform.windows-x86_64}classifier>
        dependency>

        <dependency>
            <groupId>org.bytedecogroupId>
            <artifactId>openblasartifactId>
            <version>${javacv.openblas.version}version>
            <classifier>${javacpp.platform.windows-x86_64}classifier>
        dependency>

        <dependency>
            <groupId>org.bytedecogroupId>
            <artifactId>opencvartifactId>
            <version>${javacv.opencv.version}version>
            <classifier>${javacpp.platform.windows-x86_64}classifier>
        dependency>

        <dependency>
            <groupId>org.bytedecogroupId>
            <artifactId>ffmpegartifactId>
            <version>${javacv.ffmpeg.version}version>
            <classifier>${javacpp.platform.windows-x86_64}classifier>
        dependency>

        <dependency>
            <groupId>org.bytedecogroupId>
            <artifactId>javacvartifactId>
            <version>${javacv.version}version>
        dependency>
    dependencies>

使用以上优化后的依赖,体积直接减少了 807MB

如何快速有效降低 JavaCV 依赖包体积?_第3张图片

⚽️总结

阶段 体积
初始包 69.5MB
优化前 953MB
优化后 146MB

通过图表可以看出,优化效果还是非常明显的,又可以愉快的进行开发了。写作不易,一键三连。

交友小贴士:
博主Github,Gitee同名账号,Follow 一下就可以一起愉快的玩耍了,更多精彩文章请持续关注。

你可能感兴趣的:(ffmpeg,java,opencv,实时音视频)