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请求的时候,就可以把视频流缓存在本地。

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

  1. iOS开发笔记,简单实现视频音频的边下边播

    总是在网上看别人的博文,受益匪浅,从没自己写过,今天分享一点小经验,第一次写技术博客,希望对同行的ios猿们有所帮助.   先介绍一下自己的情况:一年ios开发,http协议不太懂,大约知道断点下载h ...

  2. iOS开发-简单工厂模式

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.概念很长,iOS开发中最常 ...

  3. iOS开发简单介绍

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的iOS程序.但是这里我想强调一下,前面的 ...

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

    1. AVPlayer简介 AVPlayer存在于AVFoundation中,可以播放视频和音频,可以理解为一个随身听 AVPlayer的关联类: AVAsset:一个抽象类,不能直接使用,代表一个要 ...

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

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题,你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且大家对这个问题的热情持续高涨.本文主要从概 ...

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

    现在你只要拿着手机,不管你Android还是iOS,新闻类的App不可避免都有一个功能就是图片查看,做个专题,查看一下内容,App Store中也有专门针对图片浏览的App,鉴于目前所知有限,无法做到 ...

  7. iOS开发-简单解析JSON数据

    什么是JSON   JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组   {“nam ...

  8. iOS开发-简单抽奖

    路过商场,看过抽奖感觉挺有意思的,商场进行抽奖活动,三个奖项,一等奖的概率1/10,二等奖的概率的3/10,三等奖的概率是6/10,具体奖品我没仔细看,回来随便练手了一下,思考了一下,奖品分为10份, ...

  9. iOS开发-简单的循环结构分析

    1.while循环 while (循环条件) {         循环体: } // 1.定义循环变量 ; // 2.循环条件 ) { // 3.循环体 printf("%d\n" ...

随机推荐

  1. Oracle 12c报错:ORA-01078和LRM-00109的解决办法

    Oracle 12c报错:ORA-01078和LRM-00109的解决办法 2017-12-17 10:25:30 lemon_love1 阅读数 4336  收藏 更多 分类专栏: oracle   ...

  2. HTTP相关知识总结

    HTTP协议特点 支持客户端/服务器模式 简单快速 灵活.允许传输任意类型的数据对象 限制每次连接只处理一个请求(http最初设计思想,现在为了提升传输效率,一次请求完成后不会立即断开连接) 无连接: ...

  3. 6.3 使用Spark SQL读写数据库

    Spark SQL可以支持Parquet.JSON.Hive等数据源,并且可以通过JDBC连接外部数据源 一.通过JDBC连接数据库 1.准备工作 ubuntu安装mysql教程 在Linux中启动M ...

  4. Vue 中的 子组件 给 父组件 传值

    子组件的某一个事件(sendData)内部,通过this.$emit('事件名', 传递的值)传递数据父组件在调用子组件的地方,绑定了子组件自定义的 事件名(change-data) 定义父组件的地方 ...

  5. 计算机体系结构:量化研究方法(中文第五版)_扫描版_23.5M.pdf

  6. thinkphp的运行

    打开cmd切换到www目录下运行think E:\wamp64\www>php think run ThinkPHP Development server is started On <h ...

  7. c#数组没有Remove方法,转换为list,再使用Remove方法(例如数组 a,b,c 去除b 只剩a c)

    c#数组没有Remove方法,转换为list再移除,因为list自带Remove方法 string   aaa=a,b,c; var array=aaa.Split(',');//   数组 List ...

  8. hdu 6465 线性变换高斯消元

    http://acm.hdu.edu.cn/showproblem.php?pid=6465 题意 给你三个点,再给你经过线性变换后的三个点,然后q次询问,给你一个点,需要你输出线性变换后的点 题解 ...

  9. Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) F. Tree Factory 构造题

    F. Tree Factory Bytelandian Tree Factory produces trees for all kinds of industrial applications. Yo ...

  10. redis命令之 ----key(键)

    DEL DEL key [key ...] 删除给定的一个或多个 key . 不存在的 key 会被忽略. DUMP DUMP key 序列化给定 key ,并返回被序列化的值,使用 RESTORE  ...