Blob URL Video:为什么视频不能右键另存为?
blob 视频地址可能指向浏览器的播放对象,而不是完整文件。了解另存为选项缺失的原因,以及官方离线功能与收藏网页的区别。

遇到 blob URL video(blob 地址的视频)时,画面明明正常播放,右键却没有“视频另存为”,或者保存结果无法使用。原因在于:blob: 开头的地址是浏览器管理的对象引用,不是普通的服务器文件链接。对于流媒体播放器,它可能指向正在运作的播放源,而不是一份等待下载的完整视频。
要点速览
blob:地址引用浏览器管理的对象,复制这个地址并不能得到可分享的视频链接。- 完整的
Blob对象可以用于文件下载;流媒体使用的MediaSource则是另一种对象,不能只看地址前缀就下结论。 - Media Source Extensions(媒体源扩展,MSE)让 JavaScript 持续提供媒体片段,视频元素的地址不必对应一个完整文件。
- 没有右键另存为选项,不等于存在 DRM。需要离线观看时优先查官方功能;只是想下次再看,就收藏原网页。
blob URL 是什么?
网页可以调用 URL.createObjectURL() 创建对象地址。浏览器把地址关联到一个对象:它可能是包含文件数据的 Blob,也可能是供播放器使用的 MediaSource。MDN 的 createObjectURL 文档列出了这两类参数。
可以把它理解成浏览器认识的对象编号。网页可以用 URL.revokeObjectURL() 撤销这个地址,因此它不适合作为长期收藏。把 blob: 改成 https:,或在末尾加上 .mp4,都不会凭空产生服务器上的下载文件。
这里也有一个容易被忽略的例外:网站可以先生成完整的 Blob,再用对象地址提供下载。预览用户在本地选择的视频时,也可能出现这种地址。因此,“blob 视频一律不能保存”并不准确。地址前缀说明的是引用方式,不能单独证明引用的是完整文件还是流媒体播放源。
MSE 如何把片段送入播放器
使用流媒体 MediaSource 时,网页脚本把数据交给 SourceBuffer 对象,再由浏览器解码播放。MDN 的 Media Source Extensions 概述说明了这种由脚本管理媒体源、代替单一媒体地址的方式。
HLS 或 DASH 播放器可以通过这一层把陆续到达的分片送入播放流程。清单和媒体请求负责内容的交付;blob: 地址负责把播放对象接到视频元素上。两者承担不同的工作,MSE 本身既不是播放列表格式,也不是下载服务。
W3C 的 Media Source Extensions 工作草案描述了源缓冲区及其中的音频、视频和文本轨道。声音和画面可能分别传入,播放时再呈现为同一段内容。缓冲机制还包括移除旧数据,因此,完整看完一次,不代表浏览器里就留下了一份可导出的完整视频。
为什么没有“视频另存为”?
对于 MSE 播放源,视频元素的地址对应的是播放流程,浏览器常规的保存操作未必能从中取得一个完整资源。网页自定义的播放器界面,也可能影响右键菜单。仅凭菜单缺少某一项,无法判断内容是否加密,更无法判断平台是否允许离线保存。
不妨比较两种情况:页面提供“下载原文件”按钮,或者页面只有“播放”按钮。前者应走平台说明的下载入口;后者即使播放流畅,也不代表一定存在可下载的原文件。反复复制同一个对象地址,解决不了这两种情况的差别。
下载 blob 视频:选择授权保存方式
先看实际需求,再决定下一步:
- 需要用于剪辑或归档的文件。 查找平台允许的下载或导出入口。如果是自己上传的作品,检查创作者后台;否则向内容所有者索取原文件。
- 只是希望断网后继续看。 查看官方离线功能及其使用条件。应用内的离线副本未必是能移到剪辑软件中的普通文件。
- 只是想下次找到它。 收藏正常的网页地址。不要把
blob:地址当作收藏条目或分享链接。
受 DRM 保护的播放可能涉及 Encrypted Media Extensions(加密媒体扩展,EME),它与 MSE 是不同的机制。blob: 前缀既不能证明存在加密,也不能证明没有加密。保存这个地址无法把受保护的内容变成不受限制的文件,也不应尝试绕过保护;离线访问应使用官方授权功能。
整理以后还想访问的页面时,VidMost 的侧边栏和链接库把收藏的页面集中在一处。可以到 VidMost 首页了解侧边栏和链接库,并把正常的网页链接与另行获得授权的视频文件分别保存。