前言:

由于在项目中需要对视频进行缩略图的截图处理,引入了javacv-platform的包,但是打包后发现打出来的jar包非常的大

后面得知是因为javacv-platform会将所有平台的包集中起来处理,导致包特别的大

 处理:

 我们在项目中也用不到那么多的包,那么多的功能,所以我们需要对项目依赖进行精简。一般我们的服务都是部署在Linux平台上,开发的平台无外乎是Mac和Windows,所以我们只需要保留这三个平台的依赖,最后上线生产的时候只留下Linux平台的即可。

    <properties>
        <!--javacv截取视频帧-->
        <!--todo: 以下版本号需要根据实际情况修改,最后上线生产的时候只留linux版本减少打包体积-->
        <javacv.version>1.5.8</javacv.version>
        <javacv.ffmpeg.version>5.1.2-1.5.8</javacv.ffmpeg.version>
        <javacpp.platform.macosx-x86_64>macosx-x86_64</javacpp.platform.macosx-x86_64>
        <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>
            <!--javacv截取视频帧-->
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacv</artifactId>
                <version>${javacv.version}</version>
            </dependency>

            <!--MacOS平台-->
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacpp</artifactId>
                <version>${javacv.version}</version>
                <classifier>${javacpp.platform.macosx-x86_64}</classifier>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>ffmpeg</artifactId>
                <version>${javacv.ffmpeg.version}</version>
                <classifier>${javacpp.platform.macosx-x86_64}</classifier>
            </dependency>

            <!--Linux平台-->
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacpp</artifactId>
                <version>${javacv.version}</version>
                <classifier>${javacpp.platform.linux-x86}</classifier>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>ffmpeg</artifactId>
                <version>${javacv.ffmpeg.version}</version>
                <classifier>${javacpp.platform.linux-x86}</classifier>
            </dependency>

            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacpp</artifactId>
                <version>${javacv.version}</version>
                <classifier>${javacpp.platform.linux-x86_64}</classifier>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>ffmpeg</artifactId>
                <version>${javacv.ffmpeg.version}</version>
                <classifier>${javacpp.platform.linux-x86_64}</classifier>
            </dependency>

            <!--Windows平台-->
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacpp</artifactId>
                <version>${javacv.version}</version>
                <classifier>${javacpp.platform.windows-x86}</classifier>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>ffmpeg</artifactId>
                <version>${javacv.ffmpeg.version}</version>
                <classifier>${javacpp.platform.windows-x86}</classifier>
            </dependency>

            <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>ffmpeg</artifactId>
                <version>${javacv.ffmpeg.version}</version>
                <classifier>${javacpp.platform.windows-x86_64}</classifier>
            </dependency>
        </dependencies>

最后打包后可以看到jar包的体积小了很多,现在是三个平台集成在一起的包,后续上线生产的时候只留一个平台还可以精简更多。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐