Сам себе телестудия
Жизнь системного администратора в постковидные времена — это просто особая радость. Я помню, как бегал по всем магазинам в округе, скупая последние остатки камер. Моментально сеть небольшого предприятия, расположенного в пяти зданиях, разбросанных по городу, была полностью перегружена видеотрафиком. Каждый хотел устроить видеовстречу, и каждому хотелось внимания. Скромные счета за интернет * начали становиться уже не такими скромными, и как обычно, мы сами стали тому причиной.
Ладно, подумал я. Раз такое дело, давайте подумаем, как это исправить. Мы решили сделать вот что. Никто не знал, что происходит и как жить. Поэтому давайте просто запустим наш собственный сервер для видеочата. Этот сервер мы сможем хотя бы контролировать и ограничивать в трафике.
И, более того, давайте мы сделаем что-то в виде новостей от CEO. Собираем менеджмент в одну комнату. Они сидят, обсуждают все вопросы в онлайне раз в неделю или что-то в этом роде, и вместо всех этих совещаний и планёрок, у всех сотрудников будет доступ к внутрикорпоративному «Ютубу», на котором можно будет просто спокойно устроить одну большую видеоконференцию на этой неделе и беззаботно жить дальше.
Кто бы знал, что стенания пары системных администраторов приведут к созданию телестудии.
Кстати, это решение было принято всеми безоговорочно, без вопросов. Народу жутко понравилась идея отменить все планёрки и встречи, и просто получать 1–2 часа видео-брифинга от боссов. А если уж и хотелось кому-то выразить своё мнение, то можно было это сделать на следующей неделе. Приятным дополнением было то, что у большинства разговорчивых людей, через неделю желание чесать языком пропадало только так.
Итого — уменьшение трафика. Работать становится проще, сисадмин счастлив. Но я был недоволен. Делать все эти замечательные встречи через 480p камеру с размазанным фоном и зелёными лицами — не комильфо. Более того, очень быстро возникла проблема с перегрузкой сети. Вместо сотен маленьких конференций, народ пытался стримить одну большую. Свитчи опять перегружались, всё начинало лагать и тормозить.
И вот как мы это исправили:
▍ Первый шаг — Jitsi
Встречаем Jitsi. Если Вы ещё ни разу не общались с Jitsi — то я не верю, что Вы — системный администратор, который пережил ковид. Сам по себе, из коробки, Jitsi уже то, что Вам нужно. Установка не занимает вообще ничего. А если мы говорим про вещание через корпоративную сеть, то тут всё просто смешно. Вам просто надо установить сертификаты, чтобы google chrome перестал ругаться на их отсутствие, и встречайтесь сколько влезет.
Но с Jitsy начались другие проблемы. У Вас есть централизованный сервер для генерации контента. Конечно же, когда пару тысяч человек попробует к этому серверу подключиться, то перегрузить можно и его.
По умолчанию Jitsy будет пытаться соединить клиентов напрямую через интернет. Или если клиенты находятся в одной подсети. Но, при подключении большого количества клиентов, или при отсутствии маршрутизации, трафик начинает гоняться через сервер. Попытка подключения 2000 человек оканчивается замыленным видеорядом и заиканиями. Люди сидят перед компьютерами, у всех подёргивается глаз, и цвет кожи меняется на приятный, здоровый пунцовый румянец.
Но так как из этих 2000 человек в данный момент только 10–20 являются участниками конференции, а остальные — слушателями, то я придумал следующее решение.
У нас есть 5 точек, в которые этот контент должен приходить. Сам по себе видеоряд — порядка 1.8 мегабит в секунду. Я хотел чёткой и красивой картинки. Не так-то много. Все пять зданий связаны между собой через VPN. Внутри — нормальная СКС, которая в состоянии пропустить через себя необходимый трафик.
▍ Разгружаем сеть
В данном случае нас спасает Restreamer.
Идея достаточно проста. Мы устанавливаем Restreamer на простом сервере в каждом из зданий. Программа «поднимает» любой существующий видеотрафик и перенаправляет его, куда Вам хочется.
Устанавливаем по одной такой программе в каждом здании, подключаем их к конференции Jitsi и радуемся жизни.
Хотя и подключение само по себе — это дело весёлое, но не очень простое.
Для начала мы запустим docker контейнер Restreamer. Тут всё просто, по умолчанию это создаст RTMP сервер. Вот здесь есть подробное описание того, что такое RTMP, и как он работает. Тебе, видео-системному администратору, надо в этом хорошо разбираться. Понимание форматов видео и кодеков будет необходимо для очень точной настройки твоего видеопотока. Так что не ленись, прочитай.
Запуск Restreamer с RTMP сервером достаточно прост. Единственное, что надо сделать — это открыть порт наружу (-p 1935:1935
). А если хочется убедиться, что в ваш поток не ввалится никто посторонний, то нужно добавить переменную окружения (-e RS_TOKEN=на-хабре-любят-котиков
).
В таком случае Вы сможете перенаправить видеотрафик на rtmp://[address of your box]/live/external.stream? token=… (И удачи с попыткой передать пароль, написанный русскими буквами.)
Осталось только научить Jitsi работать с этим потоком. До относительно недавнего времени, если Вы хотели перенаправить поток из Jitsi в собственный RTMP сервер, делалось это всё очень весело. Нужно было запускать ffmpeg на сервере и стримить через баш. Но во время пандемии, Jitsi обновлялся множество раз, и теперь стримить видеоконференции стало намного проще.
По этой ссылке вы найдёте простой мануал о том, как правильно настраивать RTMP поток в Вашей конференции.
Но погодите! Мы же в городе сбычи мечт. И строим свою видеостудию с преферансом и куртизанками. Нам нельзя вот так вот взять, и тупо запустить поток на экран. Нам нужно это сделать красиво.
Ладно. Первое, что мы сделали, это слили коды Jitsi и убрали все логотипы поверх видео. Не поймите меня неправильно. Не то чтобы мы не уважали компанию, но просто уж очень хотелось просто видеоряда, и ничего больше.
Далее — мы отключили настройки качества видео. Вместо этого, мы выставили качество в константу. Сеть у нас была рассчитана на то, чтобы обрабатывать определённое количество видео, и мы были готовы выдержать 720p.
После этого — всё просто. Запускаем конференцию, перенаправляем её на Restreamer, установленный на основном сервере. Задача этого экземпляра проста — он будет рассылать поток на остальные пять экземпляров Restreamer, установленных в филиалах. Так как нам даже не нужно изменять видео в потоке, нагрузка на этот экземпляр будет минимальной. Видео приходит в конечные филиалы, и там пользователи могут посмотреть его на своих рабочих станциях или через внутрикорпоративный Wi-Fi. Благо сам Restreamer позволяет показывать видео в режиме Уoutube. Заходишь на сайт, нажимаешь Play, и смотри.
На этот, конечный сервер, как раз и ложится приличная нагрузка. Но, так как мы не конвертируем видео, то, в основном нагрузка эта будет сетевой, а не вычислительной. Хорошая сетевая карта и выделенная линия до основного маршрутизатора обеспечат успешную доставку видео в конечные точки.
Более того, так как некоторые участники были приглашены в эфир «по телефону», то это вызвало дополнительный ажиотаж, потому что Вы могли попасть в прямой эфир. Народу нравилось. Но учтите, к тому моменту, как видео приходило к конечным пользователям, задержки составляли порядка пяти-шести секунд. Так что настоящего прямого эфира не получится.
▍ Улучшаем качество
Первое — настроить видеокамеру. На Хабре об этом есть замечательная статья. Спойлер: Самое главное в хорошей конференции — это правильно сделанное освещение. Вторым в основном списке идёт хороший фон, желательно однотонный и контрастирующий с одеждой. Если кто-то носит белую рубашку, белый фон не подойдёт. Фоны можно покупать в рулонах, а можно просто взять что угодно и повесить за камерой. Красное полотно с прозрачными шторами поверх и тусклыми светодиодными лентами под этими шторами создавали восхитительный праздничный эффект, и шли «на ура!» Добавляем снежинок, и вот Вам Новый Год.
Купите приличную камеру, и всё будет хорошо. Мы потратили неприличные деньги на неприлично дорогую камеру от одной известной компании, которая делает мышки и клавы, и были очень рады. Но подобная камера была не самым важным достижением в качестве передачи видео. Если у Вас есть возможность, пообщайтесь со своим поставщиком электроники, выберите несколько камер с приличной линзой, протестируйте их.
Не ведитесь на всякие примочки типа «Специально для Zoom» или наличие большого количества кнопочек на пульте управления. Всё это лишнее.
Хорошая камера, которая даст отличный охват одной комнаты и не будет мылить картинку оснащена линзой. И если Вы видите огромную, сантиметров в пять в поперечнике линзу, то это как раз то что надо.
Камера не должна включать в себя микрофон. Это — зло. Микрофон обязательно должен быть отдельным устройством. Ищите на ваших маркетах то, что называется Omni-directional microphone или Conference Microphone. Микрофон для проведения конференций или всенаправленный микрофон.
Совет. Мы остановились на изделиях одной компании, которая в названии имеет связь с дыхательными органами рыб. Потрачено было прилично, но звук поднимался отлично.
Если Вы решитесь купить камеру или микрофон с системой подавления шумов, то не рассчитывайте потратить на это меньше $600 долларов. Конечно, все производители будут говорить об «улучшении качества изображения». Но это — полная фигня, если у Вас в руках нет приставки, которая это изображение будет улучшать на лету.
И напоследок, к слову о камерах. Никогда не забывайте, что старый Samsung Galaxy S7 имеет встроенную камеру лучше, чем большинство китайских аналогов, доступных на рынке.
За пару долларов Вы сможете превратить Ваш старый Android в приличную камеру. Особенно если сроки поджимают.
Ну и теперь немного о самом порядке проведения конференции. Обычно конференцию начинает ответственный администратор с прямыми руками и хорошей мышкой. Он является модератором конференции, следит за тем, чтобы говорил кто-то один, и моментально выключает микрофоны у тех, кто говорить не должен, чтобы Вам не приходилось слушать покашливания, звуки питья воды и всё остальное.
В таком виде подобная видеоконференция на самом деле выглядит очень профессионально и больше напоминает прямой эфир, чем просто посиделки в «Зуме».
Последнее, что я хочу здесь добавить, это пропускная способность Вашей сети. Качественный видеопоток будет генерировать порядка 2 мегабайт данных в секунду. Его можно ужать до 2 мегабит в секунду, и это будет выглядеть неплохо на больших телевизорах. Опускаться дальше не стоит. Подниматься выше будет целесообразно, только если Вы захотите сделать всё в 4K. Но, поверьте мне, даже при Full HD, качество Вашей картинки будет превосходить всё, что люди видели раньше. Вы будете работать на «новом уровне» и поражать всех высоким качеством.
Но при всём при этом, Ваша сеть не будет испытывать особых нагрузок. И, заметьте, до этого момента, всё что Вам нужно было купить — это камеру и микрофон. А в нынешние времена подобные устройства есть в большинстве офисов.
▍Уходим в стратосферу
А можем ли мы сделать что-то большее, чем настроить сервер и сеть?
Можем. Но следующая часть статьи написана в городе, в котором найти подобное оборудование ничего не стоит. Если в Москве Вы ещё сможете купить подобное за большие деньги, то в регионах такие вещи будут казаться чёрной магией.
Как раз с Чёрной Магией мы и познакомимся. Встречайте — BlackMagic. Это если Вы решили перепрофилироваться из системного администратора в телепродюсеры.
В зависимости от бюджета и возможностей, покупаем то, что называется Production Switcher. Вариантов много, все цены начинаются от $700 и стремятся в небеса, к баснословным $18000. Это — телестудия в кармане. Ну, почти что в кармане. Подключаем к нашему устройству четыре камеры через SDI. Забудьте про HDMI, это самый бесполезный тип кабеля, который Вы видели в своей жизни. Вы не поверите, насколько проще подключать SDI кабели. Они не выпадают из разъёмов, и сами по себе намного более компактные. И очень гибкие.
Подключаем несколько камер сразу. Я брал подержанные камеры. Цена новых устройств такого уровня была порядка $2-$3k, но с рук можно было взять за $500. В камерах имелись дефекты. Например, не работали кнопки управления зумом. Но они мне и не были нужны.
Ставим одну камеру, охватывающую всю студию, и по камере на каждого из говорящих людей. Всё это отдельно настраивается. Свет можно делать с помощью всего, что подвернётся под руку. Благо, хорошие инструкции по постановке света можно найти где угодно.
В зависимости от качества свитчера Вы можете воспользоваться различными примочками, в виде аппаратного эффекта зелёного экрана (chroma keying), логотипом Вашей компании или даже появляющимися именами ведущих.
После этого, продюсер сидит перед видеосвитчером и переключает камеры с одного на другого ведущего, путём нажатия кнопок на пульте. В то время как один из сисадминов пишет скрипт включения «transition reels». Это такие маленькие ролики, которые позволяют переключать видео с одного канала на другой.
Загружаем презентационные материалы в сам свитчер и можем делать прямой эфир.
И вот в этот момент видеоконференция уже давно забыта, и всё превращается в телестудию.
Покупаем устройство, которое подхватывает наш выходной сигнал на лету и преобразует его в RTP поток. Что-то в этом роде. И всё. Можно вещать.
Вы можете сказать, что это — перебор. Да. В каком-то смысле. Но это перебор для собраний в «Зум». А вот PR команда облюбовала студию и выпускает ролики для инвесторов и потребителей продукции. Новости, обзоры и тому подобные вещи.
А за всем этим стоит IT отдел. Измученный, но довольный. Потому что мы только что собрали телестудию из того, что было, меньше чем за $7000. И научились вещать в интернете. В прямом эфире и с замечательным качеством.
Более того, мы набрались опыта по постановке кадров, настройке освещения, созданию сцен и работы с телепромптером. (А в некоторых случаях опыт вышивания, создания декораций, костюмирования и, не дай бог, сценического грима.) Добавляем к этому пару серверов для хранения больших объёмов данных и пару хороших компьютеров для обработки видео, и Вы готовы становиться медиамагнатом. Приглашайте куртизанок, раскладывайте преферанс.
Все уставшие, но довольные. Продажи увеличились, админам дали премию, создали новый отдел по работе с аудио-видео и наняли дополнительный персонал.
Подробности не разглашаю, ввиду NDA и нежелания пиарить бренды различных компаний. Но если есть конкретные вопросы про модели и оборудование, спрашивайте в комментариях. Я отвечу.
*Скромные счета за интернет. Казалось бы, что может быть проще. Пойди и купи ещё гигабайты. Но не в Лос-Анджелесе. По сравнению с московскими ценами на интернет, тут просто ад. Оптика на 75 мегабит стоит порядка $3000. Коаксиал на 200 мегабит обойдётся вам в $350. А «Безлимитный» мобильный телефон стоит $80 в месяц. При этом безлимит заканчивается на 22 гигабайтах, а после — 128 килобит в секунду до конца периода. Тут ещё очень часто можно купить линию T1.