0. 网页视频播放器的演进
随着浏览器的逐步迭代,网页播放视频方案也一直不断演进。从早期的MediaPlayer到Flash,再到video标签,我们可以更方便的在网页中播放视频。
1. HLS协议
在浏览器中,HLS协议的video标签是没有保存功能的(源码地址)。所以不能直接在浏览器中下载媒体文件,但是仅仅这一点是不够的,用户可以方便的拿到云存储上的视频地址,下载到本地即可以播放。所以HLS又提供了一套视频流加密的方案,这样云存储中存放的视频流也是加密的,由浏览器负责一边进行解密一边播放。
M3U8作为HLS协议的载体,也是我们后续分析的主要对象。详细的M3U8文件格式的介绍网上有很多,可以参照文档m3u8文件格式详解
下面列出一段未加密的样例传送门
没有加密的M3U8视频流
可以使用ffmpeg工具将视频保存到本地
ffmpeg -protocol_whitelist crypto,file,tcp,http,https,tls -i "https://node.imgio.in/demo/birds.m3u8" -c copy -copyts "birds.ts"
含有加密KEY的样例传送门