iOS开发 简单实现视频音频的边下边播 (转)

1、ios视频音频边缓存边播放,缓存时可以在已下载的部分拖拽进度条。

3、无论是下载到一半退出还是下载完退出,已缓存的数据都存到自己指定的一个路径。如果已下载完,下次播放时可以不再走网络,直接播放本地文件。

(具体效果看唱吧4.1版本以后的视频效果吧)

用到的几个类:

2、MPMoviePlayerController

实现步骤:

2、在本地开一个http server,拼一个本地地址(http://127.0.0.1:xxxx/xxx.mp4),丢给MPMoviePlayerController播放。

只是有一点需要自己实现:当httpserver接受到MPMoviePlayerController的请求时,server要先返回一个请求包含了整
个视频文件的大小。然后MPMoviePlayerController才会不断请求本地的服务器取数据。我的实现是这样的。当要比方某个视频文件的时
候,先开启一个request去下载,当收到文件总大小的时候,存到本地的一个dictionary中,request继续下载,然后打开
localserver,拼一个本地url给player,让他自动播放。当localserver收到请求时,根据要请求的文件去本地读文件的实际大
小,返回给player,然后player就可以播放了。

HTTPServer自己已经实现了断点下载的逻辑,你可以给他设置一个DocumentRoot,进来的文件请求会直接到这个目录下读文件的数据,他默
认的实现获得文件总大小的逻辑是直接用NSFileManager去取文件的总大小,而这里我们需要去自己存到本地的dictionary中读。

大约思路就是这样,不想写太多东西,因为实际自己写的代码真的很少。还是留个思路,真正的实现由大家自己研究,总之实现起来挺简单的,最终效果也很好,大家各种放心就好了。

后面遇到了几个问题小说一下

2、MPMoviePlayerController是直接可以播放mp3的,因为我们还需要播放音频,而且是同一个页面,如果全用
MPMoviePlayerController是最好的,因为不需要切换播放器,虽然看起来有点拙。但后来发现点问题,就是播放音频的时候,有的mp3
不能拖拽,当你更改音频的播放时间的时候,MPMoviePlayerController直接停止了,但有的音频是可以的,最后研究好像是mp3码率或
者格式的问题,因为我们已经有很多mp3了,再替换之前的mp3不太现实,最后的实现就是音频用avplayer播,缓冲进度用
MPMoviePlayerController的,你可以想象代码写的多么脏。。如果大家只做视频或者刚开始做的话,最好把这个问题研究一下,这里我也
没有深究。

如何用MPMoviePlayerController缓存在线视频:

    1. 在iOS本地开启Local Server服务,然后 MPMoviePlayerController请求本地Local Server服务。
    2. 本地Local Server服务再不停的去对应的视频地址获取视频流。
    3. 本地Local Server请求的时候,就可以把视频流缓存在本地。
时间: 2024-07-31 14:25:29

iOS开发 简单实现视频音频的边下边播 (转)的相关文章

iOS开发 简单实现视频音频的边下边播

http://blog.csdn.net/wxw55/article/details/17557295

iOS开发-简单解析JSON数据

什么是JSON ? JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) ? JSON的格式很像OC中的字典和数组 ? {"name" : "Jack", "age" : 10} {"name" : ["jack", "rose", "jim"]} ? 标准JSON格式的注意点: key必须用双

iOS开发:AVPlayer实现流音频边播边存

iOS开发:AVPlayer实现流音频边播边存 概述 1. AVPlayer简介 AVPlayer存在于AVFoundation中,可以播放视频和音频,可以理解为一个随身听 AVPlayer的关联类: AVAsset:一个抽象类,不能直接使用,代表一个要播放的资源.可以理解为一个磁带子类AVURLAsset是根据URL生成的包含媒体信息的资源对象.我们就是要通过这个类的代理实现音频的边播边下的 AVPlayerItem:可以理解为一个装在磁带盒子里的磁带 2. AVPlayer播放原理 给播放器

iOS开发-简单工厂模式

设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.概念很长,iOS开发中最常遇到的有单例模式,观察者模式(KVO),简单工厂模式其实在开发中也非常常见,就是由工厂类根据传入的参数,动态决定应该创建出对应的产品类的实例. 基础概念 举一个生活的例子是我们有各种中字开头的银行卡,我们每天都会消费,消费的时候每个银行卡提示不同的信息,我们可以先抽象出来一个银行卡类: @inter

iOS开发简单高效的数据存储

学习交流讨论请关注新浪微博:极客James 在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题,你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且大家对这个问题的热情持续高涨.本文主要从概念上把"数据存储"这个问题进行剖析,并且结合各自特点和适用场景进行全面抛析.. 一.NSUserDefaults NSUserDefaults被设计用来存储设备和应用的配置信息,它通过一个工厂方法返回默认的.也是最常用到的实例对象.这个对象中储存

iOS开发-简单图片背景替换(实现抠图效果)

之前好奇, 想实现这样的功能   -----> iOS图像处理-(jpg去除白色背景) 把一张图片(.jpg)的白色背景抠掉,转成.png 格式的有alpha通道的透明图. 原图黑白分明, 像这样转换成这样 然后在论坛,得到了想要的答案.这里先谢过那位大牛, 也提供了参考资料:iOS8 Core Image In Swift:更复杂的滤镜 然后今天, 自己也总结一下. 写了个小小的demo, 实现背景图片的切换. 效果如下: 可以看到, 原先的黄色渐变背景被替换掉了.  接下去就是要实现这样一个

iOS开发-简单的图片查看器

现在你只要拿着手机,不管你Android还是iOS,新闻类的App不可避免都有一个功能就是图片查看,做个专题,查看一下内容,App Store中也有专门针对图片浏览的App,鉴于目前所知有限,无法做到那么高大上的App,简单的做个美女查看的Demo.没有太多的功能,上一张,下一张,标签,图片,简简单的,深刻的感觉到知识就是力量,目前知识有限的结果就是Demo简单,且学且珍惜吧. 1.新建项目(如果不会可以参考本人之前的文章),然后在StoryBoard中进行布局,将Girl文件夹中的图片拖入项目

iOS开发---简单地搜索

iOS8之后我们就可以直接运用UISearchController的代理方法进行开发,不用再UIsearch和其他的一下东西了,我就直接给大家上代码吧 UISearchBarDelegate,UISearchResultsUpdating这两个代理方法 viewdidload: self.dataList=[NSMutableArray arrayWithCapacity:100]; for (NSInteger i=0; i<100; i++) { [self.dataList addObje

iOS开发简单的实现后台任务(诸如后台播放音乐,定时器,后台定位等)

最多能运行多长时间,没挑战过极限,具体能保持多长时间需要自己测试下. 注意:用真机测试 直接上代码 在appdelegate的.m中的进入后台时加入一些代码操作即可 /** *  当app进入后台时调用 */ - (void)applicationDidEnterBackground:(UIApplication *)application { /** *  app的状态 *  1.死亡状态:没有打开app *  2.前台运行状态 *  3.后台暂停状态:停止一切动画.定时器.多媒体.联网操作,