uni-app IOS真机使用uni.saveVideoToPhotosAlbum方法保存无声音视频报错 saveVideoToPhotosAlbum:fail(安卓无异常)

发布于 1周前 作者 yibo5220 来自 Uni-App

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(安卓无异常)


7 回复

代码完全复现在上方了,可以直接复制测试一下,安卓是正常可以保存,iOS不行,不知道是不是iOS限制了,请官方来看看,谢谢


iOS报错如图

是iOS的限制么

你这个视频使用系统的api保存到相册就是会报错,而且在mac上你这个文件用系统的播放器也无法打开

有没有啥解决办法呢

我试了修改文件格式也同样保存失败,我使用的是FFmpeg这个插件https://ext.dcloud.net.cn/plugin?id=16847

针对您提到的在uni-app中,使用uni.saveVideoToPhotosAlbum方法在iOS真机上保存无声视频时报错的问题,这通常是由于iOS系统对视频文件处理的一些特定要求导致的。以下是一个可能的解决方案和相关的代码案例,帮助您更好地理解和处理这个问题。

解决方案概述

  1. 确保视频格式和编码支持:iOS对视频文件的编码格式有严格要求,通常支持H.264视频编码和AAC音频编码。
  2. 检查视频文件完整性:确保视频文件在保存到相册前是完整且未损坏的。
  3. 使用正确的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的官方支持获取更专业的帮助。

回到顶部