需要用到的工具(有能力达到后面的目的的话,也可以换成其他的):

  • Firefox浏览器 :用来获取m3u8地址
  • PotPlayer:用来播放m3u8地址、加速检查下载的视频
  • FFmpeg:用来下载、截取视频流
  • 记事本:用来编辑FFmpeg命令

以上提供的都是Windows 64位版的官方下载链接,32位和其他系统可以去官网找。

获取HLS视频流的m3u8索引地址

首先,下载安装Firefox浏览器打开,安装上The Stream Detector浏览器扩展。

FFmpeg下载&无损截取HLS视频流

当检测到网页请求m3u8地址时,扩展图标????会进行计数,桌面右下角会弹出提醒。

此时右键扩展图标⇒The Stream Detector,可以看到检测到的链接地址,点击地址即可复制到剪贴板。

左键点击扩展图标会将记录的地址清空。

FFmpeg下载&无损截取HLS视频流

打开某网站视频播放页,先切换到目标清晰度之外的画质,左键点击扩展图标清空记录。

然后切换到目标画质,此时扩展图标应该会计数,右键图标,点击前面是[M3U8]的地址复制链接到剪贴板。

(复制有可能失败,要注意右下角的提醒,失败了就多点几次试试。)

这时可以打开PotPlayer按CTRL+V来播放剪贴板里的链接,确认目标视频和清晰度是正常的,把链接粘贴备份到记事本里就可以进行下一步了。

(记事本可以勾上格式自动换行,以防链接过长不好编辑。)

FFmpeg抓取HLS视频流

下载解压FFmpeg,放到任何方便的位置就行。

进入bin目录,在路径栏输入cmd然后在当前目录打开命令提示符。

在命令提示符里输入ffmpeg,确认ffmpeg可以正常运行。

(建议在命令提示符标题栏上右键属性,把编辑选项下的快速编辑模式前的√去掉。)

FFmpeg下载&无损截取HLS视频流

下载完整视频流

复制下面这条命令到记事本,把要下载的链接替换成之前得到的m3u8链接。

输出文件名如果不带路径默认就和ffmpeg.exe同在bin目录下。

输出容器格式由源视频流决定,某网站可以用mp4,mkv、ts等也可以试试。

ffmpeg -i "要下载的链接" -c copy "输出文件名.输出容器格式" 

-i是输入选项其后是输入文件的地址;

-c是输出文件的编码选项,此处值为copy即为复制原视频音频流,避免转码损失画质;

最后是输出文件名,后缀决定了视频容器格式。

例:

ffmpeg -i "http://xxx/.../xxx.m3u8?xxx..." -c copy "test.mp4" 

然后将改好的命令选中复制,在命令提示符里右键粘贴执行即可开始下载。

FFmpeg下载&无损截取HLS视频流

下载好之后可以用PotPlayer打开来查看视频是否正常,ZXC键分别是正常速度、减速、加速播放。

如果视频很长或很大可能需要些时间下载,在下载中途按一次CTRL+C并稍等片刻即可中止,已下好的片段能正常播放但想要完整的视频仍需从头开始下,这可以用来测试下载是否正常。

如果输入文件名与已有文件重复会提示是否覆盖,此时输入y为确认,输入其他则会取消。

如果下载的视频播放出现画面停顿等异常,可以尝试在-i前加上-re选项,但下载时间将不会小于视频播放时间。

ffmpeg -re -i "http://xxx/.../xxx.m3u8?xxx..." -c copy "test.mp4" 

无损截取部分视频流

待更新

相关文章: