如何下载网页上的直播视频
前言
昨天接到了一个任务,给一个会议录屏。由于笔者的失误,导致环境声音也被录了进去。不过幸好有回放。但是下一个问题又来了。这个回放依然是直播形式的。也就是说,这个视频是由许多个长度只有几秒的小视频组合而成,并不能直接下载。
解决方法
笔者找到了一种可以下载这种视频的方法,亲测有效。其实思路非常简单直接,就是将所有的这些小片段全部下载下来再拼到一起。好,现在思路有了,具体如何实现呢?可以分下面几个步骤。每个步骤的解决方法和实现可能有多种形式,笔者只介绍自己这次用的。
1. 抓取m3u8文件
首先,我们需要先找到这场直播的网页中的m3u8格式的文件。这个文件会首先被发送过来。如果把接下来服务器端传过来的几百上千个ts文件(也就是视频文件)比作书的每一章节,那么这个m3u8文件就是这本书的目录,指示每一章节的位置以及页数。
使用记事本打开后,这个文件的内部结构如下(链接的中间部分已打码):
1 | #EXTM3U |
这些链接就是接下来组成这个视频的每个小片段的ts文件的下载链接。我们将这些链接提取出来,然后放到下载器里批量下载就可以了。
抓包文件和提取链接笔者使用了一个浏览器插件“猫抓”,大家可以自行下载。
批量下载可以使用“迅雷”,多个链接输入进去以后打包为一个任务组,接下来等待就可以了。
2. 合并所有的ts文件
现在我们得到了一个m3u8文件和一大堆ts文件。
那么如何把这堆ts文件合并到一起呢?可以使用一个开源软件“ffmpeg”,功能非常强大。先去它的官网https://ffmpeg.org 下载一个适合你的版本。解压完以后将它的bin目录添加到环境变量path中。
接下来打开命令行,输入ffmpeg -version
看一下是不是安装成功了。出现下图类似的文字就是安装成功。
接下来cd到你放ts文件与m3u8文件的文件夹目录中,这两种文件需要在同一目录下(或者在接下来的命令里写明目录,小白尽量按笔者这个来),执行如下命令:
1 | ffmpeg -i xxx.m3u8 -vcodec copy -acodec copy xxxx.mp4 |
xxx与xxxx分别为你的m3u8文件的名字和输出视频的名字。
注意!你的m3u8文件中如果是链接的形式,需要将前面的链接前缀去掉,改为ts文件的名字。以之前的文件示例为例,需要改成:
1 | #EXTM3U |
如果你看到这个画面,就说明已经成功了~
其他问题
如果视频太大想要切割视频,可以使用格式工厂或者bandicut软件。