TS型网页视频下载方法——以SEP系统为例

网络课堂在线观看比较麻烦,视频质量也不理想,于是想分享一下视频的下载方法。

判断文件类型

使用Chrome浏览器打开视频网页,F12打开调试页面,点击Network,将所有文件按Size递减排序,观察头部头部的几个文件,大概率为视频文件。观察这些文件的后缀,如果是.mp4文件,直接双击下载,大功告成;如果是多个.ts文件,就要使用下文的方法下载。(小视频可能可以直接下载mp4,大部分遇到的还是ts文件,如果没有看到上述视频文件,F5刷新,多试几次)

首先单击任意.ts文件,得到此.ts文件的下载地址,储存留用。

获取.m3u8,.key和.ts文件

M3U文件是一种纯文本文件,可以指定一个或多个多媒体文件的位置,其文件扩展名是“M3U”或者“m3u”。

M3U8是Unicode版本的M3U,用UTF-8编码。"M3U"和"M3U8"文件都是苹果公司使用的HTTP Live Streaming格式的基础,这种格式可以在iPhone和Macbook等设备播放。

SEP平台的视频大多为有加密的m3u8视频,我们能从m3u8的中获取到密码和视频的信息,也即.key和.ts文件,有了这些信息,我们就能把它们合并成mp4格式等易于本地观看的文件。

在调试页面Ctrl + F,键入m3u8查找并下载.m3u8文件(若找不到可F5刷新多试几次)。

打开此.m3u8文件,发现其给出了.key文件的下载地址,并列出了所有的.ts文件的名称。首先下载.key文件至.m3u8文件同一目录下,并将URL改为此.key的名称(与删去URL前半部分等效),记录.ts文件的始末序号,便于批量下载这些文件。

打开BitComet,Ctrl + B批量添加URL,在"第一个URL"和"最后一个URL"中键入之前获得的任意.ts文件的下载地址,分别更改其序号为.m3u8文件中的.ts文件始末序号,添加任务并下载至.m3u8和.key文件同一目录下。

至此,我们已经准备好了密码和所有的视频分段。 # 合并.ts文件

使用FFmpeg合并.ts文件。打开Powershell(cmd应该也可以),运行

1
ffmpeg -allowed_extensions ALL -i 202009152201161342431playlist.m3u8 -c copy new.mp4

其中202009152201161342431playlist.m3u8应替换为目标.m3u8文件,new.mp4为合并得到的新文件名称。

小结

加密的m3u8视频可使用FFmpeg合并,合并方式需要根据.m3u8文件的内容判断。SEP系统中.m3u8文件中的.ts文件路径全为相对路径,以我的能力只能把这些文件先下下来再合并,过程比较繁琐,如果有更简便的方式欢迎大家留言交流。

参考资料

  • https://zh.wikipedia.org/zh-cn/M3U
  • https://www.cnblogs.com/f-ck-need-u/p/9033988.html