dsh-video-preview:dsh-better-sidebar 的视频文件预览插件

前言

DSH 的插件思路是把扩展能力拆成可安装的插件;社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。对使用 DSH Web 侧边栏的开发者来说,一个具体问题是:dsh-better-sidebar 可以预览图片、PDF、Markdown 等文件,但视频文件缺少专门的播放预览方式。

dsh-video-preview 解决的就是这一项:在侧边栏打开常见视频文件时,内联渲染一个可播放、可拖拽进度条的 <video> 播放器。

这是什么

dsh-video-previewzemul 维护的 DSH 插件,包名为 dsh-video-preview,许可证为 MIT,package.json 声明版本为 0.1.4,要求 Node >=20

它面向已安装 dsh-better-sidebar 的 DSH Web 环境,通过 ctx.betterSidebar.registerFileViewer 注册 video 预览器,previewer id 为 video,与内置 viewer 同权。

核心功能

  • 支持以下文件扩展名:.mp4 / .m4v / .webm / .mov / .qt / .mkv / .avi / .wmv / .flv / .ogv / .ogg / .mpeg / .mpg / .3gp / .3g2 / .m2ts
  • 内联渲染 <video controls>,支持播放/暂停、拖拽进度条、倍速、全屏、音量,并设置 preload=metadata
  • 播放器底部显示文件名,并提供「下载」链接
  • 自带 /video/* 宿主路由,支持 HTTP Range、If-Range、suffix-range,如 bytes=-N
  • 视频大小不受 better-sidebarmediaLimit 限制
  • viewer 描述符带 titleicon,Side card 设置页会自动显示启用开关,包含 16px 播放器图标
  • 客户端组件自包含,不依赖 better-sidebar 的 client 内部实现,配置为 fetchStrategy: 'none'

安装与启用

前置条件:

  • DSH 已装好,且 dsh web 能运行
  • 已安装 dsh-better-sidebar
  • better-sidebar >= 0.4.0,因为插件依赖 ctx.betterSidebar.registerFileViewer 服务

安装命令:

dsh plugin --profile web add dsh-video-preview

安装后需要重启 dsh web 进程,并在浏览器中执行硬刷新:

Cmd/Ctrl+Shift+R

说明:新增宿主半 /video 路由需要重启一次;之后如果只是 client 改动,硬刷新即可。

典型用法

1、打开侧边栏。

2、在侧边栏的文件资源管理器中打开任意支持的视频文件,video 预览器会自动命中,并显示内联播放器。

3、进入 Side card 设置页。

4、在「文件预览」清单中可以看到 Video 卡片,带播放器图标,可单独启用或禁用。

适用场景与注意

适合在 DSH Web 侧边栏中频繁查看本地或会话目录内视频文件的开发者。常见适用文件包括浏览器可解码的 H.264 mp4 / m4v、VP8 / VP9 的 webmmov、OGV 等格式。

需要注意以下几点:

  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
  • Chrome / Edge / Firefox 不内置解码的格式,例如部分 HEVC、AV1 组合,会在播放器内报错;此时可以使用播放器底部的「下载」链接取回原文件。
  • 插件不新建 Tab 页,仅作为文件预览器注册;如有需要,也可按需再加 registerTab
  • 路由复用与 /api 网关相同的 Host 头信任围栏,只接受 loopback 或 trustedHosts,拒绝跨站。
  • 解析后的路径必须位于会话权威工作目录内,大小写和分隔符有一定容忍,.. 无法越界。
  • 路由只读流式下发,不写文件、不设身份。

链接

GitHub:https://github.com/zemul/dsh-video-preview

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜