M3U8流视频数据爬虫详解一:M3U8视频文件详解

M3U8流视频数据爬虫详解一:M3U8视频文件详解

  • HTTP Live Streaming(HLS)的优势
  • M3U8文件说明
    • M3U文件
    • M3U8文件
    • 顶级M3U8文件与二级M3U8文件
    • M3U8文件样例说明
    • EXT-X-KEY中的密钥文件
    • TS文件

HTTP Live Streaming(HLS)的优势

在开始深入讲解爬取即使之前,让我们先了解一下为什么现在HLS技术应用会这么广。首先,HLS技术比传统的流媒体技术,例如RTSP协议(流媒体协议有三种:RTMP,RTSP和http live streaming)的好处在于,一旦切分完成,之后的分发过程完全不需要额外使用任何专门软件,普通的Web 络服务器即可,这样就降低了对服务器的技术要求。而且对于大量使用的CDN服务,大大降低了CDN边缘服务器的配置要求,可以使用任何现成的CDN。
对于非实时视频,如果要在长视频中跳转,使用单个MP4格式的视频文件,并且用HTTP协议,那么需要代理服务器支持HTTP range request以获取大文件中的一部分。并非所有的代理服务器都对此有良好的支持。而HTTP Live Streaming则只需要根据列表文件中的时间轴找出对应的TS片段下载即可,不需要HTTP range request,对代理服务器的要求小很多,因为所有的代理服务器都支持小文件的高效缓存。
另外,用TS做流媒体封装还有一个好处,就是不需要加载索引再播放,大大减少了首次载人的延迟,提升了用户体验。
此外,HTTP Live Streaming的最大优势为自适应码率流播。客户端会根据 络状况自动选择不同码率的视频流,条件允许的情况下使用高码率, 络繁忙时使用低码率,并且自动在二者间随意切换。这对移动设备 络状况不稳定的情况下保障流畅播放非常有帮助。

M3U8文件说明

如果想要开发M3U8视频爬虫,首先要对M3U8的数据结构和字段定义非常了解。M3U8是一个扩展文件格式,由M3U扩展而来。

M3U文件

每输入一首歌后,回车另起一行,输入所有的歌曲路径后,将文件另存为。注意,保存时文件类型选“”。
保存完毕后,一个播放列表就完成了。可用Winamp软件打开此类型文件来验证此文件。我将music. m3u拖入Winamp软件后,可以得到如图所示的包含5个音频文件的播放列表,双击列表即可享受音乐了!

EXT-X-KEY中的密钥文件

对于大多数的M3U8视频,一般是不加密的。对于一些重要的视频服务商,他们会对其视频做加密处理。M3U8视频目前的标准加密方式是使用AES-128进行加密处理。如果视频是加密的,就会在M3U8文件中出现以下信息:

其中METHOD为加密方法,标准是AES-128(其它的类型还没有遇见过)。Key是密钥文件的下载地址(密钥为16字节文件,需要下载)。IV是加密向量(16个字节的16进制数)。可以说Key和IV是AES的必要信息,这里我们就不用深入讲解。后面的教学代码中会教会大家如何使用AES对称加密方法进行加密和解密(Key和IV作为参数直接调用就可以了)。如果文件中没有包含#EXT-X-KEY,则媒体文件将不会被加密。
128位AES在加密和解密的时候需要提供一个相同的16字节的初始化向量(IV),变换IV可以提高密钥的健壮性。如果EXT-X-KEY标签有IV属性,在使用密钥加密或者解密的时候必须使用此属性值作为IV。这个值必须被解释为128位的16进制数,而且必须有前缀0x。如果EXT-X-KEY标签没有IV属性,在加密或者解密媒体文件的时候必须使用序列 作为IV值。

TS文件

ts是一种视频封装格式,全称为MPEG2-TS。ts即”Transport Stream”的缩写。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码。那么在M3U8中为什么用ts文件而不用mp4文件呢是因为两个ts片段可以无缝衔接,播放器能连续播放,而mp4文件由于编码方式的原因,两段mp4不能无缝衔接,播放器连续播放两个mp4文件会出现破音和画面间断,影响用户体验。
因此,我们可以这样理解:M3U文件只是音频视频文件ts路径的封装或者容器,真正播放的是M3U8解析下载到本地的一段又一段的ts音频视频文件。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月20日
下一篇 2019年5月20日

相关推荐