2plot Media
Map Scene Studio, NLE video editor & a 24/7 live camera — three video tools in one Dash 4 web app, live at [2plot.media](https://2plot.media).
2plot Media is a single web app that is really an operator system for video: author cinematic map scenes on a live map, cut clips on a frame‑accurate non‑linear editor, and run a cost‑effective 24/7 live camera — all behind one Dash 4 backend, one media plane, and one shared timeline engine. The three tools share the same NLE timeline and Canvas scene compositor, so a scene you direct, a clip you cut, and a feed you broadcast all live in the same place.
It is built on the dash-NLE-timeline components (the DashNleTimeline controller + the DashNleScene Canvas compositor) and dash-leaflet2 (the live director map), with first‑class AI/LLM + SEO wiring throughout.
Pick your surface:
- [🗺 Map Scene Studio](/scene-editor) — direct a flythrough over a live map.
- [🎬 NLE Video Editor](/editor) — upload, trim, composite, and export to mp4.
- [📺 Broadcast](/broadcast) — watch the live house channel and chat.
- [📡 Live Camera](/camera) — a hands‑on, browser‑only demo of how broadcasting works.
New here? Start with the [Map Scene Studio](/scene-editor) — it's the flagship.
---
🗺 Map Scene Studio (the flagship)
[Open the Map Scene Studio →](/scene-editor) (nav: Map Editor)
A browser director for map‑driven video, built on dash-leaflet2 and the dash-NLE-timeline components — the same timeline + scene engine the NLE editor runs on. You stage a scene on a live Leaflet map, then fly a cinematic camera between scenes — no render farm, no desktop app.
- Stage assets on the map — draw lines and areas, drop captions, and place images as geo‑anchored assets, all organized in a layer tree.
- Per‑scene basemaps — choose the basemap from a live tileset catalog with a rotating‑cube selector (tilesets sourced from [piratesbargain.com](https://piratesbargain.com)); the chosen basemap rides into the scene, so each scene can look different.
- Animated sprites — place looping GIF sprites geo‑anchored on the map; they animate on the map *and* in the preview, and fly with the camera.
- Capture a scene → a clip — 🎬 Capture freezes the map framing (a camera keyframe: center / zoom / bearing) plus that scene's assets into one timeline clip. Snap clips together to build the cut.
- Cinematic preview — the Preview composites a
DashNleScenethat flies the camera between scenes — establishing shots, route reveals, fly‑throughs — driven by each clip's keyframe. - AI Director (Claude) — describe a scene in plain language and Claude drafts whole scenes through focused director templates: cinematic, weather, trip, emergency, history, news (gated on
ANTHROPIC_API_KEY; a deterministic on‑brand template runs when no key is set, so the workflow always produces something). - Save, open, watch — 💾 Save a scene and it appears in the [Scene Library](/scenes); share it and it plays back at
/watch/<id>.
Durable storage uses Cloudflare R2 (blueprints / media) + Postgres (metadata) when configured, with a clean local‑JSON fallback in development — so the studio runs with zero cloud setup.
→ Open the [Map Scene Studio](/scene-editor) or browse the [Scene Library](/scenes).
---
🎬 NLE Video Editor
[Open the Video Editor →](/editor)
A real browser non‑linear editor on dash-NLE-timeline — the DashNleTimeline controller driving the DashNleScene Canvas compositor. Upload media, lay it on a frame‑accurate timeline, composite it, and export a single mp4.
- Direct‑to‑server uploads — drop in multiple
.mp4/.mp3/.png/.giffiles; heavy bytes never pass through Dash callbacks and land in a content‑addressed asset library where identical bytes dedup to one file. - Frame‑accurate timeline — place clips on a multi‑track timeline where time is integer frames (
seconds = frame / fps), with trim, split, move, delete, snapping, and keyboard shortcuts. - Hybrid DOM + Canvas preview — a composite preview draws every layer, each windowed to its clip's
[start, end). - On‑canvas transform gizmo — move / resize / rotate and adjust opacity per clip directly in the preview.
- Audio is fully supported — a synced audio engine plays clip audio and the audio of video clips, and audio uploads paint waveforms on the timeline.
- Your project is the EDL — the in‑memory clip list is the edit decision list. Export renders the EDL + media to one mp4 via a bundled static ffmpeg (and degrades gracefully to downloading the EDL if no binary is available).
→ Open the [NLE Video Editor](/editor), or read the [Editor Guide](/editor-guide).
---
📺 Live Broadcasting
[Watch the Broadcast →](/broadcast)
A real live pipeline on Cloudflare Stream Live: one persistent house channel with a stable playback URL, watched on [/broadcast](/broadcast) (with live chat for signed‑in viewers) and embedded across sister apps via one script tag.
- Watch + chat — [/broadcast](/broadcast) lights up the moment a stream starts; signed‑in users comment alongside. Offline, it falls back to a
CONFIG_STREAM_URLembed (YouTube Live / HLS) and shows past recordings. - Try it yourself — the [Live Camera demo](/camera) connects *your* camera and runs the studio's real compositor (drag overlays, pause card) with nothing ever transmitted.
- The Studio (owner) — a docking control room composites camera + overlays + pause cards on a program canvas and publishes it over WebRTC (WHIP) or OBS/RTMPS (the auto‑recorded path); recordings save into the video library in one click.
→ Open the [Broadcast](/broadcast), try the [demo](/camera), or follow the [Live Camera setup](/live-camera) runbook.
---
Documentation
- [Editor Guide](/editor-guide) — how the upload → place → scrub → trim → split → export flow works.
- [Live Camera Setup](/live-camera) — the
CONFIG_STREAM_URLembed plus the free ffmpeg → YouTube Live runbook. - [Scene Library](/scenes) — browse and watch saved map scenes (each plays back at
/watch/<id>).
Built with
- Dash 4.3 — pluggable backends; Flask in v1 (the FastAPI control plane is a later phase).
- Dash Mantine Components 2.8 — accessible, themeable UI.
dash-NLE-timeline— the timeline controller + Canvas scene compositor shared by the Map Scene Studio and the NLE editor.dash-leaflet2— the live director map behind the Map Scene Studio.dash-improve-my-llms2.0 —/llms.txt,/sitemap.xml,/robots.txt, and the MCP bridge.
---
*Pip Install Python LLC — built on Dash, Dash Mantine Components, dash-NLE-timeline, and dash-leaflet2.*
Note for AI agents: This is the static, prerendered view of an interactive Dash application served because we detected a non-JS user agent. Full prose docs:
- /about/llms.txt — LLM-friendly documentation
- /sitemap.xml
- /robots.txt