当前位置: 首页 > news >正文

解决 iOS 端小程序「saveVideoToPhotosAlbum:fail invalid video」问题

场景复现:

const url = 'https://mobvoi-digitalhuman-video-public.weta365.com/1788148372310446080.mp4'uni.downloadFile({url,success: (res) => {uni.saveVideoToPhotosAlbum({filePath: res.tempFilePath,success: (res) => {console.log("res => ", res);uni.showToast({title: '下载成功',icon: 'success'});},fail(err) {console.log("err => ", err);uni.showToast({title: '保存失败',icon: 'error'});},});},fail(err) {uni.showToast({title: '下载失败,请稍后再试',icon: 'error'});},
});

PC 和安卓没啥事,但是 iOS 上就会有这么个玩意出来:

{errMsg: "saveVideoToPhotosAlbum:fail invalid video"
}

这个讨论中的有效信息可能是最多的,可那位说使用 compressVideo() 的老哥也没贴个实例。也尝试去用了,但是又碰到了另一个错误,真是世间 Bug 与你环环相扣=_=

于是换了个思路,我去翻了一下 Uni 插件市场,看到了这个:「移动端-H5-小程序下载保存图片,文档和视频到手机」

在这里插入图片描述
它不是能成功下载吗,那我就去借鉴一下它的源码,看看它是怎么实现的。

这个插件的源码就不说了,有兴趣自己去看,我就贴一下最终成功下载的代码:

const url = 'https://mobvoi-digitalhuman-video-public.weta365.com/1788148372310446080.mp4';const fileName = new Date().valueOf();//  拼接本地文件路径
const filePath = `${uni.env.USER_DATA_PATH}/${fileName}.${url.split('.').pop()}`;uni.downloadFile({url,filePath,success: (res) => {uni.saveVideoToPhotosAlbum({filePath: res.filePath,success: (res) => {console.log('res => ', res);uni.showToast({title: '下载成功',icon: 'success'});const fileMgr = uni.getFileSystemManager();// 删除本地文件fileMgr.unlink({filePath,success(r) {console.log('unlink-getFileSystemManager');console.log(r);}});},fail(err) {console.log('err => ', err);uni.showToast({title: '保存失败',icon: 'error'});}});},fail(err) {uni.showToast({title: '下载失败,请稍后再试',icon: 'error'});}
});

-END-

相关文章:

  • 机器学习-支持向量机
  • web刷题记录(4)
  • 集成学习笔记
  • Python-GEE遥感云大数据分析、管理与可视化及多领域案例教程
  • 2020年09月C语言二级真题
  • Docker高级篇之Dockerfile解析
  • 【sklearn】【逻辑回归1】
  • 华为机考入门python3--(33)牛客33-图片整理
  • C++构造器设计模式
  • 后端大量数据返回,采用数据压缩+分片操作,加快前端响应速度,个人技术总结
  • Nginx介绍
  • opencv进阶 ——(十三)基于三角剖分实现换脸
  • Unity【入门】重要组件和API
  • AIGC的算力与云边协同及应用创新
  • 笔记 | 软件工程04:软件项目管理
  • [Vue CLI 3] 配置解析之 css.extract
  • 【391天】每日项目总结系列128(2018.03.03)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Docker: 容器互访的三种方式
  • java 多线程基础, 我觉得还是有必要看看的
  • laravel with 查询列表限制条数
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Magento 1.x 中文订单打印乱码
  • Markdown 语法简单说明
  • Material Design
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python 反序列化安全问题(二)
  • quasar-framework cnodejs社区
  • Rancher如何对接Ceph-RBD块存储
  • react 代码优化(一) ——事件处理
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 欢迎参加第二届中国游戏开发者大会
  • 解决iview多表头动态更改列元素发生的错误
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 免费小说阅读小程序
  • 那些年我们用过的显示性能指标
  • 收藏好这篇,别再只说“数据劫持”了
  • 数据仓库的几种建模方法
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • # centos7下FFmpeg环境部署记录
  • # 达梦数据库知识点
  • #QT(一种朴素的计算器实现方法)
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (k8s中)docker netty OOM问题记录
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (python)数据结构---字典
  • (二)JAVA使用POI操作excel
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot猪场管理系统 毕业设计 160901