dsh-video-preview:dsh-better-sidebar 的視頻文件預覽插件

前言

DSH 的插件思路是把擴展能力拆成可安裝的插件;社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。對使用 DSH Web 側邊欄的開發者來說,一個具體問題是:dsh-better-sidebar 可以預覽圖片、PDF、Markdown 等文件,但視頻文件缺少專門的播放預覽方式。

dsh-video-preview 解決的就是這一項:在側邊欄打開常見視頻文件時,內聯渲染一個可播放、可拖拽進度條的 <video> 播放器。

這是什麼

dsh-video-preview 是 zemul 維護的 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-sidebar 的 mediaLimit 限制
  • viewer 描述符帶 title 和 icon,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 的 webm、mov、OGV 等格式。

需要注意以下幾點:

  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
  • Chrome / Edge / Firefox 不內置解碼的格式,例如部分 HEVC、AV1 組合,會在播放器內報錯;此時可以使用播放器底部的「下載」鏈接取回原文件。
  • 插件不新建 Tab 頁,僅作爲文件預覽器註冊;如有需要,也可按需再加 registerTab。
  • 路由複用與 /api 網關相同的 Host 頭信任圍欄,只接受 loopback 或 trustedHosts,拒絕跨站。
  • 解析後的路徑必須位於會話權威工作目錄內,大小寫和分隔符有一定容忍,.. 無法越界。
  • 路由只讀流式下發,不寫文件、不設身份。

鏈接

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

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

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

小夜