iOS根据ts文件路径封装成m3u8文件及m3u8播放

置顶感谢:

https://www.jianshu.com/p/4b15f79cdc33
https://www.jianshu.com/p/75aa645531d2

  首先声明,我对m3u8和ts视频文件和视频播放流媒体相关的知识并不懂。我写这个博客只是为了记录一下我开发中遇到的问题和我的解决思路,如果能帮到你就更好了。

我的需求

  开会时提到,应用中已有直播功能,需要做直播回放。后台初始计划返回ts 文件的完整地址(http://xxxxxxx.ts)列表样式。一头雾水,跳进百度谷歌开始各种查。下面是我查到的我认为有效的信息。

资料查询

  m3u8这个文件可以用你可以下载下来,用txt格式打开看下,基本上文件并不大,打开来看就是一个列表,除去开头的和结尾的一些信息以外,中间部分的意思就是某个ts文件(一般用的都是相对路径)有多久的播放时长,m3u8相当于把这些片段连起来,构成一个完整的视频。

  所以,对于当前项目的需求的话,解决思路就是通过后台提供的ts文件路径表,我在App端创建一个m3u8文件,然后根据m3u8的格式,创建一个字符串写入到m3u8文件中。然后,用播放器去播放本地的m3u8文件。至此,我以为可以,但是并没有播放出来。

尝试方案:

先列出来我的尝试方案:
1.本地创建m3u8文件,文件中写入头尾数据和ts播放列表(相对路径)。 结果:失败(原因:播放器读取这个m3u8 文件之后,根本找不到ts文件,肯定播放失败);
2.本地创建m3u8 文件,文件中写入头尾数据和ts播放列表(完整路径)。结果:失败(具体原因不详);
3.本地创建m3u8 文件,并且把ts文件下载到和m3u8 同一个文件夹下,m3u8 文件中写入头尾数据和ts播放列表(相对路径)。结果:失败(具体原因不详,但是应该和尝试方案2原因类似)。

  大致尝试了以上三种方案,均以失败告终,于是又跳进百度谷歌各种查,发现这篇博客。需要搭载一个本地服务器,我的尝试方案2哥方案3好像就缺少了这个环节。果真,按照这篇博客的介绍,给我的代码稍作改动,视频播放出来了,大功告成。

结论:

  总结:iOS 播放ts文件,需要先根据ts文件名列表生成m3u8文件,(如果m3u8 中放的是ts的相对路径,需要把ts文件下载到和m3u8 同样目录下).在手机本地搭载本地服务,即可播放。方案总结如下:


iOS播放TS文件思路图.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,009评论 3 119
  • 今晚去临淄中学参加少儿春晚的第一次彩排,本来要求是孩子们自己进去的,但是古筝太重,孩子们提不动,40多人...
    开心靖雯阅读 173评论 0 0
  • 一直以来,我不大喜欢母亲。 小时候,她只农忙时在家,平时都在县城里做些小买卖,一年还能见上几面;我读初中的时候,她...
    圆圆2408阅读 489评论 1 1
  • 稼轩墓上草青青, 墨客文人稀此行。 我到坟前同悲怆, 听风尚作铁马鸣。
    山水野客阅读 225评论 0 0
  • 今日阅读P144-154 分享金句 1. 真正有爱的人,绝不会随意指责爱的对象,或与对方发生冲突。他们竭力避免给对...
    Maple_4ad3阅读 192评论 0 0