更新记录

0.0.3(2021-12-20)

处理兼容问题。

0.0.2(2020-04-01)

修复云打包无法正常调用插件的问题。

0.0.1(2020-03-19)

1、实现视频高清、标清和省流量三种压缩方式; 2、压缩中可以回调压缩进度; 3、压缩完成后回到结果文件地址。

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


  1. 引入插件

    const videoCompressorModule = uni.requireNativePlugin('Lele-Video-Compressor_VideoCompressorModule');
  2. 启动压缩

    1. 调用start函数,传入参数如下:

      • originalPath:字符串类型,本地文件路径;

      • appName:字符串类型,app名称(压缩后会根据此参数进行文件保存);

      • isUseTimestampNaming://布尔类型,默认为false,可选,是否以时间戳命名文件,默认命名格式为'appName-temp';

      • level:字符串类型,可选,压缩等级,默认普通。{high-保持高质量,medium-普通,low-省流};

    2. 结果回调:

      • 回调中一定存在code和msg字段,根据code的值来做进一步的业务;

      • code值为字符串:"0"-压缩成功;"1"-压缩中;"-1"-压缩失败;

      • code值为1时,回调一个字段为progress的进度值。

    3. 实例代码:

      //引入插件
      const videoCompressorModule = uni.requireNativePlugin('Lele-Video-Compressor_VideoCompressorModule');
      const modal = uni.requireNativePlugin('modal');
      compressor(oPath) {
                  let that = this
                  videoCompressorModule.start({
                      originalPath: oPath,//原始文件地址
                      appName: "test",//app名
                      isUseTimestampNaming: false,//可选,是否以时间戳命名文件,默认命名格式为'appName-temp'
                      level: "medium"//可选,压缩等级,默认普通。{high-保持高质量,medium-普通,low-省流}
                  }, result => {
                      const msg = JSON.stringify(result);
                      switch (result.code) {
                          case '0':
                              modal.toast({
                                  message: msg,
                                  duration: 1.5
                              });
                              that.progress = 100
                              console.log("callback---code--" + result.code);
                              console.log("callback---msg--" + result.msg);
                              console.log("callback---compressedPath--" + result.compressedPath);
                              that.compressedPath = result.compressedPath
                              break;
                          case '1':
                              that.progress = Math.round(result.progress * 100) / 100
                              // that.progress = result.progress.toFixed(2)
                              console.log("callback---code--" + result.code);
                              console.log("callback---msg--" + result.msg);
                              console.log("callback---progress--" + result.progress);
                              break;
                          case '-1':
                              modal.toast({
                                  message: msg,
                                  duration: 1.5
                              });
                              console.log("callback---code--" + result.code);
                              console.log("callback---msg--" + result.msg);
                              break;
                      }
                  });
              },
  3. 删除文件

    1. 调用deleteFiles函数删除文件,此操作不进行回调,参入如下:

      • path:文件路径
    2. 结果回调:

      • 回调中一定存在code和msg字段,根据code的值来做进一步的业务;

      • code值为字符串:"0"-删除成功;"-1"-压缩失败;

    3. 实例代码

      deleteFile() {
                  let that = this
                  videoCompressorModule.deleteFile({
                      path: that.compressedPath//文件地址
                  }, result => {
                      const msg = JSON.stringify(result);
                      switch (result.code) {
                          case '0':
                              modal.toast({
                                  message: msg,
                                  duration: 1.5
                              });
                              console.log("callback---code--" + result.code);
                              console.log("callback---msg--" + result.msg);
                              break;
                          case '-1':
                              modal.toast({
                                  message: msg,
                                  duration: 1.5
                              });
                              console.log("callback---code--" + result.code);
                              console.log("callback---msg--" + result.msg);
                              break;
                      }
                  });
              },

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问