# Life2Film > AI video montage that runs on the device. Point it at videos already in your camera roll and it > finds the moments worth keeping, cuts them to the beat of a track, and never uploads the footage. Two products, one engine: - **Life2Film** — iPhone app. Analysis runs on the phone using Apple's Vision framework, a compact neural model for grouping faces, and a native engine that assembles the timeline. No account, no upload, works in airplane mode. - **Life2Film Studio** — macOS desktop app, public beta. Built for large archives: 30 measurements per frame, ensemble scene segmentation, montage assembly, and direct import from the Apple Photos library. Free while in beta. What makes it different from other video editors: - The analysis is local. Original video and photos never leave the device; there is no server they could be sent to. The only thing that can leave, and only if the user configures an LLM provider with their own API key, is a text description of clips — timings and short scene labels. - Cuts land on the beat. Tempo and downbeats are detected, and edits are placed where the music turns rather than at fixed intervals. - The calendar wheel replaces the endless scroll: spin to any month or day and see what was actually filmed then. ## Pages - [Home](https://life2film.com/): what the app does, in three steps - [About](https://life2film.com/about): why it exists, the film-made-of-films idea - [Studio](https://life2film.com/studio): the desktop analyser — features it measures, install - [Privacy](https://life2film.com/privacy): what stays on device, what can leave, and when - [Engine](https://life2film.com/engine/): the analysis engine as an npm package, with a skill for coding agents - [Support](https://life2film.com/support): contact and common questions - [Blog](https://life2film.com/blog): notes on the topics below The site is also available in Spanish, Portuguese, Indonesian, Arabic, Russian and Turkish (/es, /pt, /id, /ar, /ru, /tr); en, ar, es, id, pt, ru, tr for the tools; the engine page is English only. Blog posts are English only. ## Articles - [Where your footage actually goes when you edit on your phone](https://life2film.com/blog/where-your-footage-goes/) Which mobile editors upload clips to a server and which do not, why "we delete it after processing" is a weaker guarantee than local processing, and two ways a reader can verify any app's claim (airplane mode; the shape of the delay). - [How to cut video to the beat, by hand and automatically](https://life2film.com/blog/cut-video-to-the-beat/) Why cuts landing off the downbeat read as amateur, a manual method using waveform markers, what beat-detection computes (onset envelope, periodicity, downbeat selection), and the three ways tools apply it: snap-to-grid, snap-on-edit, analyse-then-place. - [The automatic montage tools that came and went](https://life2film.com/blog/automatic-montage-tools/) History of automatic video montage: Magisto (2011, cloud service, bought by Vimeo in 2019, integration discontinued Dec 2024), GoPro Quik, Google Photos Memories. Why the premise held up while the products did not, and what changed when phones became able to run the analysis. ## Free tools (browser, no upload) 7 tools that run entirely in the visitor's browser through WebCodecs and WebAssembly. No server is involved: no upload, no size limit imposed by a plan, no queue, no watermark, no sign-up. Each page is also available as markdown by appending `.md` to its address — e.g. https://life2film.com/tools/video-compressor.md — or by requesting it with `Accept: text/markdown`. The things footage usually needs before anything else. - [Trim Video](https://life2film.com/tools/video-trimmer/): Drag the handles to the part you want, preview it, save it. Audio stays in sync. - [Compress Video](https://life2film.com/tools/video-compressor/): Make a file smaller and see exactly what it cost. No size limit, because there is no server. - [Video to MP3](https://life2film.com/tools/video-to-mp3/): Pull the audio out of a video and keep it as MP3, WAV or OGG. - [Convert Video](https://life2film.com/tools/video-converter/): MP4, WebM and MOV in any direction, or pull the audio out as WAV. These read what is in the video, which is the part other tools skip. - [Video Splitter](https://life2film.com/tools/video-splitter/): Cut a long video into Reels or Shorts that start on a shot change instead of every 30 seconds, ranked by picture quality. - [BPM Detector](https://life2film.com/tools/bpm-detector/): Find a track’s tempo and the time of every beat, then send the grid to Resolve, Premiere, Final Cut or Audacity as markers. - [Scene Detector](https://life2film.com/tools/scene-detector/): Find every cut in a video and get the shot list with thumbnails, timecodes and quality scores. ## Engine, for building on The analysis behind the last three tools is Rust compiled to WebAssembly, published as an npm package (currently 0.1.2): ``` npm i life2film-engine ``` Nineteen exports: `detect_beats`, `analyze_audio`, `beat_sync_timeline`, three scene-detection families, `score_frame` (31 per-frame measurements), `select_segments`, `compose_montage`, OpenTimelineIO in and out. It analyses; it does not decode or encode — pair it with [mediabunny](https://mediabunny.dev) (MIT) for that, which is what these tool pages do. Everything below, plus the full skill, in one document: https://life2film.com/llms-full.txt The package ships a skill for coding agents at `node_modules/life2film-engine/SKILL.md`, also readable at https://life2film.com/engine/skill.md and explained at https://life2film.com/engine/ Licence: PolyForm Noncommercial. Free for personal projects, study, research, charities and public institutions. Commercial use needs a separate licence — write to info@life2film.com and you will probably get one. ## What each tool knows Details worth carrying if you are building something similar. These are measured, not estimated. ### Trim Video https://life2film.com/tools/video-trimmer.md - Three modes: copy (no re-encode), re-encode (smaller file), and fit a target size. - Copying passes the picture through untouched: measured 0.20s against 0.60s for a re-encode of the same 3 seconds. - Playback always starts exactly where you set it, a copied cut does NOT snap to a keyframe. - A copied mid-group cut carries frames back to the previous keyframe, so it is larger: 6.7 MB copied against 4.1 MB re-encoded on a file with keyframes 8 seconds apart. - Re-encoding requires forceTranscode: true, or mediabunny will correctly decide the transcode is unnecessary and copy instead. - Accepts times as 12.5, 1:04 or 1:04.5. ### Compress Video https://life2film.com/tools/video-compressor.md - Target a size (10 MB Discord, 16 MB WhatsApp, 25 MB email, 50 MB Nitro Basic) or pick a quality. - Size = bitrate x duration, so the required bitrate follows from the length of the video. - Aims at 96% of the limit: a file of exactly 10.00 MB is still rejected by a 10 MB limit. - Measures the first pass and re-encodes once with a correction if it missed by over 4%. - Refuses impossible targets and reports the smallest honest size instead. - Warns when the source is already below the bitrate its resolution needs, re-encoding would enlarge it. - Measured: a 17.7 MB 1080p file at 12 Mbps came out 9.4 MB against a 10 MB target. ### Video to MP3 https://life2film.com/tools/video-to-mp3.md - MP3 uses LAME compiled to WebAssembly, loaded only when MP3 is chosen. - WAV size is sampleRate x 2 bytes x channels, there is no bitrate to pick. - Vorbis lands about 30% under its nominal bitrate, being variable-rate. - Size predictions read the real channel count and sample rate from the file; assuming stereo doubles the estimate for a mono source. - A bitrate higher than the source was recorded at enlarges the file without improving it. ### Convert Video https://life2film.com/tools/video-converter.md - Encoding support is per-browser: check with getFirstEncodableVideoCodec before starting, not after 70% of a long encode. - A container (.mov) is not a codec. Browsers handle H.264 and often HEVC, but never ProRes or camera raw. - MP4 to MOV can often be done without touching the video; changing codec cannot. ### Video Splitter https://life2film.com/tools/video-splitter.md - Shot boundaries come from the Life2Film engine (Rust compiled to WebAssembly), not from a timer. - Sampling rate dominates accuracy: at 2 samples/second boundaries land 1-3 seconds out; at 10/second they land on the frame. All sixteen detection algorithms were wrong the same way at the low rate. - Uses a coarse pass to find candidates, then a tight pass at ten times the resolution around each one. - Clips never cut inside a shot; short tails are absorbed into the previous clip. - Optional 9:16 crop takes the centre of the frame, there is no face tracking. ### BPM Detector https://life2film.com/tools/bpm-detector.md - Takes mono f32 PCM, which is exactly what AudioContext.decodeAudioData gives you. - Analyse at 22050 Hz: the onset envelope lives far below that, and the source rate costs several times the memory for the same answer. - Exports the beat grid as EDL, OTIO, FCPXML, Audacity labels, CSV or JSON. - Tempo is genuinely ambiguous (140 BPM is also 70 in half time) so both readings are shown. - Verified against a synthetic 120 BPM file: reads 120.0 and finds 24 beats in 12 seconds. ### Scene Detector https://life2film.com/tools/scene-detector.md - Exports to EDL (Resolve, Premiere), OTIO (Resolve, Avid, Premiere), FCPXML, Audacity labels, CSV and JSON. - Markers land on whole frames, so the export frame rate changes where they sit, a grid at 25 fps sits up to 20 ms off in a 30 fps sequence. - Ten-minute ceiling: each sample is a seek, costing tens of milliseconds. ## Install - iPhone: App Store (submitted, pending review) - macOS: `brew install --cask fortunto2/tap/life2film-studio`, or the DMG from https://github.com/fortunto2/life2film-landing/releases — Apple Silicon, macOS 13+, signed and notarised. ## Maker SuperDuperAi, Corp. — Delaware, USA. info@life2film.com