# 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 `DashNleScene` that **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/`**. 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` / `.gif` files; 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_URL` embed (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_URL` embed plus the free ffmpeg → YouTube Live runbook. - **[Scene Library](/scenes)** — browse and watch saved map scenes (each plays back at `/watch/`). ## 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-llms` 2.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`.*