uni-app新版hb添加video打包后体积变得非常大

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app新版hb添加video打包后体积变得非常大

那个直播的ffmpeg文件是不是能优化一下体积

3 回复

云端打包默认使用cpu指令(x86/armeabi/armeabi-v7a),打包后apk比较大的原因是包含了三种指令的so库,如果想根据需求选择要支持的cpu指令,可在manifest.json文件中的plus->distribute->google->abiFilters进行配置: “plus”: {
“distribute”: {
“google”: {
“abiFilters”:[
“armeabi”,
“x86”
],
//…
},
//…
},
//…
} 其中armeabi-v7a,是值对第7代arm cpu指令优化的so库,运行速度会更快,这些cpu是可以完全兼容armeabi指令的so的,如果要减少apk尺寸,可以只包含armeabi指令的so库。


针对uni-app新版hb(HBuilderX)添加video组件后打包体积变得非常大的问题,这通常是由于视频文件本身较大,或者打包过程中没有进行适当的优化处理导致的。以下是一些具体的代码示例和优化策略,帮助你减小打包体积:

1. 使用外部视频链接

如果视频文件不需要内置在应用中,可以直接使用网络链接。这样可以避免将大体积的视频文件打包进应用。

<template>
  <view>
    <video src="https://example.com/your-video.mp4" controls></video>
  </view>
</template>

2. 视频压缩

在将视频添加到项目中之前,使用视频压缩工具(如FFmpeg、HandBrake等)对视频进行压缩。

# 示例:使用FFmpeg压缩视频
ffmpeg -i input.mp4 -vcodec libx264 -crf 28 output.mp4

其中-crf参数控制压缩质量,数值越大压缩率越高,但质量越差。

3. 使用Base64编码(不推荐大文件)

对于非常小的视频文件,可以考虑将其转换为Base64编码并直接嵌入代码中(但这种方法对于大文件不适用,因为会显著增加代码体积)。

// 示例:将小视频文件转换为Base64并嵌入(伪代码)
const videoBase64 = 'data:video/mp4;base64,AAAAIGZ0eXBmp4v...';

<template>
  <view>
    <video :src="videoBase64" controls></video>
  </view>
</template>

4. 配置文件优化

manifest.jsonvue.config.js(或webpack.config.js,如果适用)中配置资源优化选项,如压缩、混淆等。

// manifest.json 示例
{
  "mp-weixin": {
    "appid": "your-app-id",
    "setting": {
      "urlCheck": false,
      "es6": true,
      "enhance": true,
      "postcss": true,
      "min": {
        "webpackChain": function (chain) {
          // 自定义webpack配置,如压缩等
          chain.optimization.minimizer('terser').tap(args => {
            args[0].terserOptions.compress.drop_console = true; // 移除console
            return args;
          });
        }
      }
    }
  }
}

5. 拆分代码和资源

如果应用中有多个页面或模块,考虑使用按需加载和代码拆分,以减少初始包的大小。

// 示例:使用Vue的异步组件
const VideoPage = () => import('./pages/VideoPage.vue');

// 在路由配置中使用
{
  path: '/video',
  component: VideoPage,
  lazy: true
}

通过上述方法,你可以有效地减小uni-app在添加video组件后的打包体积。注意,选择具体方法时应根据项目的实际情况和需求来决定。

回到顶部