Unify frame sampling, add fast mode, and support bundled-app transcription#1
Open
Justrada wants to merge 1 commit into
Open
Unify frame sampling, add fast mode, and support bundled-app transcription#1Justrada wants to merge 1 commit into
Justrada wants to merge 1 commit into
Conversation
…ption Replace codec-specific I-frame extraction with a single binary-subdivision sampler that works for any codec. Frames are grabbed in coverage-priority order (endpoints → midpoint → quarters → eighths…) and capped by both a max_frames count and a time budget, so faster machines and smaller clips naturally get denser coverage without per-codec special-casing. - core/frames.py: remove ALL_INTRA_CODECS branch; add sample_frames (capped subdivision) and sample_fast_frames (N equidistant frames, no filtering). - core/schemas.py: new settings — max_frames, time_budget, fast_mode, fast_frame_count. - core/transcribe.py: mlx-whisper now falls back to a subprocess using a Python interpreter that has it installed, so transcription works in the packaged app; in-process path retained for running from source. - core/llm.py: thread logging into LLM clients; clearer transcript-summary logs and a retry on first failure. - AutoBin.spec: bundle mlx_whisper + huggingface_hub for the frozen build. - gui/: wire fast mode and the new sampling settings through the settings panel, orchestrator, and workers. .gitignore: ignore *.LRV test footage and node_modules / remotion out dir. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Replaces the codec-specific I-frame extraction path with a single
binary-subdivision sampler that works for any codec. Frames are grabbed
in coverage-priority order (endpoints → midpoint → quarters → eighths…) and
bounded by both a
max_framescap and atime_budget, so faster machinesand shorter clips naturally get denser coverage — no per-codec branching.
Highlights
core/frames.py— drop theALL_INTRA_CODECSspecial case. Newsample_frames()(capped subdivision + similarity filtering) andsample_fast_frames()(N equidistant frames, no filtering).core/schemas.py— new settings:max_frames,time_budget,fast_mode,fast_frame_count.core/transcribe.py— mlx-whisper now falls back to a subprocessusing whichever Python interpreter has it installed, so transcription works
in the packaged app; the in-process path is kept for running from source.
core/llm.py— thread a logger into LLM clients; clearertranscript-summary logging plus a retry on the first failure.
AutoBin.spec— bundlemlx_whisper+huggingface_hubinto thefrozen build.
gui/— surface fast mode and the new sampling knobs through thesettings panel, and wire them through the orchestrator and workers.
.gitignore— ignore*.LRVtest footage andnode_modules/ theremotion
out/dir.Why
Per-codec branching was fragile and gave inconsistent coverage. A unified,
budget-bounded sampler is simpler and adapts to the machine/clip. Fast mode
gives a quick low-cost pass (few frames, tiny whisper, single LLM batch).
Subprocess transcription unblocks the packaged/bundled app.
Reviewer notes
remotion/experimentwith
node_modules, a docs flowchart, and a test.LRVclip) areintentionally excluded from this PR; the heavy ones are now gitignored.
🤖 Generated with Claude Code