更新记录
1.2.0(2024-04-10)
新增支持base64格式返回图片,base64方法返回不会保存到相册
1.1.0(2022-11-15)
1、解决android高版本系统无法保存图片等问题。
1.0.0(2021-08-11)
初次发布插件
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 14.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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获取本地、网络视频的封面图片、缩略图、第N帧图片、视频指定时间截图插件
请求参数说明
参数 | 说明 | 示例 |
---|---|---|
videoPath | 视频路径(本地、网络均可) | file:///storage/emulated/0/Pictures/test.mp4 |
imagePath | 图片保存文件夹名称 | VideoCover |
imageName | 图片保存名称 | test1628666711531.jpg |
coverTime | 时间(截取视频当前时间的画面为封面图片),单位:秒 | 1 |
回调参数说明
参数 | 说明 | 示例 |
---|---|---|
code | 结果码 | 200 |
coverPath | 封面图片路径 | file:///storage/emulated/0/VideoCover/test1628651342983.jpg |
base64 | 图片base64 | data:image/jpeg;base64,xxx |
msg | 错误信息 | 视频路径不能为空 |
结果码参数说明
Code | 说明 |
---|---|
200 | 获取成功(不是200均为获取失败) |
401 | 视频路径不能为空 |
402 | 保存图片的地址不能为空 |
403 | 保存图片的名字不能为空 |
404 | 图片保存失败 |
405 | 其他错误 |
引用插件
const VideoCover = uni.requireNativePlugin('GT-VideoCover_Picture');
获取视频封面图片,base64格式返回
VideoCover.handleLocalVideoToBase64({
videoPath: 'xxx', //视频路径
coverTime: 1 //截取视频当前时间的图片作为封面,单位:秒
},
ret => {
uni.hideLoading();
if (ret && ret.code == 200) {
console.log('=====成功result: ', ret);
} else {
console.log('=====失败result: ', ret);
}
}
);
获取本地视频封面图片
/**
* 获取本地视频封面图片
*/
handleLocalVideo() {
let that = this;
uni.chooseVideo({
count: 1,
sourceType: ['album'],
success: function(res) {
// #ifndef APP-PLUS
uni.showToast({
title: '请在APP中测试',
mask: true,
duration: 1500,
icon: 'none'
});
// #endif
// #ifdef APP-PLUS
uni.showLoading({
title: 'loading...',
mask: true
});
VideoCover.handleLocalVideo(
{
videoPath: res.tempFilePath, //视频路径
imagePath: 'VideoCover', //图片保存文件夹名称
imageName: 'test'+(new Date()).getTime()+'.jpg', //图片保存名称
coverTime: 1 //截取视频当前时间的图片作为封面,单位:秒
},
ret => {
uni.hideLoading();
if (ret && ret.code == 200) {
console.log('===========================');
console.log('=====成功result: ', ret);
console.log('===========================');
that.videoCoverPath = ret.coverPath;
uni.showToast({
title: '成功: ' + ret.coverPath,
mask: true,
duration: 1500,
icon: 'none'
});
} else {
console.log('===========================');
console.log('=====失败result: ', ret);
console.log('===========================');
uni.showToast({
title: '失败: ' + ret.msg,
mask: true,
duration: 1500,
icon: 'none'
});
}
}
);
// #endif
}
});
},
获取网络视频封面图片
/**
* 获取网络视频封面图片
*/
handleNetworkVideo() {
let that = this;
// #ifndef APP-PLUS
uni.showToast({
title: '请在APP中测试',
mask: true,
duration: 1500,
icon: 'none'
});
// #endif
// #ifdef APP-PLUS
uni.showLoading({
title: 'loading...',
mask: true
});
VideoCover.handleLocalVideo(
{
videoPath: 'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/a876efc0-4f35-11eb-97b7-0dc4655d6e68.mp4', //视频路径
imagePath: 'VideoCover', //图片保存文件夹名称
imageName: 'test'+(new Date()).getTime()+'.jpg', //图片保存名称
coverTime: '80.5',//截取视频当前时间的图片作为封面,单位:秒
},
ret => {
uni.hideLoading();
if (ret && ret.code == 200) {
console.log('===========================');
console.log('=====成功result: ', ret);
console.log('===========================');
that.videoCoverPath = ret.coverPath;
uni.showToast({
title: '成功: ' + ret.coverPath,
mask: true,
duration: 1500,
icon: 'none'
});
} else {
console.log('===========================');
console.log('=====失败result: ', ret);
console.log('===========================');
uni.showToast({
title: '失败: ' + ret.msg,
mask: true,
duration: 1500,
icon: 'none'
});
}
}
);
// #endif
}