Сцена эфира
Кадр перестал быть «весь экран». Врезка камеры поверх телефона, кадрирование, вертикальный кадр под TikTok рядом с широким под Chaturbate — и всё это без OBS.
До сих пор кадр был один и всегда во весь экран: что отдал телефон, то и уехало на площадки. Сцена делает кадр явным — теперь можно положить камеру ноутбука врезкой поверх телефона, обрезать лишнее по краям и собрать вертикальный кадр для площадок, которым нужна вертикаль.
Сцена живёт во вкладке Stream — рельсом Сцена слева, рядом с кадром.
Студия: кадр в центре, чат сбоку
Вкладка Stream собрана как привычный пульт трансляции:
- слева — Сцена: список сцен, слои этой сцены и одна кнопка «+»;
- в центре — Кадр: большое окно приёма, и одновременно рабочий стол — слои двигаются прямо по картинке, которую увидит зритель;
- под кадром — пульт: «В эфир», «Запись»;
- справа — Чат и Досье фана.
Каждый блок можно открепить (иконка в его шапке) — он поплывёт поверх всего, его можно таскать за шапку и тянуть за угол. Раскладка запоминается. Кнопка «собрать студию» в правом нижнем углу возвращает всё по местам.
Пока идёт раздача, кадр обведён красным, а рамки слоёв гаснут до тонкого контура: смотреть нужно на картинку, а не на разметку.
Настройка слоя занимает правую часть
Клик по строке слоя (или двойной клик по нему на кадре) переводит студию в режим правки: место чата, досье и пульта занимает панель настроек.
- «Сохранить» — применить сцену и выйти;
- «Выйти» — закрыть настройки, правка останется черновиком.
Настройки разложены по двум местам, и это разделение по вопросу:
- справа — что показываем: текст, файл, карточки колоды, подписи кнопки;
- снизу, во всю ширину, — как это выглядит и как себя ведёт: оформление, движение, «как часто появляется», прозрачность, вписка, кадрирование, стиль объекта.
Так сделано не ради красоты. У объектов лендинга настроек столько же, сколько в конструкторе (стиль, градиент, тень, поворот), и в узкую колонку они не помещаются: страница от них вытягивалась и прыгала под курсором. Теперь студия занимает ровно экран, а прокрутка есть у каждого блока своя.
Разделы нижней полосы зависят от вида слоя — показываем только то, что этому слою правда доступно. У камеры, например, нет «оформления»: у видеопотока нет ни цвета букв, ни подложки, и красить в нём нечего.
Слои на кадре
- тяни прямоугольник — переставить;
- тяни за угол или край — размер;
- список слева — порядок: кто выше в списке, тот выше в кадре.
Пустая сцена — это нормально
Пока в сцене один источник во весь кадр, эфир уходит на площадки побайтовой копией: мы ничего не пережимаем, площадка получает картинку такой, какой её отдал твой телефон. Это и есть поведение по умолчанию.
Врезка: камера поверх телефона
В рельсе нажми «+» → «Живой источник». Появится прямоугольник в углу.
Выбери у него источник «Камера браузера» — прямо в настройке слоя появится живой кадр, список камер и список микрофонов.
Нажми «Включить камеру», выбери устройства и нажми «Сохранить устройство» — в следующий раз эта камера включится сама.
Поставь врезку на место и задай размер.
Нажми «Применить».
Выбор камеры ничего не запускает
Это настройка, а не эфир: кадр виден только тебе, наружу не уходит ни байта. Публикация начнётся, когда нажмёшь «В эфир» в пульте — кнопка эфира на всю студию одна.
У выбора устройства своя кнопка «Сохранить»
Она в блоке камеры, а не в шапке настройки: камера и микрофон — это факт ТВОЕГО браузера, а не сцены, и в сцену им ехать незачем (на другом ноутбуке устройства другие). Кнопка «Сохранить» в шапке отвечает за сцену — когда в ней нет правок, она честно показывает «Сохранено».
Адрес для энкодера (RTMP)
Второй источник — «RTMP»: телефон с Moblin, OBS, Larix, любой энкодер. Выбери его в том же слое «Живой источник», и под кадром откроется адрес с ключом — там, где у других слоёв оформление. Скопировала строку в приложение — и всё.
Адрес постоянный: сменится бокс приёма — строка в телефоне останется прежней. Меняется только ключ, и только когда ты сама его сменишь.
Источник «Кто в кадре» — особый: это тот поток, который прямо сейчас идёт на площадки. Он остаётся правильным, когда ты сегодня вышла с телефона, а завтра с камеры, — ничего перенастраивать не нужно.
Картинка и видео в кадре
В сцену кладётся не только живой источник. Кнопки «Картинка» и «Видео» берут файл из «Галереи медиа» (раздел Дизайн → Галерея медиа) — той же библиотеки, из которой ты выбираешь тизеры для лендинга. Залила один раз — используешь и там, и в эфире.
Что с этим делают чаще всего:
- логотип или рамка — картинка с прозрачным фоном в углу кадра. Прозрачность сохраняется: PNG ложится поверх видео без чёрного прямоугольника;
- заглушка «сейчас вернусь» — картинка или короткое видео во весь кадр. Эфир при этом не прерывается: звук продолжает идти живой, а зритель видит заставку. Убрала слой — вернулась картинка.
Файл в кадре — не тот же файл, что в библиотеке
Под эфир мы готовим отдельную копию: картинку до 1920 px, видео — короткий немой луп до 12 секунд и до 1080 px. Иначе загруженный с телефона ролик 4K съедал бы на сервере столько же, сколько весь остальной эфир. Первый выход в эфир после добавления файла может занять на пару секунд больше — копия готовится один раз.
Видео в слое всегда без звука и по кругу: звук в эфире — это живой источник, а два звука одновременно означали бы, что зритель не слышит ни одного.
Надпись и таймер
Кнопка «Текст и таймер» — живая строка прямо в кадре: имя, правила, цель, «скоро вернусь». В инспекторе — сама строка, цвет, плашка за текстом и время:
- «Сколько идёт эфир» — счётчик вверх;
- «Обратный отсчёт» — от заданных минут и секунд до нуля (ниже нуля не уходит).
Метка {таймер} задаёт место времени в строке: До шоу {таймер} осталось.
Не поставила метку — время допишется в конец.
Счёт идёт от начала сборки кадра
Таймер считает от момента, когда собрался кадр, а не от «нажала кнопку вчера». Значит правка сцены или обрыв связи с телефоном начинают отсчёт заново — это видно сразу и это ожидаемо.
Надпись видно прямо на схеме кадра — тем же кеглем и цветом, каким она уйдёт в эфир. Подбирать размер вслепую не нужно.
Что можно положить в кадр
Кнопка «+» — единственная точка входа, за ней выпадающий список:
| Пункт | Что это |
|---|---|
| Живой источник | RTMP (телефон, OBS, любой энкодер) или камера браузера — целиком или врезкой; адрес с ключом открывается тут же, под кадром |
| Картинка | файл из «Галереи медиа» поверх кадра |
| Видео | ролик по кругу и без звука (до 12 секунд) |
| Текст и таймер | живая строка: время эфира или обратный отсчёт |
| Онлайн | живой счётчик зрителей (см. ниже) |
| Тизер | карточка-дразнилка лендинга со всей её стилевой настройкой |
| Колода | та же колода, что на лендинге, — в кадре листается сама |
| Уведомление | баннер лендинга: аватар, строка и «ссылка», вылезает слева |
| Виджет: липкая кнопка | тот же CTA-бар, что снизу на лендинге — зовёт по ссылке прямо в кадре |
Почему в списке нет «Надписи», «Фото», «Иконки» и «Фигуры»
Они повторяли бы живые слои «Текст» и «Картинка» — только хуже: выпеченная надпись не умеет тикать. Иконка и фигура — украшения лендинга, в кадре эфира им работы нет. А плашка «247 online» была прямой ложью в кадре, и вместо неё появился настоящий счётчик.
Почему нет виджета-счётчика с лендинга
Обратный отсчёт лендинга считает дедлайн у каждого посетителя своего браузера. Выпеченный в кадр, он замёрз бы на снятом значении — часы, которые не идут. Живой отсчёт в эфире уже есть и правда тикает: слой «Текст и таймер» в режиме «Обратный отсчёт».
Объекты лендинга в кадре
У тизера, колоды и уведомления — вся стилевая шапка конструктора: заливка и градиент, прозрачность, скругление, рамка, тень, поворот, размытие подложки. Правит их тот же инспектор, что на канве лендинга.
Колода в кадре листается сама. Прокрутки у зрителя нет, поэтому вместо «прилипания» и «корешков» у неё одна ручка — секунд на карточку.
Уведомление вылезает слева, держится и уходит, и так по кругу. Звука и перехода в кадре нет: наложение не кликается.
Что видно на кадре — то и уйдёт в эфир
Объекты рисует та же страница, которую сервер снимает для трансляции. Это не «похожий предпросмотр»: и в панели, и в эфире работает один и тот же код лендинга.
Как это попадает в видео. Объекты выпекаются в прозрачную картинку и ложатся поверх кадра. Поэтому:
- правки видны в панели сразу, а в эфире — после «Применить»;
- времени в объектах нет: тикающий таймер — это отдельный слой «Текст и таймер», он живой;
- движение (колода, уведомление) собирается лупом: сначала в эфир идёт неподвижный кадр, а через минуту-другую его сменяет движущийся — сборка лупа занимает десятки секунд и идёт фоном;
- видео-объекта нет: выпеченный ролик был бы стоп-кадром. Для живого видео есть слой «Видео».
Кадрирование
В нижней полосе, раздел «Кадр слоя» — «Кадрировать источник»: четыре поля в процентах от исходной картинки. Так убираются лишние края и так же делается «поближе». Там же — прозрачность слоя и вписка.
Проценты, а не пиксели, намеренно: телефон может отдать 720p вместо 1080p, и кадрирование в процентах от этого не поедет.
Свои слои на каждую площадку
Вверху рельса — список сцен: «Общая» и по одной на каждую вооружённую площадку. На кам-сайте нельзя то, что можно у себя, поэтому это разные наборы слоёв, а не один с оговорками.
- Общая сцена собирается в кадр: там живут источники, врезки, медиа и надписи. Её получают все площадки.
- Площадочная сцена докладывается поверх готового кадра только этой площадке. В ней можно всё то же самое, кроме врезки живого источника: строка с таймером, счётчик зрителей, фото, ролик, объекты лендинга.
Живое у площадки — правда живое
Строка, таймер и счётчик зрителей на площадке тикают, а не застывают картинкой: её кадр собирает тот же движок, что и общий. Раньше площадочная сцена выпекалась одним снимком, и всё живое в ней замерло бы — поэтому в «+» и было вчетверо меньше пунктов.
Врезки камеры у площадки нет намеренно: тот же поток пришлось бы декодировать заново на каждую площадку, и «шесть площадок стоят столько же, сколько одна» перестало бы быть правдой. Врезка живёт в общей сцене — источник в эфире один.
В списке сцен видны и выключенные площадки — с пометкой «выкл». Иначе их слои были бы недосягаемы: ни посмотреть, ни очистить, — а при включении площадки они въехали бы в кадр как есть.
Цена честная: пустая площадочная сцена ничего не меняет (площадка получает побайтовую копию), а непустая включает пережатие только у неё — плашка так и говорит: «Площадка пережимается».
Наложение у площадки одно
Если у площадки есть свои слои студии, старая надпись на видео из её настроек в эфир не идёт — об этом прямо написано в самом дизайнере надписи.
Вертикальный кадр под площадку
Раскладку задают в настройках самой площадки (карточка «Куда вещаем»), и только там, где вертикаль родная: TikTok, Instagram Live, Telegram. У кам-сайтов и подписочных площадок комната горизонтальная — 9:16 дал бы им чёрные поля по бокам за отдельное кодирование, поэтому сервер такой выбор отклоняет.
Как только вертикаль появилась хотя бы у одной площадки, в списке сцен добавится «Общая 9:16» — отдельная сцена, а не обрезок широкой. Две вертикальные площадки делят её на двоих.
Вертикаль стоит отдельного кодирования
Широкий и вертикальный кадры собираются двумя разными процессами на нашем сервере. Ставь вертикаль только тем площадкам, которым она действительно нужна.
Кто в кадре, когда живы оба источника
Пилюли «В кадре: Решай сам · Приложение · Камера» появляются в пульте ровно тогда, когда одновременно вещают и приложение, и камера браузера. Один источник — выбирать нечего, и пилюль нет.
- Решай сам (по умолчанию) — кто публикует, тот и в кадре.
- Приложение / Камера — жёсткий выбор: этот источник идёт на площадки, даже если рядом вещает второй.
Выбор один на эфир, а не на площадку: два источника одновременно означали бы два разных эфира. И он же решает, чей ЗВУК уйдёт зрителю — поэтому «почему меня не слышно» лечится здесь, а не выключением одного из источников наугад.
Онлайн: сколько смотрят прямо сейчас
Слой «Онлайн» — обычная строка с меткой {онлайн}, число подставляет сервер
на каждой сверке. Метку можно дописать в любой текст: Смотрят {онлайн}.
Число обновляется прямо в эфире, раз в десять секунд, и кадр при этом не мигает: строка живёт в файле, а надпись перечитывает его сама. Вышла при нуле — цифра догонит, а не останется нулём до конца эфира.
Число складывается честно:
- где площадка сама отдаёт количество зрителей — берём её число (сегодня так умеет Chaturbate);
- где нет — считаем уникальных, кого видели в чате за последние пять минут. Это заведомо меньше настоящего онлайна: молчащих в чате не видно.
В карточке «Эфир сейчас» видно разбивку по площадкам и откуда взято каждое число. Своих реплик в счёт не берём — иначе можно было бы накрутить себе онлайн, просто печатая в чат.
Ноль зрителей и «считать не по чему» — разные вещи
Пока ни один чат площадки не подключён, счётчик показывает 0 и пишет «считать не по чему»: мы никуда не смотрим — это не то же самое, что «тебя никто не смотрит». Считаются только те площадки, чью комнату мы правда читаем.
Оформление и движение слоёв
Под кадром, во всю ширину студии, лежит полоса «Оформление · Движение» — она появляется, когда открыта настройка слоя.
Оформление — четыре готовых вида: Стекло, Неон, Плотный, Без подложки. Клик перекрашивает выбранный слой; галочка «ко всем слоям сцены» разносит вид по всей сцене — чтобы кадр читался как одно целое. Пресет не «запоминается»: он просто выставляет те же поля, которые дальше можно править руками.
Движение — как слой живёт в кадре:
| Движение | Что делает | Кому доступно |
|---|---|---|
| Парит | плавно качается вверх-вниз | всем слоям |
| Качается | то же, влево-вправо | всем слоям |
| Мерцает | дышит прозрачностью | тексту и объектам |
| Дышит | чуть увеличивается и возвращается | только объектам |
| Выезжает и уходит | показался слева, подержался, уехал | только объектам |
Ползунок «Цикл» задаёт длительность полного круга (1–20 секунд).
Оформление букв: объём, неон, блик
У слоя «Текст и таймер» в той же нижней полосе есть раздел «Оформление букв» — пять видов и отдельная галочка блика:
| Вид | Как выглядит |
|---|---|
| Плоский | просто буквы своим цветом |
| Контур | тёмная окантовка: читается на любом фоне, даже на светлой коже |
| Тень | мягкая тень со сдвигом, буквы отрываются от кадра |
| Объём | буквы уходят вглубь тёмным оттенком СВОЕГО цвета |
| Неон | светящаяся трубка: мягкий ореол вокруг, светлая сердцевина внутри |
Галочка «блик пробегает по буквам» добавляет светлую полосу, которая раз в три секунды проходит по надписи. Она комбинируется с любым видом: «объём + блик» — самое частое сочетание.
Это ничего не стоит кадру
Оформление рисуется теми же буквами, что и сама надпись, — просто в несколько проходов. Ни выпечки, ни лишнего входа, ни задержки: объём и неон дешевле, чем одна картинка в кадре. Блик считается по площади НАДПИСИ, а не кадра, поэтому он тоже почти бесплатен.
Тень объёма берётся от цвета самих букв, а не чёрная: под цветной надписью чёрная тень выглядит грязью. Всё это работает вместе с движением и расписанием — блик гаснет вместе с надписью.
Как часто слой появляется
Раздел «Появление» в той же нижней полосе. По умолчанию слой висит в кадре весь эфир; галочка «появляется по расписанию» включает два ползунка:
- «Каждые …» — период, от 5 секунд до 10 минут;
- «Держится …» — сколько слой виден внутри периода.
Так делается «уведомление вылезает раз в минуту», «баннер со ссылкой показывается на 10 секунд каждые три минуты» и вообще любая реклама, которая не должна висеть всё время. В списке слоёв у такого слоя появляется подпись вида «6 с каждые 30 с» — иначе он выглядел бы пропавшим из кадра.
Расписание ничего не стоит
Между появлениями сервер просто не рисует этот слой — ни пересборки кадра, ни лишней нагрузки. Даже у объектов лендинга картинка не перепекается: гасится уже готовая.
Самый нижний живой слой погасить нельзя
Он фон кадра: погасить его значит показать зрителю чёрное. Панель скажет об этом прямо. Подними слой выше живого источника.
Почему список движений у слоёв разный
Живой кадр собирается в реальном времени, и движение ему рисует сам сервер — формулой прямо в координате кадра. Это бесплатно, но так выражается только сдвиг (а у текста ещё и прозрачность). Масштаб и выезд рисует браузер, поэтому они есть у объектов: те уезжают в эфир готовым лупом.
Самый нижний живой слой не качается
Нижний слой — это фон кадра, сервер раскладывает его неподвижно. Панель скажет об этом прямо, а не сделает вид, что настройка применилась. Подними слой выше или положи движение на слой поверх.
Свой кадр видно ДО эфира
Камеру браузера видно в большом кадре сразу, как только она включена, — ещё до того, как что-то куда-то поехало. Кадр подписан жёлтым чипом «локально»: это видит только модель, на бокс поток пока не уходит. Раздачу по-прежнему включает пульт.
Когда приём начался, локальный кадр уходит и играет то, что реально пришло на бокс, — иначе на экране было бы два кадра с секундой разницы.
Если кадра нет вовсе, подсказка зависит от сцены: камера в сцене — «включи камеру в настройке слоя», RTMP — «запусти трансляцию в приложении», пусто — «добавь живой источник».
Сохранённой камеры на этой машине может не быть — вебку отключили, села за другой ноутбук. Тогда мы берём то устройство, которое есть, стираем мёртвый выбор и говорим об этом жёлтой строкой. Рядом есть «забыть устройство»: вернуться к «как решит браузер» можно и без этого случая.
Удалили слой камеры — камера выключается. Лампочка на ноутбуке гаснет вместе со слоем, отдельной кнопки для этого не нужно. В эфире — иначе: пока правка не применена, живая врезка не гаснет (случайный клик не должен обрывать эфир), и камера отпускается по «Применить». Переключение вкладок сцены (площадка, вертикальный кадр) камеру не трогает вовсе.
Окно превью: задержка меньше секунды
Кадр в центре студии играет по WebRTC — так же, как работает видеозвонок: задержка доли секунды, поправила свет и сразу видишь результат.
Если у сети не получается прямое соединение (бывает в корпоративных и части мобильных сетей), окно само переключается на запасной путь и пишет об этом чипом «запасной путь». Там задержка уже в несколько секунд — это не поломка, а плата за обходную дорогу.
Задержка у зрителя — другая история
Это окно показывает, что уходит С НАШЕГО бокса. Дальше поток идёт на площадки, и каждая добавляет свою задержку — у кам-сайтов и Twitch это обычно 5–30 секунд, и повлиять на неё мы не можем.
В пульте под кадром об этом написано прямо: «до площадки <1 с · зритель +5–30 с». Первое число — наше, замеренное на боксе; второе — буфер площадки.
Шесть площадок стоят столько же, сколько одна. Кадр собирается один раз, а дальше раздаётся побайтовой копией — замер на шести целях дал ту же задержку, что и на одной.
Что происходит при «Применить»
Кадр собирается один раз и раздаётся всем площадкам этой раскладки. Поэтому пять площадок стоят не дороже одной, а вот пересборка кадра видна зрителю как короткий рывок.
Из-за этого правки не сохраняются сами: собери сцену целиком и нажми «Применить» один раз. Пока не нажала — эфир идёт по прежней сцене, а рядом с кнопкой честно написано «не применено».
Если в момент сохранения сигнала нет, панель скажет «Применится, когда пойдёт сигнал». Сцена уже сохранена — она поедет с ближайшей публикацией.
Плашка «Кадр пересобирается» / «Без пережатия»
Вверху панели — честный ответ на вопрос «а картинка не испортится?»:
- Без пережатия (зелёная) — сцена ничего не меняет, эфир копируется байт в байт;
- Кадр пересобирается (жёлтая) — мы декодируем и кодируем кадр на сервере. Так работают врезка, кадрирование и вертикаль — иначе их не собрать вовсе.
Чего сцена пока не умеет
- страниц-виджетов по ссылке (алерт о типсе, счётчик цели, бегущая строка) — это следующий шаг;
- звука из врезки и из видео-слоя — звук всегда идёт из того источника, который «в кадре»;
- собственных анимаций конструктора: «пульс» кнопки лендинга в эфир не переезжает — движение слоя задаётся полосой «Оформление · Движение», и набор там свой;
- длинных видео: слой берёт первые 12 секунд и крутит их по кругу.
Надписи и виджеты чата пока живут в своём редакторе — оверлеи. Они кладутся поверх собранного кадра, так что сцена их не ломает.