# 直播延迟捕获器（浏览器扩展）

在你**已登录**的浏览器里捕获正在播放的直播视频流（FLV / HLS），转发给本地延迟播放工具，
实现"任意网页、任意内容"的延迟观看。登录态由你的浏览器提供，工具本身不需要任何账号/密码。

## 支持的流
- ✅ HTTP-FLV（如小红书直播 `live-source-play-hw.xhscdn.com/...flv`）
- ✅ HLS（.m3u8）
- ⚠️ DASH（.mpd）Phase 1 暂未完整支持，后续补充
- ⚠️ DRM 加密流（Widevine 等）见下方说明

## 安装（开发者模式加载）
1. 打开 Chrome / Edge，访问 `chrome://extensions`（Edge 为 `edge://extensions`）
2. 右上角打开**开发者模式**
3. 点**加载已解压的扩展程序**，选择本目录（`extension/`）
4. 固定扩展到工具栏方便使用

## 使用流程
1. 在浏览器里**登录**目标网站，打开正在播放的直播间
2. 点扩展图标 → 等待列表出现该直播 → 点**开始捕获**
3. 打开本地延迟播放器（`http://localhost:8090`）
4. 切到 **🔌 浏览器捕获** 模式 → 选择刚捕获的源 → 拖**延迟**滑块 → **▶ 播放延迟流**

## 工作原理
```
你的浏览器(已登录, 正在播视频)
   └─ content.js Hook window.fetch，捕获媒体字节
        └─ background.js（WebSocket ws://127.0.0.1:8091/ws/capture）
             └─ 本地 server_portable.py：ffmpeg 转 HLS + 延迟重排
                  └─ 播放器页面加载 /hls/<id>/delayed_<秒>.m3u8
```

## 限制说明（务必阅读）
- **DRM 加密流**（Netflix / 部分付费体育）MSE 只能截到加密分片，无法解码。
  此类需 Phase 5 的 `getDisplayMedia` 录屏兜底（画质有损），本阶段未实现。
- 主动 fetch 若被站点 CORS 拦截，会自动切换到 tee 兜底（克隆播放器已收到的响应），
  一般仍可用。
- 捕获必须由用户点"开始捕获"触发（浏览器安全限制），无法完全静默全自动。

## 调试
- 扩展页面（Service Worker）按 F12 → 应用 → Service Workers → 点"检查"看 background 日志
- content 日志在对应标签页的 Console
- 服务端日志在启动它的命令行窗口
