Swift实现带有缓存的播放器
2016-05-16 16:42
218 查看
用到的第三方库:
Alamofire 用于网络请求和视频下载
MobilePlayer 用于播放在线视频
创建Movie类:
创建Movie对象:
播放方法:
一边播放一遍下载,下载成功后会播放本地路径的视频。
清除所有缓存:
这里是用的是Alamofire设置的下载路径,注意删除的路径要和下载的路径一致。
Alamofire 用于网络请求和视频下载
MobilePlayer 用于播放在线视频
创建Movie类:
import Foundation import Alamofire class 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 MobilePlayer func 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) //保留小数点后一位 }
相关文章推荐
- fir.im Weekly - 这是一份强大的 SwiftGuide
- fir.im Weekly - 这是一份强大的 SwiftGuide
- iOS开发——在 OC 项目中使用基于 Swift 的 CocoaPods 库
- Swift开篇001->新建Swift工程
- Swift Name Mangling - Swift语言的名字重整技术
- Swift讲解专题十一——属性
- swift-UILabel
- swift-UIButton
- 【Swift】属性
- [swift学习之十一]协议语法练习
- Swift快速集成下拉刷新和上拉加载更多
- Swift 中的引用类型与值类型
- Swift高阶函数
- 【Swift-Objc】选择排序
- 【Swift-ObjC】冒泡排序
- Swift 中关于”??”操作符
- 【Swift】上传图片-NSURLSession
- Swift 编程语言入门教程
- Swift 学习笔记(四)
- 怎样在Swift中使用CocoaPods