zoukankan      html  css  js  c++  java
  • 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请求的时候,就可以把视频流缓存在本地。

  • 相关阅读:
    使用 BenchmarkDotnet 测试代码性能
    【UWP】对 Thickness 类型属性进行动画
    【Win10】单元测试中捕获异步方法的指定异常
    【Win10】让 TextBlock 按字符换行
    全国天气预报信息数据 API 功能简介与代码调用实战视频
    5行代码实现微信小程序图片上传与腾讯免费5G存储空间的使用
    获取任意链接文章正文 API 功能简介
    开放数据接口 API 简介与使用场景、调用方法
    程序员如何开始做一个自己的 Side Project?
    VSCode 必装的 10 个高效开发插件
  • 原文地址:https://www.cnblogs.com/keyan1102/p/4518334.html
Copyright © 2011-2022 走看看