更新记录

2.7.0(2022-05-19)

  • 在自定义压缩方法中, 新增了 startTime 开始裁剪时间 ,endTime 裁剪的结束时间,单位是:毫秒。
  • 新增了自定义矩形 cropRect 参数 来裁剪视频的任意区域部分。

2.6.0(2022-04-14)

  • 调整 Android 端,gson 库类 与其他插件文件有冲突问题。
查看更多

平台兼容性

Android iOS
适用版本区间:4.4 - 11.0 适用版本区间:9 - 15

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


Android 和 IOS 视频裁剪、压缩插件

一、实例化插件

const  crop=uni.requireNativePlugin("Html5app-VideoCrop");

支持的视频格式:MP4、MOV、FLV

二、方法使用, 打开裁剪视频界面

crop.openCrop({
"url":"",
"resolution":"480p", //分辨率
"mode":"scale", //视频模式,fill=填充、scale=裁剪
"showModeButton":true,//是否显示裁剪/填充切换图标按钮
"quality":"sd", // 视频质量
"ratio":"9/16", //视频比例
"mintime":2000, //限制最小裁剪时间,单位t毫秒
"maxtime":0,//限制最大的裁剪时间,0代表不限制作,单位秒
"codecs":2,//编码方式
"gop":"5", // 关键帧
"fps":"25", // 帧率
"saveToAlbum":true // 是否保存到相册
},
ret=>{

});

三、传入参数说明

参数名称 说明 默认值 是否必填
url 视频地址, 平台绝对路径 例如:/storage/emulated/0/DCIM/Camera/2019-10-23-161242310-crop.mp4
resolution 分辨率: 360p,480p,540p,720p,1080p, 留空使用原始视频分辨率 原始视频分辨率
mode 裁剪模式: scale=>裁剪 ,fill=>填充 scale
showModeButton 是否显示裁剪/填充切换图标按钮 true
quality 视频质量: ld=>低清,sd=>标清,hd=>高清,ssd=>超清 sd
ratio 视频比例: 1/1, 3/4, 9/16, 留空则使用原视频的比例 3/4
mintime 限制最小裁剪时间 , 单位是毫秒 2000
maxtime 限制最大裁剪时间 ,0代表不限制, 单位是秒 0
codecs 编码方式: 1=>硬编:提升速度,牺牲视频质量,2=>FFmpeg 编码 1
gop 关键帧,建议GOP值为5-30 5
fps 帧率越高,图像越流畅,文件也越大。建议视频帧率:25-30。 25
saveToAlbum 是否把视频保存到相册,默认是:true,保存到相册 true

四、 返回的数据

1. 裁剪成功

{
    "code": 0, 
    "duration": "15", 
    "mp4": "/storage/emulated/0/DCIM/Camera/2019-10-23-161242310-crop.mp4",
    "image": "/storage/emulated/0/CropImage/image_cropimage.jpg?t=1571818382751",
    "msg": "裁剪视频成功",
    "size": 6113603
}
参数名称 说明
code 返回 0 代表成功
duration 视频总时长,单位/秒
size 视频文件大小,单位/字节
mp4 裁剪后的视频地址
image 裁剪后的视频的封面图片地址
msg 提示语

五、 无界面的压缩视频方法

  • 压缩视频推荐使用模式2 FFmpeg 压缩,可以把视频压缩的比较小。
crop.videoToZip({
url:"", //视频本地路径
resolution:"480p", //分辨率: 360p,480p,540p,720p,1080p, 留空使用原始视频分辨率
quality:"hd",  //视频质量: ld=>低清,sd=>标清,hd=>高清,ssd=>超清
ratio:"3/4", //视频比例: 1/1, 3/4, 9/16 ,resolution 为空时 ratio 无效, ratio,为空,则使用原视频的比例
codecs:2, //编码方式: 1=>硬编:提升速度,牺牲视频质量,2=>FFmpeg 编码 牺牲速度,视频质量高
gop:5, //键帧,建议GOP值为5-30
fps:25, //帧率越高,图像越流畅,文件也越大。建议视频帧率:25-30。
saveToAlbum:true, // 是否保存到相册    startTime:0,
mode:"fill", //视频模式,裁剪scale, 填充fill
startTime:0, // 裁剪的开始时间,单位是:毫秒
endTime:10*1000, // 裁剪的结束时间,单位是:毫秒
cropRect:{offsetX:0,offsetY:0,width:200,height:200}   //矩形裁剪 ,当 mode 为裁剪scale 模式时有效, 可以裁剪视频任意部分区域。
},ret=>{

console.log(JSON.stringify(ret));

});     

按固定分辨率压缩视频。

  • resolution 参数填写分辨率,固定视频宽度:分辨率: 360p,480p,540p,720p,1080p 。
  • ratio 的值为空。
  • 例如:
{
resolution:"1080p",
ratio:""
}

自适应视频压缩

  • ratio 参数留空,则按视频原来的分辨率来压缩。
{
ratio:""
}
  • 视频处理中进度回调
{"msg":"视频处理进度百分比","progress":100,"code":1}
  • 视频处理成功
    {"code":0,
    "size":6113603,
    "msg":"视频处理完成",
    "image":"file:///var/mobile/Containers/Data/Application/338CB844-F75A-4C69-B243-A846D40787CE/tmp/vieoCropImage.jpg",
    "mp4":"file:///var/mobile/Containers/Data/Application/338CB844-F75A-4C69-B243-A846D40787CE/tmp/cutVideo.mp4",
    "duration":25
    }

六、 取消压缩

//取消处理
 crop.cancel();

七、 删除压缩视频,和 裁剪视频时,留下的视频文件,已免占用更多空间

//删除视频
 crop.deleteCache();

视频分辨率

视频分辨率指的是视频横向和纵向上的有效像素,理论上视频分辨率越高,图像越清晰。但分辨率越高也意味着文件越大,处理越耗时。移动端考虑到不同设备性能差异,建议设置分辨率720p及以下。常见的视频分辨率如下:

分辨率 1:1 3:4 9:16
360p 360x360 360x480 360x640
480p 480x480 480x640 480x848
540p 540x540 540x720 540x960
720p 720x720 720x960 720x1280
1080p 1080x1080 1080x1440 1080x1920

视频路径 转换

  • 如果是这种相对路径:_doc/download/01.mp4 ,需要转换成绝对路径,才能访问到文件。

    var filePath=plus.io.convertLocalFileSystemURL("_doc/download/01.mp4"); 

    转换后,例如:

    /storage/emulated/0/DCIM/Camera/2019-10-23-161242310-crop.mp4
    
  • 如果发现 /storage/ 开头的路径访问不了,可以在路径前面加上file:// ,例如:file:///storage/ ,这种。

安卓扫一扫 下载体验

隐私、权限声明

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

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

无,没有采集任何用户数据。

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

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