流媒体(m3u8)的下载

项目中需要将网上的视频缓存在本地进行观看,而视频文件是M3U8格式的视频文件。因此需要学习一下如何实现此项需求。

M3U8简介

首先我们需要了解几个概念:

  1. M3U: 本质上是音频文件的列表,纯文本格式。播放软件根据它的记录找到网络地址进行在线播放
  2. M3U8: 是M3U中的一种,编码格式为UTF-8格式
  3. TS片段:Apple 为了提高流播效率开发的技术,将流媒体切分成若干TS片段,然后通过一个m3u列表文件将这些TS片段集中起来供客户端播放器播放
  4. HLS:HTTP Live Streaming是Apple的动态码率自适应技术。包括一个m3u8索引文件,TS媒体分片文件和key加密串文件。

HLS的优势:自适应码率流播。就是客户端会根据网络状况自动选择不同码率的视频流,条件允许的情况下使用高码率,网络繁忙的时候使用低码率,并且自动在二者间随意切换。

TS文件选择原因:因为两个 TS 片段可以无缝拼接,播放器能连续播放。


实现方案

实现过程如下图所示:
M3U8文件下载播放过程

  • 解析M3U8文件内容:w

    我们获取到M3U8的链接地址,获取到文件内容。大致如下:
    M3U8文件内容

    我们需要从中获取到每一个ts文件的下载链接和播放时长。

  • 下载所有的ts文件

    获取到了ts文件的下载地址,我们需要根据地址依次下载ts文件至指定的文件中。这部分可以使用Alarmofire的大文件下载实现。

  • 生成M3U8文件

    下载完成所有的ts文件后我们需要生成M3U8文件,播放器可以根据M3U8文件中的链接地址播放ts文件

  • 开启本地server服务

    当我们下载完成M3u8文件和所有的ts文件后如何播放?使用HLS直播播放技术,模拟服务器和客户端的交互的过程。所以我们在本地建立一个http服务器,让HLS访问本地的http服务器就可以播放了。

根据上述流程生成以下文件生成管理下载过程:

具体流程实现方案

猜你喜欢

转载自blog.csdn.net/m0_38055718/article/details/79317162