🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

媒体播放器 magnoliatech-code/dsh-media-player

DeepSeek Harness
magnoliatech-code14 天前有提交已提供中文文档扫描:含敏感能力

在侧边栏直接播放视频音频,大文件拖动进度条也秒响应

29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add magnoliatech-code/dsh-media-player
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · browser
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 14 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 7 条)
  • 发起网络请求
    lib/client.js:50
    const response = await fetch(mediaBase() + 'api/resolve?address=' + encodeURIComponent(address), {
  • 读取本地文件
    server.js:72
    try { return await realpath(target); } catch { return null; }
  • 读取本地文件
    server.js:78
    try { entries = await readdir(dir, { withFileTypes: true }); } catch { return; }
  • 读取本地文件
    server.js:90
    const s = await stat(full);
  • 读取本地文件
    server.js:159
    const html = await readFile(join(HERE, 'player.html'));
  • 读取本地文件
    server.js:210
    try { info = await stat(file); } catch { return send(res, 404, 'not found'); }
  • 读取本地文件
    server.js:254
    const stream = createReadStream(file, { start, end });
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-media-player DeepSeek Harness Web 面板的视频/音频播放器。 在侧边栏点击媒体文件,就地播放。45 分钟的 1080p 母版通过 HTTP Range 流式传输,拖动进度条即时响应,不必整个读进内存——正是这个技巧让 1.7 GB 的渲染文件在浏览器里可用。 播放器页面 为什么需要它 侧边栏的文档预览通过 RPC 读取整个文件:对 PDF 合适,对视频母版毫无办法。这个插件补上了预览缺的两件事: - 一个回环 HTTP 服务器,响应 Range 请求,浏览器只取要播放的那部分字节。它跑在 harness 进程内部,随 dsh web 启动和停止,不会变成孤儿进程留在外面。 - 一个文档预览渲染器,支持视频和音频,媒体文件不再落到「preview is not available」。 安装 需要 DSH Web 配置档(基于 @deepseek-ai/dsh 0.2.0-rc.2 构建)。
展开完整文档(README 剩余 1 节)
dsh-media-player

DeepSeek Harness Web 面板的视频/音频播放器。

在侧边栏点击媒体文件,就地播放。45 分钟的 1080p 母版通过 HTTP Range 流式传输,拖动进度条即时响应,不必整个读进内存——正是这个技巧让 1.7 GB 的渲染文件在浏览器里可用。

播放器页面

为什么需要它

侧边栏的文档预览通过 RPC 读取整个文件:对 PDF 合适,对视频母版毫无办法。这个插件补上了预览缺的两件事:

- 一个回环 HTTP 服务器,响应 Range 请求,浏览器只取要播放的那部分字节。它跑在 harness 进程内部,随 dsh web 启动和停止,不会变成孤儿进程留在外面。
- 一个文档预览渲染器,支持视频和音频,媒体文件不再落到「preview is not available」。

安装

需要 DSH Web 配置档(基于 @deepseek-ai/dsh 0.2.0-rc.2 构建)。

1. 克隆到一个稳定且绝对的位置:

git clone https://github.com/magnoliatech-code/dsh-media-player.git ~/.local/share/dsh-media-player

2. 把插件条目加进配置档补丁 ~/.dsh/profiles/web/cordis.patch.yml:

- insert:
- id: media-player
name: /home/YOU/.local/share/dsh-media-player/index.js
config:
root: /home/YOU/projects # what the playlist scans
port: 8099

两个约束,都很容易踩:

- 新条目必须放在 insert: 列表里。光写 - id: … 只会覆盖已存在的条目;单独出现时它会警告 patch: entry "…" not found,什么也不加载。
- name 必须是绝对路径。加载器会把它改写成 file:// URL,所以不需要 pnpm add,不需要配置档依赖,也没有构建步骤。

3. 重启 harness(dsh web)并刷新页面。改代码要重启,改配置不用——编辑补丁后条目大约两秒内重启,但 Node 会缓存已导入的模块,新代码只有在新进程里才会加载。

配置

| 字段 | 默认值 | 含义 |
| root | harness 的 process.cwd() | 扫描并提供的目录 |
| port | 8099 | 回环 TCP 端口 |
| host | 127.0.0.1 | 绑定地址 |

如果你从别处启动 dsh web,请固定 root,不要依赖启动目录。

使用

- 在 harness 里——在 Files 中点击媒体文件,或点击聊天里指向它的链接。标签页照常显示路径头、刷新和「在应用中打开」。
- 完整页面——右侧边栏 → Browser → http://127.0.0.1:8099/。自带的 Browser 标签页在 Web 配置档里默认关闭;在同一个补丁文件里用 - id: ui-sidebar-browser 和 disabled: false 启用它。
- 外部——在任意浏览器打开同一 URL;它不绑定会话。
- 独立运行,harness 已停止——node bin/media-player.js --root DIR --port N。

深链接

#play=<path> 会在播放器里打开单个文件。路径可以相对于服务根目录,也可以是绝对路径。在界面里选中文件会重写片段,所以地址栏始终可以分享:

http://127.0.0.1:8099/#play=renders/act1.mp4
http://127.0.0.1:8099/#play=/home/you/projects/renders/act1.mp4

浏览器不允许无手势的带声自动播放,所以通过链接进入时,视频上会显示 press to play 提示层。音频保留原生控件——在那里加提示层只会碍事。无论当前启用哪种筛选,链接的文件都会保持列出。

工作原理

宿主(index.js、server.js)持有回环监听器,并通过 webserver 的 index-inject 事件把地址以 globalThis.dshMediaPlayer 发布到页面里,浏览器端因此永远不用猜端口。

客户端(lib/client.js)在 extension 优先级带上认领 mp4 m4v mov webm mkv ogv mp3 m4a aac wav flac ogg opus weba,并渲染播放器主体。它以 loading: 'renderer' 注册,意味着共享预览从不读取文件:主体向 /api/resolve 请求流 URL,再交给浏览器自己的 /。

客户端部分是手写的 bundle——harness 通过 window.__ModuleLoader__ 加载它,react 是它唯一请求的平台模块。没有打包器,没有构建步骤;改 lib/client.js 后刷新页面即可。

端点

| 路径 | 用途 |
| / | 播放器页面 |
| /api/media | 整个根目录的播放列表 JSON |
| /api/health | 存活状态、绑定端口、根目录 |
| /api/resolve?address=… 或 ?path=… | 资源地址或路径 → 流 URL |
| /m/<path>、/<path> | 支持 Range 的媒体 |

安全

默认只监听回环。只提供媒体和字幕后缀,所以 root 下的源文件和密钥一律返回 404。Host 头不是回环名加绑定端口的请求会被拒绝,从而挡住 DNS 重绑定。JSON 端点只对回环来源回显 Origin,所以另一个本地端口上的 harness 页面能读取它们,公网站点则不能。

它以你的用户身份运行,从不用 root:harness 就是你的进程。

限制

- 改代码需要重启 harness,如上所述。
- 一个端口只能有一个占用者。 第二个 dsh web 实例会记录 media-player: 127.0.0.1:8099 is already in use,其余功能照常工作。
- 浏览器决定自己能解码什么。 .mkv 和 Theora 会被认领,但 Chromium 经常拒绝;播放器会说明这一点并指向 VLC,而不是显示一帧死画面。
- 全屏在沙箱化的 Sidebar Browser 框架内被阻止;请使用 open tab ↗,或使用预览渲染器——那里播放器不在框架内。

开发

npm test # node test/smoke.mjs

冒烟测试按 harness 的方式加载 bundle,检查渲染器注册、视频/音频渲染树、流 URL、解码失败覆盖层,以及重试状态。历史版本打了标签 v0.1.0 … v0.2.1;见 CHANGELOG.md。

package.json 里的 private: true 是有意为之——这个包从路径安装,不发布到 npm。

许可证

MIT
预览分享卡片长什么样 ↓magnoliatech-code/dsh-media-player
分享 · DeepSeek Harness Hub
magnoliatech-code/dsh-media-player

在侧边栏直接播放视频音频,大文件拖动进度条也秒响应

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部