Swift实现带有缓存的播放器
来源:互联网 发布:编程珠玑 第3版 pdf 编辑:程序博客网 时间:2024/06/06 14:03
用到的第三方库:
Alamofire 用于网络请求和视频下载
MobilePlayer 用于播放在线视频
创建Movie类:
import Foundationimport Alamofireclass Movie { private var url: NSURL //网络路径 如果本地路径存在则是本地路径 init (url: NSURL) { self.url = url } //获取播放路径 func getUrl() -> NSURL { if isExist() { let url = NSURL(fileURLWithPath: getFilePath()) return url } return self.url } //通知下载 如果已经存在 不下载 func postDownload() { if isExist() { return } let destination = Alamofire.Request.suggestedDownloadDestination() Alamofire.download(.GET, url, destination: destination).response { _, _, _, error in if let error = error { print("Failed with error: \(error)") } else { print("Downloaded file successfully") } } } //是否已经下载 private func isExist() -> Bool{ let fileManager = NSFileManager.defaultManager() let filePath = getFilePath() print(filePath) let exist = fileManager.fileExistsAtPath(filePath) return exist } //通过文件名称 获取文件路径 private func getFilePath() -> String { let filePath = NSHomeDirectory() + "/Documents/" + getFileName() return filePath } //通过url 获取文件名称 private func getFileName() -> String { let array = self.url.URLString.componentsSeparatedByString("/") return array.last! }}
创建Movie对象:
let string = "视频路径"let url = NSURL(string: string)!let movie = Movie(url: url)movie.postDownload() //下载play(movie)//播放
播放方法:
import MobilePlayerfunc play(movie: Movie) { let url = movie.getUrl() let playerVC = MobilePlayerViewController(contentURL: url) playerVC.activityItems = [url] presentMoviePlayerViewControllerAnimated(playerVC)}
一边播放一遍下载,下载成功后会播放本地路径的视频。
清除所有缓存:
//清除所有缓存func cleanAllCache() { let fileManager = NSFileManager.defaultManager() let myDirectory = NSHomeDirectory() + "/Documents" let fileArray:[AnyObject]? = fileManager.subpathsAtPath(myDirectory) for fn in fileArray!{ try! fileManager.removeItemAtPath(myDirectory + "/\(fn)") }}
这里是用的是Alamofire设置的下载路径,注意删除的路径要和下载的路径一致。
//获取所有缓存大小 func getAllCacheSize() -> String { let fileManager = NSFileManager.defaultManager() let myDirectory = NSHomeDirectory() + "/Documents" let fileArray:[AnyObject]? = fileManager.subpathsAtPath(myDirectory) var allSize = 0.0 for fn in fileArray!{ let attr = try! fileManager.attributesOfItemAtPath(myDirectory + "/\(fn)") let size = (attr["NSFileSize"] as! Double) / 1000000 //单位为 M allSize += size } return String(format: "%.1f", allSize) //保留小数点后一位 }
0 0
- Swift实现带有缓存的播放器
- 带有播放列表的网页播放器
- 基于mediaPlayer实现的播放器,带有分级的目录功能;
- 基于DelayQueue带有回调的超时缓存实现
- iOS本地音频播放、截取的实现,播放时带有动画效果
- 带有定时器的缓存装置
- swift:基于MPMoviePlayerController的视频播放器
- 12.3 Swift带有参数的构造方法
- 看世界杯!用Swift语言实现播放器
- 安卓学习笔记---实现简易播放器(带有进度条,开始与结束时间,暂停与播放)
- 用SurfaceView,Timer以及Handler实现的一个带有音乐和文字的电子相册,可以自动播放~
- 草稿——swift的简单学习 -- 音乐播放器
- ALSong-带有高级音效的漂亮音乐播放器(类似千千静听)
- ALShow-带有漂亮皮肤的免费视频播放器(简约、华丽)
- 如何使用ListView实现一个带有网络请求,解析,分页,缓存的公共的List页面来大大的提高工作效率
- Swift如何实现音乐播放,后台播放及控制。
- iOS开发 - Swift实现清除缓存功能
- 12.2 Swift带有缺省值的隐式构造方法
- Android编写邮箱之正则表达式
- 加载动态库失败,返回126错误码
- JS下打印三角形(其实和C语言一样的套路)
- Docker镜像简介
- arm-linux驱动:hello
- Swift实现带有缓存的播放器
- du 使用详解 查看一级目录大小
- Cache的替换策略
- hdu 2489 Minimal Ratio Tree【Dfs+kruskal】
- hdu 2824 The Euler function(欧拉函数)
- onActivityResult的各种"坑"
- Android开发中获取crash信息
- window 上操作 linux 系统 3 ----CURL
- Linux安装NS3