blob / MSE 视频
页面上写 blob:https://… 的视频,地址只在当前页面内存里有效,脱离页面就是空的。所以要么在页面里取字节,要么边播边录。
为什么不能直接下
MSE(Media Source Extensions)把视频分片喂给播放器,播放器用一个内存里的 blob: 地址对外表示这路流。这个地址不对应任何服务器资源:换个标签页打开就是空白,用下载工具请求也拿不到内容。
| 地址形态 | 本质 | 能否直接请求 |
|---|---|---|
https://…/video.mp4 | 服务器上的真实文件 | 能 |
https://…/index.m3u8 | 分片清单 | 能 |
blob:https://…/uuid | 页面内存里的流 | 不能 |
两条可行路径
路径一:页面内取字节(直存)
扩展在页面上下文里读取播放器已经拿到的分片数据,拼成完整文件后交给下载。适用于:分片未加密、页面允许读取、流不太长。
路径二:录制(边播边取)
像录屏一样按时间抓取分片,停止时收尾成文件。适用于:直播、加密分片、超长内容。代价是必须让页面一直播着,中途中断可能得到残缺文件。
| 直存 | 录制 | |
|---|---|---|
| 需要播放吗 | 需要在页面里加载过 | 必须持续播放 |
| 输出完整度 | 高(分片齐全) | 取决于是否中途中断 |
| 速度 | 快,接近本地复制 | 与播放时长一致 |
| 适用 | 点播、短视频 | 直播、加密、超长 |
操作步骤
- 打开页面并点播放让播放器真正开始拉流;不播放就没有分片可抓。
- 打开扩展面板,点右上角刷新弹窗会提示「先播放页面上的视频,再点右上角刷新」。
- 在列表里找到 blob 那条类型显示为 blob / MSE,大小可能为空。
- 选直存或录制短内容优先直存;直播或超长走录制。
- 等它完成直存会在面板里显示进度;录制需要你手动停止才收尾。
DRM 一律不行
带 Widevine / PlayReady 等保护的内容,取到的分片是加密的,直存与录制都无法产出可播放文件。我们不做解密,也不提供相关教程。
常见失败
列里有 blob,但下载按钮点了没反应
该流的媒体对象不允许页面读取。改用录制。
直存出来的文件没有声音
音频在另一条 blob 里。先确认播放器是否把音频分离;必要时改用录制,它抓的是合成后的输出。
录制到一半卡住
页面切了码率或网络断了。降低画质再试,保持页面在前台。
文件能播但时长显示 0:00
收尾没写完。用「停止」结束,别直接关标签页。
为什么不能做得像普通下载一样
因为源数据不在服务器上,浏览器也不允许随便读别人的内存流。这是平台限制,不是实现偷懒。