视频网站HLS技术分析与本地下载实践

视频网站HLS技术分析与本地下载实践

HLS技术介绍

现在的视频网站为了提升视频加载速度的同时节省带宽资源都采用HLS技术,网站后台把视频做成小的视频切片,这些切片记录在m3u8文件里面。每个切片都是一个ts文件,每个ts文件可以几百KB直接播放大概10s左右,浏览器播放的同时请求每个ts文件。视频网站小广告特别多,如果我们能把这些ts文件下载到本地直接本地播放。

视频网站HLS技术交互过程

当我们在网页上点击视频播放时,此时利用浏览器开发者工具Network分析发现,每个1s左右浏览器就会向服务器发起请求获取ts文件,如果某个ts文件获取超时视频就会卡顿。

浏览器开发者工具分析网站请求

初步推测这些以25开头的文件就是分片文件,在浏览器的请求链接中我们找到了m3u8文件,是一个播放列表里面记录了分片文件信息。网页上播放下载的ts文件,浏览器继续向后台请求下一个ts文件。

m3u8文件内容分析

HLS协议视频在Mac上播放方法

采用HLS协议传输的视频,可以直接在macbook和iphone上播放,macbook上可以通过QuickTime play进行播放。我们将m3u8文件链接地址添加到播放器里面,就可以直接播放视频内容。(亲测斗鱼视频、部分美剧网站有用)

利用QuickTime play播放斗鱼视频内容

HLS协议视频本地下载方法

根据m3u8文件地址通过ffmpeg下载,并转换成mp4文件保存本地进行播放,首先需要安装ffmpeg,具体安装教程可后台咨询。

利用ffmpeg下载m3u8文件,命令与参数讲解。

  • ffmpeg -i https://host/index.m3u8 -c copy moguo.mp4
  • -i 指定m3u8文件地址,支持http、https路径
  • -c copy 将ts文件合并成指定文件格式,例如mp4
利用ffmpeg下载hls格式视频到本地

等待文件下载完毕,就可以在本地播放视频。这种下载方法对于每个分片都认为是一个单独的文件需要走http握手流程,自然下载速度没有直接下载文件快。

实践总结

现在的美剧视频网站资源有限直接在线播放卡顿明显,我们可以通过分析播放网页的交互协议,找到工具自己动手。如果是m3u8格式就可以利用mmpeg或者其它类似工具将资源下载到本地。如果视频文件是mp4格式,那么就可以直接wget。对于采用HLS技术并且对ts分片进行的网站,本次实践方法可能无效将在后续实践中验证。

发表评论

邮箱地址不会被公开。 必填项已用*标注