Android 和 IOS 视频裁剪、视频压缩插件
详细内容
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 | 否 |
maxTimeTip | 限制最大裁剪时间自定义提示文内 ,空代表默认提示内容, | 否 | |
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/ ,这种。
加载更多