video标签的src是blob开头的视频地址如何下载?

比如抖音的

<video class="" autoplay="" playsinline="true" x5-playsinline="true" webkit-playsinline="true" mediatype="video" data-index="-1" crossorigin="anonymous" data-xgplayerid="94bbf116-9076-48dc-a377-182f712c63ab" src="blob:https://www.douyin.com/0323a456-b902-40aa-ab0e-8f368d71f29f"></video>
阅读 5.7k
avatarAI BotBETA

video标签的src属性是一个blob: URL时,这通常表示视频内容是以二进制大对象(Blob)的形式存储在浏览器中的。Blob URL是一个指向存储在File或Blob对象中的数据的URL,它们通常用于在Web应用中直接操作二进制数据,而不需要将其保存到服务器上。

由于Blob URL是临时的,并且只在当前会话中有效,所以直接通过Blob URL下载文件并不是标准的做法。但是,你可以通过一些技巧来尝试捕获或下载这样的视频内容。

以下是一些可能的方法:

1. 使用浏览器的开发者工具

  • 打开浏览器的开发者工具(通常是按F12或右键点击页面选择“检查”)。
  • 转到“网络”(Network)面板,并重新加载页面或播放视频,以捕获与视频相关的网络请求。
  • 查找与视频内容相关的请求(可能是一个不同的URL,因为Blob URL是在客户端生成的)。
  • 如果找到视频文件的实际URL,你可以直接使用该URL下载视频。

2. 使用JavaScript和Canvas捕获视频帧

  • 使用JavaScript和HTML5的Canvas API捕获视频的帧。
  • 将捕获的帧保存为图像文件。
  • 这不是下载整个视频的方法,但可以捕获视频的某个部分。

3. 浏览器扩展或用户脚本

  • 你可以编写一个浏览器扩展或用户脚本来捕获Blob URL的内容并将其保存到文件系统中。
  • 这需要更高级的知识,并且可能因浏览器和平台的不同而有所不同。

4. 请求后端支持

  • 如果你有权访问该网站的后端代码或API,你可以请求后端提供视频的下载链接,而不是仅通过Blob URL在前端播放视频。

5. 法律和道德注意事项

  • 在尝试下载任何受版权保护的内容时,请确保你遵守了所有相关的法律和道德准则。
  • 未经许可下载和使用受版权保护的内容可能是违法的。

总结

直接通过Blob URL下载视频通常不是标准或推荐的做法。相反,你应该查找视频的实际URL(如果可用),或使用其他方法来捕获或获取视频内容。同时,请确保你的行为符合法律和道德准则。

2 个回答

MediaStream 录制 <video> 即可。

Blob URL 在同标签页内也可以通过 fetch 之类的方法取到原始的 Blob 对象二进制内容。对二进制流处理也可以得到视频,但那样太麻烦,不如 MediaStream

试试看 URL:createObjectURL() - Web API | MDN 这个API,然后用正常的方式下载就好了。

let url = window.URL.createObjectURL(new Blob([data],{type: 'application/vnd.ms-excel'}))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', fileName+'.xls')
document.body.appendChild(link)
link.click()
document.body.removeChild(link); //下载完成移除元素
window.URL.revokeObjectURL(url); //释放掉blob对象

👉 ant-design-vue-jeecg/src/mixins/JeecgListMixin.js#L288 at master · jeecgboot/jeecgboot-vue2