my.choosevideo(object object)
基础库 或更高版本; 若版本较低,建议采取 兼容处理 。
主体: 企业支付宝小程序 、 个人支付宝小程序
从本地相册选择视频或使用相机摄像
object object
查看示例
属性 | 类型 | 默认值 | 必填 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sourcetype | array |
album,camera | 否 | 视频选择的来源 |
||||||||||
|
||||||||||||||
compressed | boolean | true | 否 | 是否压缩所选择的视频文件。在 ios 端即使 compressed 为 false,视频实际也是有压缩的,compressed 仅指定更大压缩级别 |
||||||||||
maxduration | number | 60 | 否 | 拍摄视频最长拍摄时间,单位:秒 |
||||||||||
camera | string | back | 否 | 默认拉起的是前置或者后置摄像头。部分 android 手机下由于系统 rom 不支持无法生效 |
||||||||||
|
||||||||||||||
success | function | - | 否 | 调用成功的回调函数 |
||||||||||
fail | function | - | 否 | 调用失败的回调函数 |
||||||||||
complete | function | - | 否 | 调用结束的回调函数(调用成功、失败都会执行) |
success 回调函数
参数
object res
查看示例
属性 | 类型 | 兼容性 | 描述 |
---|---|---|---|
filepath | string | 基础库: 2.4.4 |
选定视频的本地临时文件路径 |
duration | number | - | 选定视频的时间长度 |
size | number | - | 选定视频的数据量大小 |
height | number | - | 返回选定视频的高度 |
width | number | - | 返回选定视频的宽度 |
tempfilepath | string | 基础库: 1.0/2.4.4 |
选定视频的本地临时文件路径 |
fail 回调的参数为 object,error
属性为错误码,errormessage
属性为错误消息。
错误码 | 错误消息 | 凯发app官方网站的解决方案 |
---|---|---|
11 | 用户取消操作。 |
用户正常交互流程,不需要特殊处理。 |
14 | 无摄像头权限 | 用户没开启系统相机权限,可以调用 my.showauthguide 引导用户开启相关系统权限。 |
15 | 没有开启相册权限。/ no permission to read storage. | 用户没开启系统相册权限 / 用户没有授权文件和媒体写入权限。 |
16 | 无麦克风权限 | 用户没开启系统麦克风权限,可以调用 my.showauthguide 引导用户开启相关系统权限。 |
21(ios) | 视频压缩失败。 |
请重试。如果频率较高的话,可以尝试重启设备 |
2001 | 用户不允许授权。 |
用户拒绝为当前小程序授权。请在交互中考虑此情况。如有需要,请向用户强调该授权的必要性。 |
2002 | 用户拒绝为当前小程序授权,并勾选了“总是保持以上选择”后,再次调用授权接口产生的报错。 |
如有需要,提醒或引导用户手动授权:小程序右上角胶囊按钮->设置->打开权限开关;或者通过调用 my.opensetting 帮助用户打开设置页面。 |
2003 | 用户勾选了不允许授权选项。 |
如有需要,提醒或引导用户手动授权:小程序右上角胶囊按钮->设置->打开权限开关;或者通过调用 my.opensetting 帮助用户打开设置页面。 |
my.choosevideo ({
// 可以根据您的业务按需选择使用 [‘camera'] 或者 ['album', 'camera']
sourcetype: ['album'],
success: function (res) {
console.log (res);
},
fail: function (err) {
console.log (err);
},
});
my.choosevideo ({
success: function (res) {
console.log ('choosevideo: success', res);
my.detectfiletype ({
filepath: res.tempfilepath,
success (res) {
console.log ('detectfiletype: success', res);
},
fail (err) {
console.log ('detectfiletype: fail', err);
},
});
},
fail: function (err) {
console.log ('choosevideo: fail', err);
},
});
{
"apfilepath": "https://resource/6d40daec24957a6788bd285e38ed7b43||64fa859f4e80be942874725e3e26adbe2.video",
"creationdate": 1683899602000,
"duration": 3,
"filepath": "https://resource/6d40daec24957a6788bd285e38ed7b43||64fa859f4e80be942874725e3e26adbe2.video",
"height": 564,
"localid": "6d40daec24957a6788bd285e38ed7b43||64fa859f4e80be942874725e3e26adbe2",
"modifydate": 1684470811000,
"scene": "album",
"size": 314861,
"tempfilepath": "https://resource/6d40daec24957a6788bd285e38ed7b43||64fa859f4e80be942874725e3e26adbe2.video",
"tempvideothumbpath": "https://resource/64fa859f4e80be942874725e3e26adbe2.image",
"width": 320
}
{
"error": 11,
"errormessage": "用户取消操作",
"filepath": undefined
}
-
tip
返回的视频路径文件扩展名并非为文件真实类型,在真机上扩展名是 .video ,在 ide 上扩展名由文件实际类型决定。
若需判断文件实际扩展名,可使用 [my.detectfiletype](https://opendocs.alipay.com/mini/076dwu?pathhash=c64d1eb5) 进行查询,请以此接口返回结果为准,不过需注意此接口仅限真机调试,可参考上方示例代码。
-
bug支付宝客户端 10.5.16 版本之前,安卓端 “用户取消操作” 报错错误码为 10,并非 11,请注意兼容。
-
tipmy.choosevideo 传参 compressed: true 启用压缩视频后安卓端真实文件名不带后缀。注意:本地临时文件路径非真实文件名
q:如何上传用户选择的视频?
可以配合 my.uploadfile 一起使用。
my.choosevideo({
success(res) {
console.log("choosevideo", res);
const path = res.tempfilepath;
my.uploadfile({
// 替换成你自己的服务端地址
url: "https://httpbin.org/post",
filetype: "video",
filename: "user-selected-video",
filepath: path,
formdata: { extra: "其他信息" },
success: (res) => {
console.log("success res", res);
my.alert({ title: "上传成功" });
},
fail: (err) => {
my.alert({ title: "上传失败", content: json.stringify(err) });
},
});
},
});