DeepSeek Harness Plugin

STARDUSTLC666/dsh-ffmpeg

Stars ★ 2 Category Tools & Capabilities Added 2026-08-15 npm dsh-ffmpeg

Seven video tools (probe/cut/concat/encode/subtitle/extract/gif) on the official subprocess service: shell-free argv, zero runtime dependencies.

Install

# from npm (prebuilt)

dsh plugin --profile web add dsh-ffmpeg

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:STARDUSTLC666/dsh-ffmpeg

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time. Only install sources you trust, and pin a commit (github:owner/repo#sha).

README

中文

dsh-ffmpeg

Awesome DSH Plugin

DSH (DeepSeek Harness) video-processing plugin: seven tools covering probing, cutting, concatenation, transcoding, subtitles, extraction and GIF creation — all powered by ffmpeg/ffprobe.

Installation

dsh plugin --profile web add dsh-ffmpeg

ffmpeg must be installed locally (ffmpeg -version should work); use ffmpegPath / ffprobePath when it is not on PATH.

Configuration

Override the plugin row in your profile's cordis.patch.yml (defaults apply when absent):

- id: ffmpeg
  name: 'dsh-ffmpeg'
  config:
    # ffmpegPath: C:\tools\ffmpeg\bin\ffmpeg.exe   # explicit path when not on PATH
    # ffprobePath: C:\tools\ffmpeg\bin\ffprobe.exe
    timeoutMs: 300000                                # per-operation timeout (default 5 min, 10s - 2h)
    # overwrite: true                                 # allow overwriting outputs (default auto-suffix _1/_2)

Tools

Tool Purpose Key parameters
ffmpeg_probe Probe media info (format/duration/resolution/fps/bitrate/audio/subtitle streams) input required
ffmpeg_cut Cut a clip (stream copy by default, accurate re-encode optional) input required; start/end/duration
ffmpeg_concat Concatenate 2-20 clips (stream copy for identical codecs / re-encode for mixed) inputs array required
ffmpeg_encode Transcode with presets (bilibili 1080p/4K, vertical 1080p, web-720p) plus crf/fps/scale overrides input required; preset optional
ffmpeg_subtitle Burn subtitles (SRT/ASS hard subs) input + subtitle required
ffmpeg_extract Extract audio (m4a) / frame sequences / single frame / subtitle stream input + what required
ffmpeg_gif Video to high-quality GIF (two-pass palette) input required; fps/width/duration optional

Examples

ffmpeg_probe { input: E:\videos\raw.mp4 }
ffmpeg_cut { input: E:\videos\raw.mp4, start: 10, end: 30 }
ffmpeg_encode { input: E:\videos\raw.mp4, preset: bilibili-1080p }
ffmpeg_subtitle { input: E:\videos\raw.mp4, subtitle: E:\videos\subs.srt }
ffmpeg_gif { input: E:\videos\raw.mp4, duration: 3, width: 480 }

Safety

  • No shell: every argument is passed as its own argv element — user input cannot inject commands
  • Runs on the official DSH subprocess service: tree-scoped termination (timeout escalates SIGTERM → kill; taskkill /T on Windows), zero runtime dependencies
  • No accidental overwrites: existing outputs get auto-suffixed; output == input is rejected
  • Timeout clamps: per-operation 10s - 2h; probes additionally capped at 60s
  • Input validation: time formats, preset enums, crf/fps/scale ranges are validated up front with actionable errors

Development

pnpm install
pnpm test       # build + 50 tests, including a real-ffmpeg end-to-end suite (auto-skipped without ffmpeg)

License

MIT

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →