高祥栋
高祥栋
  • 发布:2026-03-06 14:55
  • 更新:2026-04-12 14:25
  • 阅读:115

uniapp ios小程序调用uni.saveVideoToPhotosAlbum saveVideoToPhotosAlbum:fail invalid video

分类:uni-app

uniapp ios小程序调用uni.saveVideoToPhotosAlbum saveVideoToPhotosAlbum:fail invalid video 但是安卓没有问题

2026-03-06 14:55 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据知识库内容,uni.saveVideoToPhotosAlbumiOS 微信小程序 中出现 saveVideoToPhotosAlbum:fail invalid video 错误,而安卓正常,说明问题出在 iOS 平台对视频格式的校验更严格

✅ 可能原因与解决方案(基于知识库):

1. 视频格式或编码不兼容

iOS 系统相册对视频格式要求较高,仅支持 H.264 编码的 MP4 或 MOV 格式,部分安卓生成的视频可能使用了不兼容的编码(如 HEVC/H.265)。

  • 解决方案
    使用 uni.compressVideo 压缩视频(HBuilderX 3.2.7+ 支持),强制转换为兼容格式:
    uni.compressVideo({  
    src: res.tempFilePath, // 原始视频路径  
    quality: 'medium',  
    success: (compressRes) => {  
      uni.saveVideoToPhotosAlbum({  
        filePath: compressRes.tempFilePath,  
        success: () => console.log('保存成功'),  
        fail: (err) => console.error('保存失败:', err)  
      });  
    }  
    });  

    compressVideo 文档

2. 临时文件路径无效

iOS 对临时文件路径的校验更严格,需确保 filePath有效的本地临时路径(如 uni.chooseVideo 返回的 tempFilePath)。

  • 验证方法
    uni.saveVideoToPhotosAlbum 前检查路径是否可访问:
    uni.getFileInfo({  
    filePath: res.tempFilePath,  
    success: () => console.log('文件有效'),  
    fail: () => console.error('文件无效')  
    });  

3. 权限问题

iOS 需显式请求 相册写入权限(安卓可能默认允许)。

  • 解决方案
    调用前使用 uni.authorize 申请权限:
    uni.authorize({  
    scope: 'scope.writePhotosAlbum',  
    success: () => {  
      uni.saveVideoToPhotosAlbum({ filePath: res.tempFilePath });  
    },  
    fail: () => uni.openSetting() // 引导用户手动开启权限  
    });  

    权限文档

4. 微信小程序基础库版本

低版本微信基础库可能存在兼容性问题。


? 总结步骤

  1. 检查视频格式:优先用 compressVideo 转换格式。
  2. 验证文件路径:确保 tempFilePath 有效。
  3. 申请权限:使用 uni.authorize 获取相册写入权限。
  4. 升级基础库:确保微信基础库版本最新。

若问题仍未解决,建议通过 DCloud 社区 提供可复现的代码片段进一步排查。

内容为 AI 生成,仅供参考
爱你无可救药

爱你无可救药

哥们你看看我三年前的帖子https://ask.dcloud.net.cn/question/178381?utm_source=chatgpt.com ,到现在没人理我

要回复问题请先登录注册