最近一直在研究如何下载在线视频,主要是想理清楚各大视频网站都用了那些在线视频技术,以及如何实现的。到目前为止,感觉上HLS仍然是用得最广的在线视频技术。如果要简单的介绍,HLS其实就是使用m3u8格式管理的一系列可根据带宽管理的视频流。一个主m3u8文件中可能包含了若干个不同带宽配置的子视频流,这些视频流也是使用m3u8格式管理的分段TS视频或者分段MP4视频。分段TS视频是HLS原生定义的标准视频格式;分段MP4本来是MPEG-Dash原生定义的标准音视频格式。最后HLS也兼容了分段mp4格式,并且在WWDC 2020的苹果开发者大会的视频中使用这种格式提供HLS在线视频服务,WWDC 2017年的视频使用的还是TS格式的视频流。
所以下载在线视频最终的问题是如何下载TS视频段或者MP4视频段的问题。这个就简单很多也复杂很多。简单讲就是这些视频段都是HTTP或者HTTPS直接可以访问的,因此用普通的HTTP/HTTPS请求就可以完成下载工作。那么难点在哪里呢?下面就列出学习在线视频过程中碰到过的一些问题:
视频链接访问权限控制
虽然TS视频文件和MP4视频段都是可以通过普通的HTTP或者HTTPS访问的。但是仍然可以在URL的访问权限上作文章。例如阿里云大学的视频链接是动态生成的,并且只能访问一次。访问第二次就会显示无效,详情见《M3U8视频网络数据爬虫实现》。另外也可以通过账号登陆的方式简单的保护视频访问链接。
在线视频加密
M3U8最普通的加密方式是AES加密,加密密钥是存在M3U8文件中的。因此最普通的加密也是最容易解决的。但是有很多在线视频网站对于AES的密钥进行了加密,这种就比较麻烦。首先要破解AES的密钥,然后才能通过密钥解密下载好的在线视频文件。关于加密解密的内容也在《M3U8视频网络数据爬虫实现》有所涉及。
总之,当前的在线视频主要采用HLS技术,而HLS技术的本质是以m3u8管理的视频分段为基础。无论是TS视频格式,还是分段MP4的视频格式,都是可以有办法处理的。有兴趣的朋友可以继续阅读本站中M3U8相关的文章。
扫码联系船长