前言¶
在 DSH(DeepSeek Harness)里处理视频需求时,常见做法是让智能体用 yt-dlp 拉整片,再在本地用 ffmpeg 裁剪。对一小时直播里只要中间二十分钟演讲的场景,这类流程往往要先传完整文件,时间和带宽都浪费在不需要的区间上。
dsh-video-clip 把「区间下载 → 边界核对 → 内网分享」收成一条工作流:用 yt-dlp --download-sections 只请求指定起止时间;长片在 DASH 无法定位时自动回退 HLS 分片;下载后用 ffprobe 与均匀抽帧拼图核对起止画面;需要时再起临时 HTTP 服务给出内网下载链接。下文按安装、工具和典型串法说明。
这是什么¶
dsh-video-clip 是维护者 jhao0413 发布的 DSH 插件,npm 包名 dsh-video-clip,当前版本 0.1.0(见仓库 package.json),许可证 MIT。在 SkillHub 目录 中归类为工作流;源码与说明见 GitHub 仓库。
插件在 DSH 里注册三个工具与一个 skill,由模型按场景把三步串起来使用。
注册了哪些能力¶
| 名称 | 类型 | 作用 |
|---|---|---|
video_clip_download |
工具 | 按 start–end 下载片段;DASH 直链无法定位时自动回退 HLS 分片 |
video_clip_verify |
工具 | ffprobe 时长/编码/音轨 + 平均音量 + 均匀抽帧拼图,核对起止边界 |
file_share |
工具 | 把文件/目录起成带 Range 的临时 HTTP 服务,返回内网下载链接 |
video-clip |
skill | 说明何时用、如何把上述三步串起来 |
安装与依赖¶
安装后需重启 DSH。官方 README 给出的命令如下(--profile web 与仓库示例一致):
# 从 npm(发布后)
dsh plugin --profile web add dsh-video-clip
# 本地开发:直接指向本目录
dsh plugin --profile web add link:/绝对路径/dsh-video-clip
# 卸载
dsh plugin --profile web remove dsh-video-clip
运行时要求:
- ffmpeg / ffprobe 须在 PATH 中;未安装时工具会返回安装提示。
- yt-dlp 缺失时,插件会执行
pip install --target $DSH_HOME/cache/video-clip/ytdlp yt-dlp自动安装到缓存目录。 package.json标明 Node >= 22,DSH 引擎范围 >=0.2.0-rc.2 <0.3.0-0。
插件以当前 DSH 进程权限执行下载与起服;安装前建议阅读仓库源码与 MIT 许可证,确认网络出站、磁盘路径与内网分享策略符合你的环境。
核心工具参数¶
video_clip_download¶
| 参数 | 必填 | 说明 |
|---|---|---|
url |
是 | 视频地址(yt-dlp 支持的站点) |
start |
是 | 开始时间,HH:MM:SS 或秒数(如 18410) |
end |
是 | 结束时间 |
quality |
否 | 清晰度上限,默认 1080p,可 720p / 480p / best |
format |
否 | 高级:直接指定 -f 格式串(如 137+140),指定后不自动回退 |
outDir |
否 | 输出目录,默认 <会话工作目录>/download |
audioOnly |
否 | 只下音频 |
forceKeyframes |
否 | 切点强制关键帧(分秒精确,但重编码、慢) |
返回本地路径、实际时长、大小、分辨率、编码、使用的格式、告警列表。
video_clip_verify¶
必填 file;可选 samples(抽帧数,默认 6)、outDir。返回拼图 sheetFile、单帧目录 framesDir、时长、音轨与平均音量。README 建议先看拼图通读,再对关键格回读单帧核对文字。
file_share¶
| action | 参数 | 说明 |
|---|---|---|
start(默认) |
path、port、ttlSeconds、bind |
起只读 HTTP 服务,返回 http://<内网IP>:<port>/<文件名> |
list |
— | 列出活跃分享 |
stop |
shareId |
停止指定分享;省略则停止全部 |
默认 30 分钟自动关闭;支持 Range(断点续传、视频拖动);目录分享不暴露列表页。
典型用法¶
README 中的对话示例可复现为如下意图(时间格式与 URL 保持一致即可):
- 向助手说明:从
05:06:50到05:31:34下载https://www.youtube.com/watch?v=0TBBRmDhnc4。 - 助手调用
video_clip_download,只传输约 24 分 44 秒的区间。 - 调用
video_clip_verify抽帧,确认起点落在演讲标题页、终点落在 Summary 页。 - 需要给他人拉文件时,再调用
file_share返回内网链接。
长视频为何优先 HLS¶
YouTube 的 DASH 直链(PROTO=https)在部分网络/网关下,ffmpeg 无法对其定位,--download-sections 可能出现 could not seek to position … / partial file,并长时间读取远端数据。插件对时长超过 30 分钟的视频默认改走 HLS(m3u8)分片,按区间取片更稳定;短片段仍优先 DASH。若显式传入 format,插件不会擅自换格式;也可把 quality 设为 720p-hls 等以强制 HLS。
适用场景与注意¶
适合需要从发布会、论坛直播回放、长议程视频中只截取一段、并在智能体对话里完成核对与分享的 DSH 用户。不适合期望「零依赖开箱」的环境:除 DSH 外仍需 ffmpeg 系工具,且可能触发 yt-dlp 的 pip 安装与目标站点的访问策略。
常见问题(摘自 README):
- YouTube 出现机器人验证时,可设置
DSH_VIDEO_CLIP_COOKIES_FROM_BROWSER=chrome或DSH_VIDEO_CLIP_COOKIES=/path/cookies.txt后重启宿主。 - 未开
forceKeyframes时切点会吸附关键帧,边界可能差几秒;长片段强制关键帧会重编码,宜先看 verify 再决定。 - 内网分享打不开时,检查同网段、防火墙与
port/bind。
结尾¶
dsh-video-clip 把区间下载、抽帧核对和内网 HTTP 分享固定为 DSH 工作流里的三个工具,减少「先下全片再剪」的浪费,并在长视频场景用 HLS 回退规避 DASH 定位失败。目录页:SkillHub - dsh-video-clip;源码与完整参数说明:GitHub - jhao0413/dsh-video-clip。