Stream scene
The frame is no longer "whole screen". Put your laptop camera as a corner inset over the phone feed, crop the edges, and build a vertical frame for TikTok next to the wide one for Chaturbate — without OBS.
Until now the frame was a single source at full screen: whatever the phone sent is what reached the platforms. The scene makes the frame explicit — you can put the laptop camera as an inset over the phone feed, crop the edges away, and build a vertical frame for platforms that want one.
The scene lives in the Stream tab — the Scene rail on the left, next to the frame.
The studio: frame in the middle, chat on the side
The Stream tab is laid out like a familiar broadcast desk:
- left — Scene: the scene list, that scene's layers and a single "+";
- middle — Frame: the big incoming-feed window, and the work surface at the same time — layers are dragged right on the picture the viewer will see;
- under the frame — the console: "Go live", "Record";
- right — Chat and the fan Dossier.
Any block can be undocked (the icon in its header) — it then floats above everything, drags by its header and resizes by its corner. The layout is remembered. The "собрать студию" button in the bottom-right corner puts everything back.
While you are live the frame is outlined in red and layer boxes fade to a thin contour: what matters then is the picture, not the markup.
Layer settings take over the right-hand side
Clicking a layer row (or double-clicking it on the frame) puts the studio into edit mode: the settings panel takes the place of chat, dossier and console.
- "Сохранить" — apply the scene and leave;
- "Выйти" — close the settings, the edit stays a draft.
Settings live in two places, split by the question they answer:
- on the right — what we show: text, file, deck cards, button captions;
- below, full width — how it looks and behaves: look, motion, "how often it appears", opacity, fit, cropping, object style.
Not a cosmetic choice. Landing objects carry as many controls as the constructor does (style, gradient, shadow, rotation), and they do not fit the narrow column: the page used to stretch and jump under the cursor. The studio now occupies exactly the screen, and every block scrolls on its own.
Which sections the bottom strip shows depends on the layer kind — only what that layer can actually do. A camera, for one, has no "look": a video stream has neither letter colour nor backdrop, so there is nothing to paint.
The frame diagram
Inside the panel there is a rectangle for the layout and the layers in it:
- drag the rectangle to move it;
- drag a corner or edge to resize;
- the list on the right is the order: higher in the list means higher in the frame.
The live picture belongs in the preview window — it plays the composed frame, exactly what the viewer sees. The diagram answers a different question: what sits where.
An empty scene is fine
As long as the scene is one source at full frame, your stream reaches the platforms as a byte-for-byte copy: we re-encode nothing, and the platform gets the picture exactly as your phone sent it. That is the default behaviour.
The inset: camera over phone
In the rail press "+" → "Живой источник". A rectangle appears in the corner.
Set its source to "Камера браузера" — the layer settings now hold a live preview, the list of cameras and the list of microphones.
Press "Включить камеру", pick the devices and press "Сохранить устройство" — next time this camera turns itself on.
Place and size the inset.
Press "Apply".
Picking a camera starts nothing
It is a setting, not a broadcast: the picture is yours alone, not a byte leaves the browser. Publishing begins when you press "В эфир" on the pult — the studio has exactly one air button.
The device choice has its own Save
It sits in the camera block, not in the settings header: camera and microphone are a fact of YOUR browser, not of the scene, and there is no reason to ship them into the scene (another laptop has other devices). The header's "Save" answers for the scene — with no pending edits it honestly reads "Сохранено".
The encoder address (RTMP)
The second source is "RTMP": a phone with Moblin, OBS, Larix, any encoder. Pick it in the same "Живой источник" layer and the address with the key opens under the frame — where other layers keep their look controls. Copy the string into the app and you are done.
The address is permanent: the receiving box may change, the string on the phone will not. Only the key changes, and only when you change it yourself.
The source called "Whoever is on air" is special: it is the feed that is currently going out to the platforms. It stays correct when you go live from the phone today and from the camera tomorrow — nothing to reconfigure.
Images and video in the frame
A layer is not only a live source. "Image" and "Video" take a file from your Media gallery (Design → Media gallery) — the same library you pick teasers from. Upload once, use it on the landing page and on air.
What people actually build with it:
- a logo or a frame — a transparent PNG in the corner. Transparency survives: the image sits on the video with no black box around it;
- a "back soon" standby — an image or a short video at full frame. The stream never stops: the audio stays live while the viewer sees the card. Remove the layer and the picture is back.
The file on air is not the file in your library
We prepare a separate copy for the frame: images up to 1920 px, video as a short muted loop up to 12 seconds and 1080 px. Otherwise a 4K clip shot on a phone would cost the server as much as the rest of the stream. The first time you go live after adding a file may take a couple of seconds longer — the copy is built once.
Video layers are always muted and looped: the audio on air is the live source, and two soundtracks at once mean the viewer hears neither.
Caption and timer
"Text and timer" is a live line drawn straight into the frame: your name, the rules, a goal, "back soon". The inspector holds the line itself, its colour, a plate behind it, and the time:
- "How long the stream has run" — counts up;
- "Countdown" — from the minutes and seconds you set, down to zero (never below).
The {таймер} token marks where the time goes in the line; without it the
time is appended at the end.
The count starts when the frame does
The timer counts from the moment the frame was composed, not from "I pressed the button yesterday". So editing the scene, or your phone reconnecting, restarts it — visibly and by design.
The caption is drawn on the scene diagram at the same size and colour it will have on air, so there is no guessing.
What can go into the frame
The "+" button is the only way in, and behind it a drop-down list:
| Item | What it is |
|---|---|
| Живой источник | RTMP (phone, OBS, any encoder) or the browser camera — full frame or an inset; the address with the key opens right below the frame |
| Картинка | a file from the Media gallery over the frame |
| Видео | a clip on loop, muted (up to 12 seconds) |
| Текст и таймер | a live line: air time or a countdown |
| Онлайн | a live viewer counter (see below) |
| Тизер | the landing teaser tile with its full style header |
| Колода | the landing deck — in the frame it flips through itself |
| Уведомление | the landing banner: avatar, line and a "link", slides in from the left |
| Виджет: липкая кнопка | the landing sticky CTA bar — it calls to action right inside the frame |
Why there is no Caption / Photo / Icon / Shape object
They would duplicate the live "Текст" and "Картинка" layers — only worse: a baked caption cannot tick. Icon and shape are landing decorations with no job in a broadcast frame. And the "247 online" badge was a plain lie on air, so a real counter replaced it.
Why the landing countdown widget is not offered
The landing countdown keeps its deadline per visitor, in their own browser. Baked into the frame it would freeze at the value it was captured with — a clock that does not run. A countdown that really ticks on air already exists: the "Текст и таймер" layer in countdown mode.
Landing objects in the frame
Teaser, deck and notification carry the constructor's full style header: fill and gradient, opacity, radius, border, shadow, rotation, backdrop blur — and the same inspector as the landing canvas.
The deck flips through itself. The viewer has no scroll, so instead of "stick" and "spines" it has one knob: seconds per card.
The notification slides in from the left, holds and leaves, over and over. No sound, no click-through: an overlay cannot be clicked.
What you see on the frame is what goes on air
Objects are drawn by the very page the server screenshots for the broadcast. This is not a "similar preview": the panel and the air run the same landing code.
How it reaches the video. Objects are baked into a transparent picture that is laid over the frame. Therefore:
- edits show up in the panel instantly and on air after Apply;
- objects carry no clock: a ticking timer is the separate "Caption and timer" layer, which is live;
- motion (deck, notification) is built as a loop: a still frame goes on air first, and a minute or two later the moving one replaces it — building the loop takes tens of seconds and runs in the background;
- there is no video object: a baked clip would be a freeze frame. For live video use the "Video" layer.
Cropping
The layer inspector has "Crop the source": four fields in percent of the original picture. That is how you drop unwanted edges, and how you get "closer".
Percent rather than pixels on purpose: the phone may send 720p instead of 1080p, and a crop in percent survives that.
Its own layers for every platform
At the top of the rail there is a scene list: "Общая" plus one per armed platform. What is allowed on your own page gets you banned on a cam site, so these are different sets of layers, not one set with caveats.
- The shared scene is composed into the frame: sources, insets, media and captions live there, and every platform receives it.
- A platform scene is laid over the finished frame for that platform only. It takes everything the shared scene takes except a live source inset: a ticking caption, a countdown, the viewer counter, a photo, a clip, landing objects.
Live on a platform is really live
A caption, a timer and the viewer counter on a platform keep ticking instead of freezing into a picture: that platform's frame is built by the same engine as the shared one. Platform scenes used to be baked into a single snapshot, which would have frozen anything live — that is why the "+" menu there used to be four times shorter.
A camera inset is deliberately absent: the same stream would have to be decoded again for every platform, and "six platforms cost the same as one" would stop being true. The inset lives in the shared scene — there is one source on air.
Disabled platforms stay in the scene list, marked "выкл". Otherwise their layers would be unreachable — neither viewable nor clearable — and would ride into the frame the moment the platform is switched back on.
The price stays honest: an empty platform scene changes nothing (the platform gets a byte copy), a non-empty one re-encodes that platform alone — and the chip says exactly that.
A platform has exactly one overlay
If a platform has its own studio layers, the old caption from its settings no longer goes on air — the caption designer says so itself.
A vertical frame per platform
The layout is chosen in the platform's own settings (the "Куда вещаем" card), and only where vertical is native: TikTok, Instagram Live, Telegram. Cam sites and subscription platforms have a horizontal room — 9:16 would give them black bars for the price of a separate encode, so the server refuses that choice.
As soon as one platform goes vertical, the scene list gains "Общая 9:16" — its own scene, not a crop of the wide one. Two vertical platforms share it.
A vertical frame costs its own encode
The wide and the vertical frame are composed by two separate processes on our server. Give the vertical layout only to the platforms that actually need it.
Who is in frame when both sources are live
The "В кадре: Решай сам · Приложение · Камера" pills appear in the cockpit exactly when the app and the browser camera are broadcasting at the same time. One source — nothing to choose, no pills.
- Решай сам (default) — whoever publishes is in frame.
- Приложение / Камера — a hard choice: this source goes to the platforms even while the other one is live.
The choice is one per broadcast, not per platform: two sources at once would mean two different shows. It also decides whose AUDIO the viewer gets — so "why can't they hear me" is fixed here, not by switching a source off at random.
Online: how many are watching right now
The "Онлайн" layer is an ordinary line with an {онлайн} token; the server
substitutes the number on every reconcile. You can add the token to any text:
The number updates during the broadcast, every ten seconds, and the frame does
not blink: the line lives in a file and the caption re-reads it by itself. Go live
at zero and the number catches up instead of staying zero all night.
Смотрят {онлайн}.
The number adds up honestly:
- where the platform reports its viewer count, we take its number (today Chaturbate does);
- where it does not, we count unique people seen in chat over the last five minutes. That is knowingly lower than the real audience: lurkers are invisible.
The "Эфир сейчас" card shows the split per platform and where each number came from. Your own lines are excluded — otherwise you could inflate your own audience just by typing in chat.
Zero viewers and nothing to count are different things
While no platform chat is connected the counter shows 0 and says so plainly: we are not looking anywhere — which is not the same as "nobody is watching". Only platforms whose room we actually read are counted.
Layer look and motion
Below the frame, across the full width of the studio, sits the "Оформление · Движение" strip — it appears whenever layer settings are open.
Look — four ready-made styles: Стекло (glass), Неон (neon), Плотный (solid), Без подложки (no backdrop). A click restyles the selected layer; the "ко всем слоям сцены" checkbox spreads it across the whole scene so the frame reads as one piece. A preset is not "remembered": it simply sets the same fields you can then tweak by hand.
Motion — how the layer lives in the frame:
| Motion | What it does | Available to |
|---|---|---|
| Парит | drifts up and down | every layer |
| Качается | the same, side to side | every layer |
| Мерцает | breathes with opacity | captions and objects |
| Дышит | scales up a little and back | objects only |
| Выезжает и уходит | slides in from the left, holds, leaves | objects only |
The "Цикл" slider sets the full round trip (1–20 seconds).
Why the motion list differs per layer
A live frame is composed in real time, and its motion is drawn by the server as a formula inside the frame coordinate. That is free, but it only expresses a shift (plus opacity for captions). Scaling and sliding are drawn by the browser, which is why objects have them: objects reach the air as a ready-made loop.
The bottom live layer does not drift
The bottom layer is the frame's background and the server lays it out motionless. The panel says so outright instead of pretending the setting applied. Move the layer up, or put the motion on a layer above it.
Letter styling: depth, neon, shine
The "Текст и таймер" layer gets an "Оформление букв" section in the same bottom strip — five styles plus a shine toggle:
| Style | How it looks |
|---|---|
| Плоский (flat) | plain letters in their own colour |
| Контур (outline) | dark outline: readable over anything, even bright skin |
| Тень (shadow) | a soft offset shadow that lifts the letters off the frame |
| Объём (depth) | letters extrude into a darker shade of THEIR OWN colour |
| Неон (neon) | a glowing tube: soft halo outside, bright core inside |
The "блик пробегает по буквам" checkbox adds a highlight that sweeps across the caption every three seconds. It combines with any style — "depth + shine" is the common pick.
It costs the frame nothing
The styling is drawn with the same letters as the caption itself, just in several passes — no baking, no extra input, no added delay. The shine is computed over the area of the CAPTION rather than the frame, so it is nearly free too.
The extrusion shade comes from the caption's own colour, never black: a black shadow under a coloured caption reads as dirt. All of it works together with motion and scheduling — the shine hides along with the caption.
How often a layer appears
Section "Появление" in the same bottom strip. By default a layer hangs in the frame for the whole broadcast; the "появляется по расписанию" checkbox turns on two sliders:
- "Каждые …" — the period, from 5 seconds to 10 minutes;
- "Держится …" — how long the layer is visible inside that period.
That is how you build "the notification pops up once a minute" or "the link banner shows for 10 seconds every three minutes" — any promo that should not hang around all the time. Such a layer gets a "6 с каждые 30 с" caption in the list, otherwise it would look like it had vanished from the frame.
The schedule costs nothing
Between appearances the server simply does not draw that layer — no re-composition, no extra load. Even landing objects are not re-baked: the ready-made picture is what gets hidden.
The bottom live layer cannot be hidden
It is the frame's background: hiding it means showing the viewer black. The panel says so plainly. Lift the layer above the live source instead.
Your source is visible BEFORE you go live
The browser camera shows up in the big frame the moment it is switched on — long before anything is sent anywhere. The frame carries a yellow "локально" (local) chip: only the model sees this, nothing has reached the box yet. Going live is still the cockpit's job.
Once the box starts receiving, the local frame steps aside and the real incoming picture plays — otherwise the screen would show two frames a second apart.
When there is no picture at all, the hint follows the scene: a camera in the scene says "switch the camera on in its layer settings", RTMP says "start the broadcast in your app", an empty scene says "add a live source".
The saved camera may not exist on this machine — the webcam got unplugged, or she sat down at a different laptop. We then take whatever device is available, erase the dead choice and say so in an amber line. Next to it there is "забыть устройство" (forget device) for going back to "let the browser decide".
Delete the camera layer and the camera goes off. The laptop light dies with the layer; no separate button for it. On air it works differently: while the edit is unapplied the live inset keeps running (a stray click must not cut the broadcast), and the camera is released on "Применить". Switching scene tabs (a platform, the vertical frame) never touches the camera.
The preview window: under a second of delay
The frame in the middle of the studio plays over WebRTC, the same way a video call works: a fraction of a second of delay, so you fix the light and see it immediately.
If the network cannot make a direct connection (corporate and some mobile networks), the window falls back on its own and says so with a "запасной путь" chip. Delay there is a few seconds — the price of the detour, not a fault.
Viewer delay is a different story
This window shows what leaves OUR box. From there the stream goes to the platforms, and each adds its own delay — usually 5–30 seconds on cam sites and Twitch, and that part is not ours to control.
The cockpit under the frame says it plainly: "до площадки <1 с · зритель +5–30 с". The first number is ours, measured on the box; the second is the platform's own buffer.
Six platforms cost the same as one. The frame is composed once and fanned out as a byte copy — measured on six targets, the delay was the same as on one.
What "Apply" does
The frame is composed once and fanned out to every platform on that layout. So five platforms cost no more than one — but re-composing the frame is visible to the viewer as a brief stutter.
That is why edits are not saved automatically: build the whole scene, then press Apply once. Until you do, the stream keeps running on the previous scene, and the text next to the button says so plainly.
If there is no signal at the moment you save, the panel says "Will apply once the signal arrives". The scene is already stored — it ships with the next publication.
The "Re-composing" / "No re-encode" chip
At the top of the panel, an honest answer to "will this hurt my picture?":
- No re-encode (green) — the scene changes nothing, the stream is copied byte for byte;
- Re-composing (amber) — we decode and encode the frame on the server. That is how the inset, the crop and the vertical frame work; there is no other way to build them.
What the scene cannot do yet
- web widgets by URL (tip alerts, goal counters, tickers) — that is the next step;
- audio from the inset or from a video layer — audio always comes from the source that is on air;
- the constructor's own animations: a landing button's "pulse" does not travel to the air — layer motion is set in the "Оформление · Движение" strip, and that set is its own;
- long videos: a layer takes the first 12 seconds and loops them.
Captions and chat widgets still live in their own editor — overlays. They are placed on top of the composed frame, so the scene does not break them.
Your stream address
One address for any encoder — OBS, Moblin, Larix, Streamlabs. We take the feed, show you a preview, and fan it out to the platforms when you say so.
Chat overlay (second screen)
Show your merged "All" live chat — every platform in one window — on a second screen while you stream from your phone.