VidOtter

VidOtter 是跨平台的浏览器媒体下载工具,通过 Chrome/Edge 扩展和本地 Go Bridge 检测、下载及处理视频和音频。

中文更新于 2026/10/31约 7 分钟读完维护中

VidOtter

English

1. Introduction

最开始开发 VidOtter,是因为我想下载浏览器里正在播放的视频,但很多网站并不提供直接的下载链接。

这些网站通常使用 HLS 等流媒体协议,视频被拆分成多个片段,播放地址也可能是临时生成的。虽然浏览器可以正常播放,但很难直接拿到完整的视频文件。

我不想为每个网站单独编写解析器,因为网站一旦改版,就需要重新适配。实际上,浏览器播放视频时已经发起了媒体请求,直接从这些请求中发现视频资源,会更简单,也更通用。

VidOtter 就是为了解决这个问题。它通过浏览器扩展检测 MP4、HLS 等媒体资源,再交给本地 Go 下载引擎完成下载和文件合并,不依赖针对特定网站的解析规则。

使用时,只需要在 Chrome 或 Edge 中播放视频,打开 VidOtter,选择检测到的资源并下载。下载任务、进度和历史记录可以在浏览器弹窗、侧边栏或全屏界面中管理。

此外,VidOtter 还支持字幕提取、本地语音识别和翻译,也可以通过 MCP 连接 ChatGPT,让 AI 帮忙管理下载任务。这些功能按需启用,不影响普通的视频下载。

项目提供 Windows、Linux 和 macOS 安装包。

VidOtter 资源嗅探界面

2. Quick Start

安装 VidOtter,启用浏览器扩展,再下载一个示例视频。

2.1. 安装

从最新 Release下载对应系统的安装包。图形安装器支持 Windows x64、Linux x64 和 Intel macOS。

2.1.1. 图形界面

Windows

运行 VidOtter-Setup-v*-windows-amd64.exe,按安装向导完成安装。然后从开始菜单打开 View Setup Instructions,按照说明加载浏览器扩展。

macOS(Intel)

打开 VidOtter-Setup-v*-macos-amd64.dmg,运行其中的安装程序。安装完成后,按提示加载浏览器扩展。Apple Silicon 用户请使用 macos-arm64.tar.gz 压缩包。

Linux(x64)

在桌面环境中运行 VidOtter-Setup-v*-linux-amd64.run。如果系统不允许执行,可以在文件属性中开启执行权限,或者先执行 chmod +x。完成安装后,从安装目录加载浏览器扩展。

三个平台的安装器都会注册本地 Native Messaging Host,Chrome 或 Edge 在需要时自动启动 Bridge。

2.1.2. 命令行

以下命令使用同一份图形安装器,但不显示安装向导。在安装包的下载目录打开终端。

Windows(PowerShell)
$installer = (Get-ChildItem .\VidOtter-Setup-v*-windows-amd64.exe | Select-Object -First 1).FullName
Start-Process -FilePath $installer -ArgumentList '--accept-licenses --default-answer --confirm-command install' -Wait
macOS(Intel)
dmg=$(find . -maxdepth 1 -name 'VidOtter-Setup-v*-macos-amd64.dmg' -print -quit)
mount=$(mktemp -d)
hdiutil attach -nobrowse -readonly -mountpoint "$mount" "$dmg"
app=$(find "$mount" -maxdepth 2 -type d -name '*.app' -print -quit)
installer=$(find "$app/Contents/MacOS" -maxdepth 1 -type f -perm -111 -print -quit)
QT_QPA_PLATFORM=offscreen "$installer" --root "$HOME/VidOtter" --accept-licenses --default-answer --confirm-command install
hdiutil detach "$mount"
Linux(x64)
installer=$(find . -maxdepth 1 -name 'VidOtter-Setup-v*-linux-amd64.run' -print -quit)
chmod +x "$installer"
QT_QPA_PLATFORM=offscreen "$installer" --root "$HOME/VidOtter" --accept-licenses --default-answer --confirm-command install

2.1.3. 手动安装压缩包

需要手动安装时,从同一 Release 下载对应压缩包:

  • Windows x64:vidotter-v*-windows-amd64.zip
  • Linux x64 / ARM64:vidotter-v*-linux-amd64.tar.gz / vidotter-v*-linux-arm64.tar.gz
  • macOS Intel / Apple Silicon:vidotter-v*-macos-amd64.tar.gz / vidotter-v*-macos-arm64.tar.gz

将压缩包完整解压到固定目录。安装根目录应直接包含 bin/ 和 extension/。进入该目录,注册 Native Messaging Host:

Windows PowerShell:

Set-Location 'C:\path\to\VidOtter'
.\bin\vidotterdev.exe install

Linux/macOS:

cd '/path/to/VidOtter'
./bin/vidotterdev install

移动安装目录后,需要重新注册。Linux 可通过 uname -m 查看架构:x86_64 是 x64,aarch64 是 ARM64;macOS 可在“关于本机”查看芯片类型。

2.2. 配置

2.2.1. 浏览器扩展

  1. Edge 打开 edge://extensions,Chrome 打开 chrome://extensions。
  2. 开启开发者模式,点击加载解压缩的扩展。
  3. 选择 VidOtter 安装目录下的 extension/ 文件夹,这个文件夹中应直接包含 manifest.json。
  4. 在浏览器工具栏的扩展菜单中打开 VidOtter,也可以将它固定到工具栏。
  5. 进入设置 → 连接与运行时,确认显示浏览器与下载服务连接正常后,再继续下载。

若提示找不到 Native Messaging Host,复制扩展管理页的 32 位扩展 ID,在安装根目录重新注册:

# Windows:将占位符替换为实际扩展 ID
.\bin\vidotterdev.exe install --extension-id YOUR_32_CHARACTER_ID

Linux/macOS 使用 ./bin/vidotterdev install --extension-id YOUR_32_CHARACTER_ID。注册后,在扩展管理页重新加载 VidOtter。

2.2.2. 下载设置

  • download.output_dir:下载目录,默认是 Data/downloads/。
  • download.concurrent:下载并发,默认 32,范围 1–64。
  • download.quality:默认自动选择,也可指定 best 或来源支持的高度,例如 720。
  • proxy.enabled、proxy.url:默认关闭代理;支持 HTTP 代理,不支持代理凭据和 SOCKS。
  • interface.language:界面语言,默认 zh-CN,可改为 en。
  • interface.open_mode:默认 popup,可改为 sidePanel。

手动编辑前,先备份配置并停止 Bridge,修改后重启。请保留完整文件,不要用配置片段覆盖。

2.2.3. 升级与卸载

先暂停任务并备份 Data/,再按安装方式操作:

  • 图形安装: 使用 VidOtter Maintenance,按对应 Release 的说明升级。未配置在线更新源时,通过维护工具移除旧程序,再运行新安装器。
  • 压缩包安装: 用同一新发行版的 bin/、extension/ 和随包 tools/ 替换旧文件,保留 Data/,重新注册并加载扩展。

程序卸载会保留数据和下载文件;手动删除安装目录前需自行备份。

手动安装的注销命令为 Windows .\bin\vidotterdev.exe uninstall,Linux/macOS ./bin/vidotterdev uninstall,之后在浏览器移除扩展。

2.3. 验证安装

连接正常后,打开 MDN 的 CC0 示例视频并开始播放。

保持在这个标签页,打开 VidOtter:

  1. 在资源嗅探中找到 MP4。
  2. 字幕选择不下载字幕。
  3. 点击下载。
  4. 切换到下载任务,查看刚创建的任务。

如果换成 HLS,选择完整播放清单,不要选择单独的媒体分片。

等待任务变为已完成,在任务中展开下载文件,点击文件旁的打开,确认视频可以播放。也可以直接进入默认下载目录:安装根目录下的 Data/downloads/。

需要全屏界面时,在扩展中点击打开工作区。

2.4. 连接 ChatGPT(可选)

VidOtter 内置本地 MCP Server。只有连接网页版 ChatGPT 时才需要 Tunnel;普通视频下载和本地 MCP 客户端不需要。

  1. 在 OpenAI Platform 创建 Tunnel ID,再在 API Keys 创建 Runtime API Key。
  2. 打开 VidOtter → 设置 → 外部组件 → ChatGPT MCP,按页面提示安装 Tunnel Client。
  3. 填写两项连接信息并点击 Save,再点击 Start Service。如果关闭了 Connect Tunnel automatically,则需要手动点击 Connect Tunnel。
  4. 在 ChatGPT Plugins 使用同一 Tunnel ID 注册并授权插件。
  5. 在 ChatGPT 中选择 VidOtter,调用只读工具 vidotter_status 检查连接。

Start local service at login 和 Connect Tunnel automatically 是两个独立设置。保存配置不会改变正在运行的服务;修改连接后使用 Restart Service 生效。Disconnect Tunnel 只断开 Tunnel,保留本地服务;Stop Service 停止本次运行,不会关闭下次登录自启动。已保存的密钥会遮挡显示,无需重复填写。

Windows 使用任务计划程序,Linux 使用 systemd 用户服务,macOS 使用 LaunchAgent,三者均由 Go 管理。v1.7.0 不导入旧版 PowerShell/Shell 管理的 MCP 连接配置,需要重新填写连接信息;已有下载文件和其他用户数据保留。

命令行也可以查看和控制服务,使用安装目录中的 Bridge 执行 --mcp-service status|start|stop|restart|connect|disconnect。例如 Windows:

.\bin\vidotter-windows-amd64.exe --mcp-service status

Linux 使用 ./bin/vidotter-linux-amd64(或 linux-arm64);macOS 使用 ./bin/vidotter-macos-amd64(或 macos-arm64)。首次填写密钥建议使用图形设置页。

本地 Tunnel 已连接并不等于 ChatGPT 插件已经授权,两者需要分别确认。

2.5. 字幕与外部组件

MP4/HLS 使用内置下载器。解析其他受支持的网页时,在设置页安装 yt-dlp;HLS 合并、音视频封装需要 FFmpeg。DASH 和分离音视频的支持取决于来源及工具。

根据字幕来源选择处理方式:

  • 使用原站字幕:需要 yt-dlp,且来源提供可获取的字幕。
  • 本地语音识别:需要 FFmpeg、whisper.cpp 和语音模型。
  • 字幕翻译:需要 llama.cpp 和翻译模型;使用语音识别结果时,还要指定原声语言。

在设置 → 外部组件检查所需工具,缺少时安装或配置;本地识别和翻译还需选择并下载模型,或填写已有模型的路径。组件就绪后,回到资源嗅探选择字幕处理方式并下载。完成后检查字幕文件、内容和时间轴。

如果 ChatGPT 已连接 Remote Browser Tool,直接复用现有连接操作页面,由 VidOtter 发现媒体和下载。

需要由 VidOtter 操作浏览器时,在设置中安装 Remote Browser MCP 组件。它使用独立发行包,只操作受限后台标签页;自动点击需在本机显式开启,无需另建 Tunnel。

2.6. 故障排查

  • 扩展连接不上本地服务: 按 2.2.1 核对扩展 ID 并修复注册。仍失败时,查看 Data/logs/,检查端口 127.0.0.1:17891 是否被占用。
  • 发现不到视频: 回到原标签页播放或拖动进度条,让页面重新请求媒体。部分网站没有可下载的 MP4/HLS,或使用 DRM。
  • 任务报 403 或地址过期: 回到原页面重新播放,获取新的媒体请求,再按任务提示恢复或重新下载。
  • HLS 合并失败: 检查 FFmpeg 是否可用。字幕问题先切回“不下载字幕”,确认普通下载是否正常。
  • 升级后仍是旧版本,或提示不支持的 Tool 操作: 停止旧 Bridge,更新程序文件,重新加载扩展,再到设置 → 关于核对版本。

如果以上方法仍无法解决,请提交 Issue,附上 VidOtter 版本、操作系统、复现步骤和脱敏后的错误信息,不要上传完整 Data/。

3. Development

开发环境需要 Git、Go 和 Node.js。Go 工具链须满足 bridge/go.mod 与 tools/vidotterdev/go.mod 的声明;Node.js 版本与 CI 配置保持一致。

3.1. 打开项目并验证

git clone https://github.com/ThinkerQAQ/vidotter.git
cd vidotter
go -C tools/vidotterdev run . verify
go -C tools/vidotterdev run . build

verify 执行两个 Go 模块的测试、扩展 JS 语法检查与脚本测试,成功后输出 Go and browser checks passed。build 将当前系统的 Bridge 编译到 .build/out/,开发安装见 3.2。

跨平台编译示例:

go -C tools/vidotterdev run . build --os windows --arch amd64

3.2. 安装开发版本

在源码仓库根目录执行以下命令,部署到 .build/dev-install/ 并注册:

Linux/macOS:

vidotter_dev_dir="$PWD/.build/dev-install"
go -C tools/vidotterdev run . deploy --target "$vidotter_dev_dir"
cd "$vidotter_dev_dir"
./bin/vidotterdev install

Windows PowerShell:

$vidotterDevDir = Join-Path (Get-Location).Path '.build\dev-install'
go -C tools/vidotterdev run . deploy --target $vidotterDevDir
Set-Location $vidotterDevDir
.\bin\vidotterdev.exe install

按 2.2.1 加载这个部署目录的 extension/,再按 2.4–2.5 下载并检查文件。继续修改或打包源码前,先切回原来的源码仓库根目录。

3.3. 打包与 CI

统一使用 tools/vidotterdev/ 构建、验证和打包。正式打包命令为 go -C tools/vidotterdev run . package,要求准备已校验的侧车工具、许可证及固定版本的 FFmpeg 源码包。--allow-missing-tools 仅用于不完整的开发包。

CI 在 Windows、macOS 和 Linux 执行测试、构建及 README 链接检查;真实浏览器下载和图形安装器操作需要另外验收。协作约定见 AGENTS.md。

4. License

项目原创代码采用 Apache-2.0 许可证。第三方组件遵循各自的许可证,详见 NOTICE 和 THIRD_PARTY_NOTICES.md。

VidOtter 提供媒体发现和下载功能,不绕过 DRM、付费墙或访问控制。请仅下载有权保存的内容,并遵守适用法律及媒体来源的使用条款。