App上传大视频的一种解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了App上传大视频的一种解决方案相关的知识,希望对你有一定的参考价值。

参考技术A 去年年底闲来无事,在猪八戒网上闲逛,看能否赚点零花钱。哈~。

看到一需求:相册读取大视频文件(上G),文件流读取,分片上传,禁止占用本地磁盘。

最初想到读取视频文件用 UIImagePickerController,文件流上传采用NSInputStream和 NSOutputStream去解决。网上查找也有不少对应的资料和demo。后来与老板沟通后,要求是上传到七牛类似的云端,文件流上传也不符合分片上传的要求。最重要的一点视频文件很大,直接读取到App就会崩溃。

另外一种读取相册的方式是ALAsset,ios 8以后苹果推荐使用PhotoKit。而且最让人激动的是,通过 PhotoKit可以获取到视频文件的路径。七牛云提供的分片上传接口中,参数必须是路径。哈~~接下来就是做个demo去验证啦。

获取所有相册资源,并按照创建时间排序。

获取所有视频集合。

获取视频文件路径。

集成七牛云存储第三方,基本实现需求。

我在测试时,PhotoKit获取视频文件的方式是不可视的,很难选择自己想要上传的文件。而UIImagePickerController可以选择对应的视频。想要做一个类似相册的VideoPicker,就要获取视频的第一帧,并把它显示出来。

在加上视频时间,就像个VideoPicker的样子啦。

这种VideoPicker的方式与系统相册的方式对比。ThumbVideoPicker占用内存小。我用一个20M左右的视频文件测试。结果如下:

在打开到对应视频缩略图页面时,系统内存达到第一个峰值,约16M左右。而本文所用ThumbVideoPicker只有13M左右。另外系统在选择对应视频后有一个压缩的过程,也会占用不少内存。在视频文件很大时,这种优势更为明显。

如果是仅为获取视频文件路径上传,或者大文件视频上传(无压缩),采用PhotoKit的方式也是一个较好的选择。

本文参考demo

附:

NSInputStream 相册上传资料

PhotoKit学习资料

Example app using Photos framework

以上是关于App上传大视频的一种解决方案的主要内容,如果未能解决你的问题,请参考以下文章

PHP上传大文件的三种解决方案

csharp上传大型视频文件到服务器,解决方案

csharp上传大型视频文件到服务器,解决方案

PHP大文件分片上传/多线程上传

PHP大文件分片上传/多线程上传

公众号内的视频怎么发布到官网