转
直接切入主题,要实现的功能是:
1、ios视频音频边缓存边播放,缓存时可以在已下载的部分拖拽进度条。
2、缓存到一半退出,再次播放同一地址的视频时,视频继续下载,并且缓存进度已经走到上一次下载的位置。
3、无论是下载到一半退出还是下载完退出,已缓存的数据都存到自己指定的一个路径。如果已下载完,下次播放时可以不再走网络,直接播放本地文件。
4、一个有总时间,缓冲进度,播放进度的sliderbar。
(具体效果看唱吧4.1版本以后的视频效果吧)
用到的几个类:
1、ASIHttpRequest
2、MPMoviePlayerController
3、HTTPServer(https://github.com/robbiehanson/CocoaHTTPServer)
灵感来源是这篇文章,http://hi.baidu.com/suifeng_89/item/603cb0b95bb796ff62388e88
实现步骤:
1、先开一个request去下载要播放的视频文件
2、在本地开一个http server,拼一个本地地址(http://127.0.0.1:xxxx/xxx.mp4),丢给MPMoviePlayerController播放。
3、本地的server当收到请求时去那个正在下载的文件中读数据即可。
断点下载全由ASIHttpRequest实现了,缓冲的效果用的是MPMoviePlayerController的,它自带了总时间,已缓冲的总时间,当前时间,整个播放的过程就用MPMoviePlayerController。sliderbar是自己写的,因为iOS自带的不支持缓冲进度,例子:(https://github.com/Zedenem/UICircularSlider),把圆的改成长长的不难吧。。
自己曾尝试过在iOS上用socket server实现本地服务器,各种失败。后来查到MPMoviePlayerController的请求机制是基于http断点下载那一套逻辑的,不像android的socket。HTTPServer已经支持各种断点下载上传。
只是有一点需要自己实现:当httpserver接受到MPMoviePlayerController的请求时,server要先返回一个请求包含了整个视频文件的大小。然后MPMoviePlayerController才会不断请求本地的服务器取数据。