Native Windows highlights, downloads and DaVinci Resolve handoff.
Extract release/UtilityStudio-Portable-2.1.0.zip and launch UtilityStudio.exe, or use the installer. Keep the runtime files and backend folder together. Python, .NET, FFmpeg and llama.cpp are bundled.
Windows x64, Windows 10 version 2004 or later. Windows 11 uses native Mica, with an accessible fallback. Light, Dark and System themes follow Windows preferences.
- Sources: add files, drop videos or paste links. Set mode, profile, count and length. Select a source and use Apply to source for individual options; otherwise current defaults apply when analysis starts. Choose Analyze.
- Review: recommendations are preselected. Additional distinct candidates are offered, up to three times the requested count, capped at 50 per source. Preview, select and drag to reorder. Alt + Up/Down moves the focused card. Selected cards export in displayed order.
- Export: choose MP4 clips, an editable Resolve timeline or highlight markers, then set destination and export options. Reviewed exports reuse analysis.
Auto export MP4 clips analyzes and exports recommendations in one batch. Sources run sequentially. The task pane supports pause, cancellation, retry and folder access. Completed files survive cancellation; incomplete exports are removed. Restarting restores selections, order and results and marks interrupted tasks for retry.
| Mode | Signals |
|---|---|
| Fast | Motion, scenes, audio onsets and relative energy; no models. |
| Speech | Adds local Whisper transcription and complete statements. |
| Content | Adds local Qwen transcript-segment rating. |
Profiles: Mixed, Conversation, Gaming / Action, Music and Custom. Missing signals do not contribute. Reasons describe detected features, not quality guarantees. Length limits are enforced. Statements exceeding the maximum are not arbitrarily cut; increase the maximum if no statement fits.
Range, spacing, weighting, sampling, language, device and encoder controls are expandable. Analyses retain settings, source fingerprints, metadata and candidate IDs. Export rejects changed sources or unknown candidates.
MP4 retains original resolution, display orientation, aspect ratio and frame timing, including VFR. Fast uses function-tested hardware acceleration with CPU fallback; High quality uses CPU/medium/CRF 18. Preview conversion may produce smaller 24-fps H.264 media; it never changes exported media or original timeline references.
Use Settings → Speech model / Content model → Download. These buttons are the only download entry points; analysis never downloads a missing model. Missing models expose Get models. Downloads run through a dedicated worker, one at a time, with progress, cancellation and Retry. Provider SHA-256 is checked where supplied. Partial files are removed on cancellation; completed downloads are retained.
Whisper small is approximately 464 MiB; Qwen2.5-3B Instruct Q4_K_M is approximately 2.0 GiB. Other Whisper sizes are available. Import a local CTranslate2 folder with model.bin and tokenizer.json, or a compatible GGUF. Use installed defaults clears imported path overrides.
After setup, analysis runs offline. The local content server binds only to 127.0.0.1 with a random token. Media and transcripts do not go to cloud models. Qwen uses the bundled CPU runtime. Whisper CUDA needs compatible local CUDA/cuDNN; unavailable acceleration falls back to CPU/int8 with a notice.
Highlight timeline (.otio): Resolve File → Import → Timeline. It references original media and source ranges in selected order, with corresponding audio tracks and highlight markers. Keep originals in place or relink them in Resolve. Downloaded source videos are persistent and survive cache clearing.
Frame rate defaults to the nearest supported rate of the first selected source; explicit rational rates are available. Boundaries round to timeline frames; .rounding.json records adjustments. No retiming or automatic CFR copies are added. VFR originals carry a boundary and audio-sync review notice.
Markers (.edl): export detected beats from Beats or selected highlights from Export. In Resolve select the timeline, then use Import → Timeline Markers from EDL. Match frame rate, timeline start timecode and source-placement offset. Defaults: 01:00:00:00, zero offset. Drop-frame supports 30000/1001 and 60000/1001. Same-frame markers merge. Highlight source markers require one original source; use a timeline for multiple sources.
File interchange targets Free and Studio without scripting setup. Structural validation does not prove native Resolve compatibility. Verify relinking, boundaries, audio sync, audio linking and marker placement in the installed Resolve version. See VALIDATION.md for current evidence.
Download MP4, FLAC, WAV, M4A, MP3 or original audio, optionally with FLAC beat audio. Beats creates FLAC/WAV/OGG click tracks or Resolve marker EDL. Results stay on their respective pages. Video links and explicit model downloads need internet; existing local sources and models work offline.
%LOCALAPPDATA%/UtilityStudio stores settings, source rows, queue/review state, durable analyses, persistent downloaded sources, models, disposable cache and backend.log. Cache clearing preserves records, models, source media and exports. UTILITY_STUDIO_STATE overrides the location for tests. Existing v2.0 settings/results are preserved and known historical product strings are migrated to English.
Pinned: .NET SDK 10.0.401, Windows App SDK 2.5.1, Python 3.13.10, OpenTimelineIO 0.18.1, llama.cpp b11472. NuGet and Python lockfiles pin dependencies.
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements-lock.txt
.\provision_tools.ps1 -IncludeSdk
pwsh -File tool/create_icon.ps1
pwsh -File package_release.ps1Inno Setup 6/7 builds the installer; -SkipInstaller builds only the ZIP. SVG, small SVG and PNG assets are under assets, with multi-resolution icon.ico. The deterministic icon script uses native vector drawing.
$env:PATH = (Join-Path $PWD 'vendor/ffmpeg') + [IO.Path]::PathSeparator + $env:PATH
.\.venv\Scripts\python.exe -m unittest discover -s tests -vWinUI --self-test <directory> renders this app's own UI and exercises persistence and the worker protocol. Fixture, model, frozen-worker and ZIP checks are in tool. The old Tkinter application remains as unbundled legacy source.
Protocol v1 uses UTF-8 JSON Lines on stdin/stdout and separate stderr logs. Commands: run, cancel, shutdown. Legacy operations: clips, download, beats. New operations: analyze, export_clips, preview, model_status, model_download, beat_markers, highlight_markers, timeline. New events analysis and models augment existing progress and terminal events. Every task has an ID.
See THIRD-PARTY-NOTICES.txt and collected runtime licenses. Model weights remain separate and retain their own licenses.