uni-app IOS真机使用uni.saveVideoToPhotosAlbum方法保存无声音视频报错 saveVideoToPhotosAlbum:fail(安卓无异常)
uni-app IOS真机使用uni.saveVideoToPhotosAlbum方法保存无声音视频报错 saveVideoToPhotosAlbum:fail(安卓无异常)
类别 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC操作系统版本 | Windows10 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.24 |
手机系统 | iOS |
手机系统版本 | iOS 15 |
手机厂商 | 苹果 |
手机机型 | 6s |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
let sjs = 'xxx' + new Date().getTime() + '.mp4'
let url = "https://7463-tcb-sjnj9nlx4ec47d-6d3slc420818c-1306522027.tcb.qcloud.la/videoplayback.mp4"
let cs = plus.downloader.createDownload(url, { //创建下载
method: "GET",
timeout: 0,
retry: 888,
retryInterval: 60,
filename: "_doc/download/" + sjs,
}, function(d, status) {
if (status == 200) {
console.log("Download success: " + d.filename);
uni.saveVideoToPhotosAlbum({ //保存到相册
filePath: d.filename,
success(res) {
console.log("保存成功后路径", res)
},
fail(res) {
console.log(res, "保存失败")
uni.showToast({
icon: 'none',
title: '保存失败,未获取储存权限',
duration: 2000,
position: 'bottom',
});
}
});
} else {
console.log("失败了" + status + JSON.stringify(d));
}
});
var a = cs.start()
console.log("开始下载")
操作步骤:
无
预期结果:
无
实际结果:
无
bug描述:
IOS真机使用uni.saveVideoToPhotosAlbum方法保存无声音的视频报错:saveVideoToPhotosAlbum:fail(安卓无异常)
代码完全复现在上方了,可以直接复制测试一下,安卓是正常可以保存,iOS不行,不知道是不是iOS限制了,请官方来看看,谢谢
iOS报错如图
是iOS的限制么
你这个视频使用系统的api保存到相册就是会报错,而且在mac上你这个文件用系统的播放器也无法打开
有没有啥解决办法呢
我试了修改文件格式也同样保存失败,我使用的是FFmpeg这个插件https://ext.dcloud.net.cn/plugin?id=16847
针对您提到的在uni-app中,使用uni.saveVideoToPhotosAlbum
方法在iOS真机上保存无声视频时报错的问题,这通常是由于iOS系统对视频文件处理的一些特定要求导致的。以下是一个可能的解决方案和相关的代码案例,帮助您更好地理解和处理这个问题。
解决方案概述
- 确保视频格式和编码支持:iOS对视频文件的编码格式有严格要求,通常支持H.264视频编码和AAC音频编码。
- 检查视频文件完整性:确保视频文件在保存到相册前是完整且未损坏的。
- 使用正确的API调用方式:确保
uni.saveVideoToPhotosAlbum
的调用符合uni-app的API规范。
代码案例
以下是一个简单的代码示例,展示如何使用uni.saveVideoToPhotosAlbum
方法保存视频到iOS相册,同时处理可能出现的错误:
// 假设您已经有一个视频文件的临时路径 videoPath
const videoPath = '/path/to/your/video.mp4';
uni.saveVideoToPhotosAlbum({
filePath: videoPath,
success: (res) => {
console.log('视频保存成功:', res);
uni.showToast({
title: '视频保存成功',
icon: 'success'
});
},
fail: (err) => {
console.error('视频保存失败:', err);
// 针对iOS特定错误处理
if (err.errMsg === 'saveVideoToPhotosAlbum:fail') {
// 尝试检查视频文件是否损坏或格式不支持
// 这里可以添加额外的逻辑,比如重新生成视频或提示用户视频格式不支持
uni.showToast({
title: '视频保存失败,请检查视频格式',
icon: 'none'
});
}
},
complete: () => {
console.log('视频保存操作完成');
}
});
额外注意事项
- 视频文件权限:确保您的应用已经请求并获得了保存视频到相册的权限。在iOS上,这通常需要在
Info.plist
中添加相应的权限描述。 - 视频转换:如果视频格式不被iOS支持,您可能需要在服务端或使用第三方库将视频转换为支持的格式。
- 测试环境:确保在真实的iOS设备上测试,因为模拟器可能无法完全模拟真实设备的行为。
通过上述步骤和代码示例,您应该能够更好地定位和解决在iOS真机上保存无声视频时遇到的问题。如果问题依旧存在,建议检查视频文件的详细编码信息,或联系uni-app的官方支持获取更专业的帮助。