1.采取的方案:服务器将TS(AAC音频处理流程一样,后面不赘述)文件片段存储到指定的路径下,当客户端请求某一时间段的回看节目时,服务器取出相对应的TS,打包这些TS片段生成.M3U8索引文件和播放链接,返回给客户端,这是客户端拿到的播放链接和直播的链接是一样的,播放的处理流程也是一样的,只不过这时的直播只能播放一段时间.调整进度的方案,根据客户端的时间戳向服务器获取相应的TS片段
2.iOS端实现的思路:(解码m3u8->读取m3u8里面配置文件的信息->下载ts文件->启动本地服务->播放ts文件)
a. 解码m3u8:拿到播放链接,读取M3U8索引文件,解析出每一个TS文件的下载地址和时长,封装到Model中,供后面使用
b.遍历M3U8模型拿到每一个TS的链接就可以下载了(此处下载我们是基于阿里OSS,所以此处并非直接从后台下载而是到阿里的OSS服务器上去下载),下载后缓存到本地。
PS:这里获取到的M3U8数据包含了很多TS文件,并不会在下载器里直接下载,而是要对每一个TS文件再次封装,然后每一个封装好的数据模型单独下载(使用AFNetworking或者YTKNetwork均可)
- 播放:使用HLS直播播放技术,模拟服务器和客户端的交互的过程.即使用CocoaHTTPServer创建本地服务来播放。注意:给服务器设置路径的时候,一定要注意和缓存TS数据的路径一致.
网友评论