Import a playblast as a previz version #159

Closed
opened 2026-10-10 21:06:21 +00:00 by crowmaki · 0 comments
Owner

Parent

#139

What to build

The filmmaker can import a playblast video file by hand into a complex Shot ("Import playblast…" in the Shot's new previz section). It becomes a new previz version. The previz section plays the current playblast and lists the versions with their times.

  • New migration: an append-only previz version record per Shot, holding the version number, content hash, duration, frame count, pixel size, how it arrived (imported by hand or picked up from the folder) and its time. Versions are only ever added, like Reference versions.
  • The video is copied into the Project's media folder next to Renditions, content-hashed. A later file never touches an earlier version.
  • One core ingest command, which is a single undoable edit. It probes the file with ffmpeg and refuses anything shorter than 2 s or longer than 15 s with a clear message. It keeps but flags (mismatched) a video whose frame count or effective aspect ratio differs from the Shot's. Later tickets reuse this command for automatic pickup.
  • The Shot's current previz is its newest version that has its file. The previz status (and so the dot colour) becomes current or mismatched.
  • Unmarking a Shot complex keeps its versions, and marking it again brings them back (ADR-0004). Splitting keeps the previz on the first part.

Acceptance criteria

  • Ingest creates versions append-only, and the newest one is current (integration test; test playblasts generated with the bundled ffmpeg in a test helper)
  • Files under 2 s or over 15 s are refused and create no version
  • A length or ratio mismatch is kept and reported as mismatched in the Shot view
  • Ingest undoes as one edit
  • Unmarking and then re-marking a Shot complex restores its previz; splitting keeps it on the first part
  • The previz section has an import button, a player for the current playblast and the version list, and the dot colour follows the status

Blocked by

## Parent #139 ## What to build The filmmaker can import a playblast video file by hand into a complex Shot ("Import playblast…" in the Shot's new previz section). It becomes a new **previz version**. The previz section plays the current playblast and lists the versions with their times. - New migration: an append-only previz version record per Shot, holding the version number, content hash, duration, frame count, pixel size, how it arrived (imported by hand or picked up from the folder) and its time. Versions are only ever added, like Reference versions. - The video is copied into the Project's media folder next to Renditions, content-hashed. A later file never touches an earlier version. - One core ingest command, which is a single undoable edit. It probes the file with ffmpeg and refuses anything shorter than 2 s or longer than 15 s with a clear message. It keeps but flags (`mismatched`) a video whose frame count or effective aspect ratio differs from the Shot's. Later tickets reuse this command for automatic pickup. - The Shot's current previz is its newest version that has its file. The previz status (and so the dot colour) becomes `current` or `mismatched`. - Unmarking a Shot complex keeps its versions, and marking it again brings them back (ADR-0004). Splitting keeps the previz on the first part. ## Acceptance criteria - [ ] Ingest creates versions append-only, and the newest one is current (integration test; test playblasts generated with the bundled ffmpeg in a test helper) - [ ] Files under 2 s or over 15 s are refused and create no version - [ ] A length or ratio mismatch is kept and reported as `mismatched` in the Shot view - [ ] Ingest undoes as one edit - [ ] Unmarking and then re-marking a Shot complex restores its previz; splitting keeps it on the first part - [ ] The previz section has an import button, a player for the current playblast and the version list, and the dot colour follows the status ## Blocked by - #158
crowmaki referenced this issue from a commit 2026-10-10 22:02:45 +00:00
Sign in to join this conversation.
No description provided.