功能介绍:需要将转码后的视频(小于20MB),通过APP下载至手机相册,可以将小视频分享至微信传播。

1.通过服务器转码视频,或者很多云服务商都会提供这个功能。

2.通过APP下载至手机相册,这个是咱们需要做的事。

主要技术:用到 URLSession 和 URLSessionDownloadDelegate

1.创建 session 下载任务 并执行(由于下载的视频比较小,所有就不用分段下载了)

        //  初始化 sessionlet config = URLSessionConfiguration.default;let session = URLSession(configuration: config, delegate: self, delegateQueue: OperationQueue());//  视频地址let url = URL(string: urlStr.addingPercentEncoding(withAllowedCharacters:.urlQueryAllowed)!);//  创建请求let request = URLRequest(url: url!);let download = session.downloadTask(with: request);//  开始任务,session 任务默认都是挂起的,需要 resume 才能执行download.resume();

2.设置 URLSessionDownloadDelegate 代理方法

    //下载完成时调用,location 是下载完成后的路径
@available(iOS 7.0, *)public func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL)//下载进度,下载过程中会多次调用
//bytesWritten: 本次写入的字节数,totalBytesWritten:已经写入的字节数(目前下载的字节数),totalBytesExpectedToWrite:总得下载字节数(文件的总大小)
@available(iOS 7.0, *)optional public func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64)//继续下载,@available(iOS 7.0, *)optional public func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didResumeAtOffset fileOffset: Int64, expectedTotalBytes: Int64)

上代码

//  完成调用func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {//  1.输出 location 是 "file:///user..." 格式,需要将 file:// 截掉,并转换成 String 格式
//  2.下载完成后的文件默认保存在沙盒tmp文件夹(临时文件)中,该方法结束后系统会自动删除,所以需要转存并且修改文件格式
//  将源文件 URL 地址转成 Stringlet locationStepOne = location.absoluteString as NSString;//  截掉 file://let locationStepTwo = locationStepOne.substring(from: 7);//  创建文件管理器let manager = FileManager.default;//  目标地址 cache 文件夹下let pathArray = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true);//  生成目标地址let copyPath = pathArray.first! + "/video.mov";
//  判断文件是否存在,存在就删除
let exist = manager.fileExists(atPath: copyPath);if exist {//  有,则删除let cancel:Bool = ((try?manager.removeItem(atPath: copyPath)) != nil);if !cancel {return;}}
//  复制文件 tmp -> cache
let save:Bool = ((try? manager.moveItem(atPath: locationStepTwo, toPath: copyPath)) != nil);if save {
//  检测文件是否可以保存至相册
if UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(copyPath) {//  存入相册UISaveVideoAtPathToSavedPhotosAlbum(copyPath, self, nil, nil);}} else {print("失败");}}//  下载进度func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {//  获取进度let written:Float = (Float)(totalBytesWritten);let total:Float = (Float)(totalBytesExpectedToWrite);let progress:Float = written/total;}//  继续下载func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didResumeAtOffset fileOffset: Int64, expectedTotalBytes: Int64) {}

下载视频并保存至手机相册相关推荐

  1. 手机优酷下载视频怎么保存到手机

    有时大家必须把一些视频文件格式下载出来看,防止在沒有总流量的情况下来收看,例如远途消磨时光,就可以收看下载好的视頻是十分非常好的挑选,那麼下边大家讨论一下怎样下载视頻到手机呢? 手机优酷下载视频怎么保 ...

  2. 微信小程序下载图片获取相册授权,保存视频或图片到手机相册

    单独建一个downloadfile.js,将方法导出: downloadfile.js文件: //downloadfile.js/*** 下载单个文件*/ function downloadFile( ...

  3. sipjs 保存mp4文件_微信视频号视频怎么下载,视频号视频怎么保存到手机

    微信视频号视频怎么下载,视频号视频怎么保存到手机. 这是分享在网站上的微信视频号下载教程,具体细节可查看网站详细细节 微信视频号视频怎么下载,视频号视频怎么保存到手机 - 承林私塾自学网​281666 ...

  4. uniapp 下载图片并保存到手机的相册中

    使用unaipp开发的微信小程序中,下载图片并保存到手机的相册中. 创建公共方法文件 common.js,相关api可以自行查阅微信开发文档了解,参照代码如下: let baseUrl = 'http ...

  5. 微信动态表情保存到手机相册

    微信表情包不能下载到手机相册,一直是许多用户头疼的一个问题,现在关注了这个小工具,只需简单一步,就能立即把想要的表情保存到本地手机相册,轻轻松松3秒搞定. 01 关注公众号:表情保存神器 02 把需要 ...

  6. uniapp canvas 图片加上文字合成一张新图并保存到手机相册

    uniapp canvas 图片加上文字合成一张新图并保存到手机相册 背景图上是奖章徽章,中间加上自定义文本,我这个图是因为背景图上原来就有字,随便找的,所以跟我写的文字层叠了 具体实现代码 < ...

  7. 小程序canvas生成海报保存至手机相册

    小程序canvas画图保存至手机相册 (1)可直接展示生成的海报 .因手机分辨率不同可能导致生成的海报会有细微差别,这里隐藏canvas海报,页面正常设置海报样式保存时保存隐藏的canvas海报 (2 ...

  8. 微信小程序使用canvas画图并保存到手机相册踩坑总结

    接到个项目做微信小程序的,需要将手机中的页面保存到手机相册中,效果图如下 首先想到的就是利用canvas画图然后在保存到相册,看起来很简单网上也有很多例子,但都不完整,很多网友分享的都在半吊子工程,只 ...

  9. 微信小程序第四篇:生成图片并保存到手机相册

    系列文章传送门: 微信小程序第一篇:自定义组件详解 微信小程序第二篇:七种主流通信方法详解 微信小程序第三篇:获取页面节点信息 目录 一.封装分享组件 二.定义用户授权方法 三.调用流程 首先我们看一 ...

最新文章

  1. SD-WAN开源优势是什么?
  2. Python 爬虫十六式 - 第六式:JQuery的假兄弟-pyquery
  3. 地表最强的MySQL安装一键式安装,信不信你下完我就给你装好!附各种Mysql安装失败的解决办法(什么你安装失败了?快来看这个)
  4. 记住北京历史上的灾难
  5. conda 安装mysql_centos7安装mysql
  6. Caffe将图像数据转换成leveldb/lmdb
  7. 随想录(分布式系统)
  8. Ruby数据结构-数组和哈希表
  9. springboot生成包含特定数字_关于Spring Boot 这可能是全网最好的知识点总结
  10. 【音乐理论】音与音高 ( 音 | 乐音体系 | 音列 | 基本音级 | 音名和唱名 )
  11. web前端开发技术实验与实践(第三版)储久良编著 课外拓展训练5.2 HTML5是如何起步的
  12. 映美530k驱动不能安装问题
  13. QCC300x 芯片ota升级PSKey 操作方法
  14. 互补滤波 二阶低通滤波理解
  15. 能使用firebug的火狐浏览器下载地址
  16. 年终盘点 |15种最常用的数据分析方法和模型,赶紧收藏起来吃灰
  17. 人人网相册加密密码破解
  18. 修改Visata下的无线网卡(Intel 5100 agn)Mac地址
  19. 将U盘的图标改成自己喜欢的图案
  20. 安卓玩机搞机技巧综合资源---MIUI14全机型首版下载链接 刷机方法 获取root步骤【十二】

热门文章

  1. 谷歌浏览器收藏栏不见了解决办法
  2. 火狐浏览器解除端口限制
  3. 在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数
  4. yarn打包报错:error during build: Error: Assigning to rvalue (Note that you need plugins to import files
  5. PV操作与信号灯及例子
  6. Linux进程间通信(二)之信号量
  7. 最好的礼物是忠言,最好的修养是宽恕。
  8. 名帖347 怀素 草书《大草千字文》
  9. linux安装系统如何查看硬盘,如何检查Linux系统服务器的硬盘是SSD还是HDD?
  10. 使用python制作爬虫_使用Python的urllib和urllib2模块制作爬虫的实例教程