如何下载视频网站中video标签中的视频资源以blob:http开头的地址的资源

83 篇文章 3 订阅

一、问题场景

    想下载知乎视频资源,却发现视频链接是这个样子的

blob:https://v.vzuu.com/b6146956-6e52-406d-8909-f3f1b81ae461

当时一脸懵比啊 ~难道blob:https是什么牛逼的新协议?于是进行了一番探索

二、探寻结论

    结论就是blob:https并不是一种协议,而是html5中blob对象在赋给video标签后生成的一串标记,blob对象对象包含的数据,浏览器内部会解析;

在web容器中的页面代码

浏览器访问后的页面代码

这是因为在浏览器中执行了如下js

三、关于资源下载

很多小伙伴查找这个问题,是为了下载视频资源,

资源的真实下载链接可在chrome的调式模式的network中找到,

但有种资源比较特殊,即m3u8格式的资源

这种格式的视频会被分解成很多个小片段,这个链接下载的是一个包含多个小视频(ts格式的视频)的链接集合,这样做的目的是:

1、可以方便切换分辨率(多个ts格式的视频支持无缝流畅播放,MP4不行);

2、可能就是防止下载吧;

使用ffmpeg下载,ffmpeg -i "https://xxxxxx" "out.mp4",将拉流地址和输出地址用英文引号括起来

Blob视频是以分段方式传输的视频,因此无法直接下载。为了下载Blob视频,可以使用Python编写代码来获取视频的源地址,并进行下载。以下是使用Python获取Blob视频地址下载的步骤: 1. 通过网络请求获取Blob视频的URL。可以使用Python的`urllib.request`库发送GET请求,并传入相关的请求头信息。 2. 解析HTML响应,提取视频的URL。可以使用正则表达式从HTML响应提取视频的URL,具体的正则表达式可以根据实际情况进行调整。 3. 使用得到的视频URL进行下载。可以使用Python的`urllib.request.urlretrieve`函数将视频保存到本地。 下面是一段示例代码,展示了如何使用Python下载Blob视频: ```python import urllib.request import re # 获取视频URL def get_video_url(url, headers): # GET方式请求网站 req = urllib.request.Request(url, headers=headers, method="GET") try: # 获取到HTML response = urllib.request.urlopen(req).read().decode('utf-8') except urllib.error.HTTPError as e: print(e) print('\r\n' + url + ' download failed' + '\r\n') # 正则表达式提取视频URL video_url = re.search(r"readyVideoUrl: '(.*)?'", response)[0][16: -1] return video_url # 设置请求头信息 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36' } # Blob视频的URL blob_url = 'blob:http://tclearn.cmbchina.cn/5a8c0e2a-0cd9-4a50-ac4e-aa96fdadc15a' # 获取视频的源地址 video_url = get_video_url(blob_url, headers) # 下载视频 urllib.request.urlretrieve(video_url, 'video.ts') ``` 请注意,以上代码仅为示例,具体的实现可能需要根据实际情况进行调整。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值