Bundle the ffmpeg sidecar #117
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
needs-info
needs-triage
question
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crowmaki/ai-studio#117
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#24
What to build
Ship ffmpeg with the app as a Tauri sidecar, as ADR-0003 decided: "An unmodified LGPL build ships as a Tauri sidecar and is called only by Rust."
Today nothing is bundled.
crates/studio-core/src/ffmpeg.rsalready looks for ffmpeg in this order:AI_STUDIO_FFMPEG.PATH.src-tauri/tauri.conf.json, however, has nobundle.externalBin. So posters, joined Voice clips, master stamping and proxies all depend on whatever ffmpeg the user has onPATH.This shows in development too. A
PATHffmpeg withoutlibopenh264fails twostudio-coreunit tests (ffmpeg::tests::a_proxy_is_h264_at_a_short_side_of_768_with_the_masters_audioandffmpeg::tests::a_proxy_of_a_small_master_keeps_its_size) withUnknown encoder 'libopenh264'. This was seen while working on #116. Proxies need OpenH264 whenever NVENC is not usable (ProxyEncoder).Pick a prebuilt, unmodified LGPL ffmpeg for Windows x64 that has
libopenh264, and NVENC (h264_nvenc) if possible. Fetch it at a pinned version with a checked hash, and bundle it under Tauri's sidecar naming (ffmpeg-<target-triple>.exe). Dev builds and tests should use the same binary, so local results don't depend onPATH.Acceptance criteria
src-tauri/binaries/ffmpeg-x86_64-pc-windows-msvc.exe. The binary is gitignored, not committed.tauri.conf.jsonlists it inbundle.externalBin, and a bundled build installs it next to the app's executable, whereFfmpeg::locatefinds it withoutAI_STUDIO_FFMPEGorPATH.tauri devandcargo testuse the fetched binary, for example by having the fetch step run first andlocate(or the test helper) fall back tosrc-tauri/binaries/. The two proxy tests above pass on a machine whosePATHffmpeg lackslibopenh264, or has no ffmpeg at all.libopenh264(and NVENC if it has it), anddetect_proxy_encoderstill picks NVENC only when it works.run-ai-studioskill says how to fetch the sidecar for development.Blocked by
None.
Use version: 9.0.2 from https://www.gyan.dev/ffmpeg/builds/