Saltar al contenido principal
P

dsh-video-studio

pengjunchen/dsh-video-studio

Local video color editing with camera-matched DJI Log LUTs, independent highlights and shadows, optional skin and selective color controls, frame previews, and 10-bit HEVC export. The universal tarball listed here ships no runtime: its first-launch "configure environment" button downloads a pinned platform runtime (Python 3.12 + FFmpeg 9, ~100 MB) over HTTPS, or point it at your own Python 3.10+ and FFmpeg/ffprobe 8+; the platform-suffixed release packages bundle that runtime.

Instalar

dsh plugin --profile web add github:pengjunchen/dsh-video-studio

README

DSH Video Studio

简体中文 · MIT License

Local video color editing for DeepSeek Harness. Open a folder, choose a clip, restore its camera color, preview optional adjustments, and export a new video. The Studio combines five features over one shared processing runtime.

This is an early release. The interface is currently in Chinese. Local image statistics provide optional suggestions; they do not determine creative intent.

Features

  • Camera/profile-aware DJI D-Log, D-Log M and D-Log2 LUT matching. Vivid / Size 65 is preferred when available; choose another registered look or size.
  • Independent highlights and shadows, optional stronger low-light lift, approximate time-range suggestions and manual control.
  • Optional spatial denoising, face-guided skin brightness/smoothing, and selective color controls. Adjustments start unset and suggestions require acceptance.
  • Current-frame previews, original-size inspection, source playback and bounded processed playback clips. Collapse material and adjustment panels for viewing.
  • Optional, page-specific AI advice through Harness's configured models. Image sharing is opt-in; no separate API key is stored by this plugin.
  • Detail-first 10-bit HEVC export, explicit output location, result playback, system-player opening and folder reveal. Default destination: the source folder's Output/ directory. Original files are read-only.

Requirements

DeepSeek Harness 0.2.1-rc.2 / rc.3 with Node.js 22.19+. Complete platform packages include fixed Python, FFmpeg/ffprobe, NumPy, OpenCV and 18 DJI LUTs. Customers do not need separate installations of these components.

Package suffixHost requirement
darwin-arm64macOS 13+, Apple Silicon
darwin-x64macOS 13+, Intel
win32-x64Windows 10 22H2+, x64
linux-x64Ubuntu 22.04+ / glibc 2.35+, x86-64

Choose the architecture of the Harness Host and its Node runtime. Desktop has a native folder picker; Web needs an explicit source directory grant. The small universal package includes LUTs and offers a first-launch 配置独立环境 button, or can use your own Python 3.10+ and FFmpeg/ffprobe 8+. Complete platform packages need no runtime download on first launch. See fixed runtime construction and platform limits.

Install

Download the .tgz with the matching platform suffix from GitHub Releases and select it in Harness's plugin installer. This is the prepared distribution; GitHub's automatically generated source ZIP/tarball does not contain LUT payloads.

For an Apple Silicon Mac, the CLI can install the complete release directly:

dsh plugin --profile desktop add 'https://github.com/PengJunchen/dsh-video-studio/releases/download/v0.1.0-beta.3/dsh-video-studio-0.1.0-beta.3-darwin-arm64.tgz'

Or install a downloaded package, selecting the profile you actually use:

dsh plugin --profile desktop add /absolute/path/to/dsh-video-studio-0.1.0-beta.3.tgz
# For a Web Host, use --profile web instead.

The bare npm name is not a published installation channel. After installation, restart Harness when convenient and open 影调工作台 in the sidebar. Choose a source folder on Desktop. There are no source grants by default.

Configuration

Add overrides to the active profile's cordis.patch.yml. Modify the existing hvp-runtime row; do not insert a second runtime. Paths refer to the Host's filesystem, including when the browser is on another machine.

- id: hvp-runtime
  config:
    allowedRoots:
      - /absolute/path/to/videos
    # Optional explicit override; normally use the bundled runtime.
    # python: /absolute/path/to/python
    # Optional Python containing NumPy/OpenCV:
    # assets:
    #   vision_python: /absolute/path/to/venv/bin/python

allowedRoots is required for manual path scanning in Web. Desktop's folder picker grants access to the folder explicitly selected by the user. Do not grant an entire drive just to make one folder accessible.

The bundle stores drafts and jobs in video-studio/ under the active Harness home (dshHomePath('video-studio')), outside installed plugin files. To relocate it, set dataDir on the same runtime row. Keep this directory across upgrades if you want to preserve drafts and completed export records.

Bring your own LUTs

The included resources cover the exact mappings in assets/catalog.json. Vivid / Size 65 is preferred where provided; some cameras only have a 33-size or Standard LUT. D-Log, D-Log M and D-Log2 are never substituted for one another. See resource construction and inventory.

For a separate, custom catalog, override the defaults with:

- id: hvp-runtime
  config:
    assets:
      catalog_path: /absolute/path/to/video-luts/catalog.json
      lut_root: /absolute/path/to/video-luts

Obtain a 3D CUBE → Rec.709 LUT for the exact camera and Log profile. From a source checkout, register it with:

npm run catalog -- --file /path/to/vivid.cube \
  --camera pocket4p --profile dlog2 --look vivid \
  --directory /path/to/video-luts

The command copies the LUT under a SHA-256 filename and writes a version-2 catalog. Use --append to add other camera/profile/look/grid mappings. It does not infer a file's camera or transfer function: the mapping is your declaration. Profiles: dlog, dlogm, dlog2; looks: standard, vivid. Configure catalog_path and lut_root as above, then reload the plugin. Already prepared version-2 catalogs remain supported; assets.library_path can optionally add compatible sizes from a schema-1 LUT library.

Optional face-guided treatment

python3 -m venv /path/to/video-vision
/path/to/video-vision/bin/python -m pip install -r requirements-vision.txt

Set assets.vision_python to that Python executable. Detection supplies face candidates, not identities or guaranteed coverage; preview the result before export. No small neural model or external model weights are required by the baseline.

Workflow and limits

Select a clip in the left list, confirm restoration, then visit 明暗 → 肤色 → 局部颜色 → 确认. Each adjustment is optional. Scrub to inspect different positions, accept only the changes you want, and choose an export destination.

  • The working domain is display-referred SDR Rec.709. Unknown Log requires confirmation and a valid transform; HDR HLG/PQ and RAW mastering are not supported.
  • Tone suggestions use sparse RGB16 samples, not exact shot detection or object tracking. They are based on the restored baseline, before manual edits. Accepted ranges use fixed controls with short boundary transitions.
  • Low-light lift amplifies existing information and noise. Spatial denoising can soften fine texture; it is optional and has no temporal denoising model.
  • Fast reduced previews and original-size processing can differ. HEVC playback depends on browser/OS codecs. Original-size 4K processing is not real-time.
  • Detail-first export checks that encoding preserves the processed YUV420p10 frames. This does not make LUTs or chroma conversion reversible. Files may be much larger than the source; the explicitly selected fast mode is lossy.
  • AI suggestions may be wrong. They change only the current page's controls after acceptance; enabling image analysis shares sampled frames with the provider selected in Harness.

Independent features

The default bundle loads one runtime plus the full Studio. Package subpaths also expose lut-batch, tone, skin, local-color and finish. For example, to register only tone tools instead of all Studio tools, add:

- id: hvp-studio
  disabled: true
- insert:
    - id: hvp-tone
      name: dsh-video-studio/tone

Keep hvp-runtime enabled. The shared client shows available features; these entries do not create independent databases or chain five video encodes. Tool names are video_lut_batch, video_tone, video_skin, video_local_color, video_finish and, for the aggregate entry, video_studio.

Build from source

git clone https://github.com/PengJunchen/dsh-video-studio.git
cd dsh-video-studio
npm run assets:prepare -- --download
npm run build
npm pack ./dist --ignore-scripts

The bundled LUTs come from DJI's official downloads. Resource preparation downloads the pinned resource archive, verifies its locked SHA-256 and every original LUT's hash/size. Original DJI HTTPS sources and ZIP members remain in the manifest; use --download --official-only to fetch those directly. For an offline build, replace --download with --source /path/to/luts. The source directory must contain the SHA-named files in the manifest.

The build refuses missing, modified or wrong-grid LUTs, then copies the runtime and exact resources into dist/. It uses Node's standard library; no adjacent Harness/lut-app checkout or frontend compiler is required. The client resolves React from Harness. The resulting package runs without downloading LUTs at runtime. See the full resource build recipe for origin, counts, prerequisites and release construction.

A standalone local UI is also available without Harness AI integration:

npm start -- --input-root /absolute/path/to/videos --data-dir /path/to/standalone-data

Open http://127.0.0.1:4319/hvp/. Camera LUT options are --catalog, --lut-root and optionally --library; face treatment uses --vision-python. The standalone server is local-only and has no native folder picker.

index.mjs / client.js / cordis.patch.yml  Harness package entry points
adapters/harness/                       Host tool and AI integration
bundles/ / plugins/                     Shared runtime and feature entries
src/                                   Jobs, permissions, storage and HTTP
web/                                   Studio interface and live preview
worker/                                Python media-processing pipeline
scripts/                               Build and LUT import
assets/                                Locked resource manifests and prepared LUTs

License

Original project source: MIT, copyright Peng Junchen. See third-party notices for external dependencies and resource sources. This is an independent community plugin, not an official DeepSeek, DJI or CapCut product.

Plugins relacionados