下载网页中blob格式视频的方法
之所以称这类视频为blob格式的格式,是因为视频在一个 <video>
标签中,类似于这样:
<video preload="preload" autoplay="autoplay" src="blob:https://player.bilibili.com/afa68414-faa3-496f-a560-94b2ac1d5928" style="width: 100%; height: 100%;"></video>
话不多说,有2种方法。
1 linux中youtube-dl
命令下载
首先我参考了这篇文章:https://blog.csdn.net/weixin_42875245/article/details/109097082
其中,其他方法都无效,就 youtube-dl
这个方法有效。github地址:https://github.com/ytdl-org/youtube-dl/blob/master/README.md#readme
但是其中也有一个坑,我填平了。
下载方法:
# 下载该文件即可使用,不用安装
sudo wget -c https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
# 给下载下来的youtube-dl 文件 追加 读和执行的权限
sudo chmod a+rx /usr/local/bin/youtube-dl
# 真正的下载一个blob格式视频
# (注意:下面的链接是我随便写的例子,无法使用,只是一个这种类型链接的格式,大家一定要在网页源代码中找到这种格式的链接)
youtube-dl -o fileName1 https://www.bilibili.com/20211019/adsfjsdf/test.m3u8 # -o参数自定义下载的文件名称
# 此时有一个坑,报错内容为:ERROR: m3u8 download detected but ffmpeg or avconv could not be found. Please install one.
# 需要安装 ffmpeg 或 avconv,安装命令如下:
sudo apt-get install -y ffmpeg
# 之后继续执行youtube-dl命令即可成功下载
优点:使用相对简单,谁都能会用。
缺点:1 需要在linux命令行环境下使用(windows的git-bash应该也可以安装该命令使用,不过我没试过,我的电脑直接就是Ubuntu系统);2 下载速度比较慢;3 中途可能会断开,然后就会卡住,然后需要重新下载。
2 使用java代码
-- 2022-03-19
打开视频所在网页,按 F12 打开 开发人员工具,然后打开“网络”选项卡,找到 .m3u8
请求(一般是 index.m3u8
),然后复制其链接地址:
复制出来的链接地址示例如下:https://ukzy.ukubf3.com/20220207/eGqwvbNY/index.m3u8
然后把这个链接地址放到下面的Java类中(具体放在哪里,你一看代码就知道了):
https://gitee.com/mediocrep/javaUtils/blob/master/src/main/java/com/util/m3u8/main/M3u8Main.java
然后就直接运行main方法即可下载。
这种方法的下载速度只要1分钟左右,比第一种方法快了十几20倍,如果会Java的小伙伴们强烈建议用第二种方法,不会的话就用第一种方法。
我打算再优化下这个代码,使他能够循环遍历多个网页的内容,自动寻找网页中的 .m3u8链接,然后下载。优化好了会在这里更新。
注:我的代码也不是自己写的,是参考这个链接:https://blog.csdn.net/qq494257084/article/details/103551293 。 在这个链接的代码的基础上做了优化。
-- 20220320
代码已经优化,从 单次下载m3u8视频 优化为 一次下载多个m3u8视频。