Большой Севастопольский Офицерский Бал традиционно проходит в июне, но в этот раз подготовка не задалась. Организаторы решили запустить «Севастопольский Бал Онлайн». Поскольку мы делаем трансляцию мероприятия уже несколько лет подряд, отступать было некуда. Зрители в фейсбуке, вконтакте и на ютубе, 35 пар танцуют у себя дома.
Вообще, некоторое время занимаясь онлайн-трансляциями, мы заметили тенденцию, что почти каждый проект требует (или мы от себя требуем) какого-то нововведения. То мы впервые используем SDI, то видеосендер, то передаем сигнал с помощью нескольких 4G-модемов с моря, новый пульт, матрица сигналов, забрать видео с коптера, рестрим на 25 групп ВК и тому подобное. Каждый новый проект заставляет окунуться в мир стримов еще глубже. Мы рассказываем про это на ютубе VidMK, решили написать и на Хабр.
Итак, задача...
Танцевальный бал из-за эпидемии проводится онлайн. Есть ведущая пара, остальные участники танцуют, повторяя за ними, то есть должны видеть и слышать главную пару вместе с музыкой.
В начале подключается губернатор Севастополя, чтобы открыть бал. Готовая срежиссированная трансляция идет на ютуб, фейсбук и вк.
Самый очевидный способ был — созвониться всем в видеочате. Первым пришел в голову Zoom, но я обычно стараюсь не хвататься сразу за то, что на слуху, а ищу альтернативы. Возможно, у них классный маркетинг, и даже если инструмент хороший, наверняка есть что-то еще. В чате AVstream говорили несколько раз про TrueConf, решил попробовать.
Тут важно сказать, что мы в Крыму и многие популярные сервисы здесь не работают. Приходится искать, и нередко альтернативы оказываются лучше. Так, например, вместо заблокированного Trello мы начали использовать мощный Planfix.
TrueConf сразу подкупил возможностью поднять свой сервер. В теории это означало бы, что мы не зависим от общей возросшей нагрузки на дата-центры в период самоизоляции, сидим себе тихо в Севастополе, подключаем в основном местных пользователей и несколько из других городов, и все работает стабильно. К тому же использование своего сервера было выгоднее по деньгам. А в случае с нашими заказчиками его еще и дали бесплатно, так как у организаторов бала НКО.
В общем, мы протестировали продукт и поняли, что он нам подходит. Хотя полную нагрузку в 35 человек на тестах не делали, немного было страшновато, как поведет себя старенький компьютер в роли сервера. Требования к системнику достаточно высокие при такой нагрузке, поэтому притащили компьютер на базе AMD Ryzen 7 2700, с ним стало поспокойнее.
Сервер физически находился там же, где проходила трансляция бала. Главное приложение для видеосвязи подключали в одной сети с сервером. Это прибавляло уверенности, что картинка к серверу уж точно доберется, а уже потом пойдет онлайн к остальным участникам. Кстати, интернет должен быть хороший. Для наших 35 участников скорость отдачи достигала 120 Мбит, то есть обычного интернета в 100 Мбит будет недостаточно. В общем, сервер работает, идем заниматься эфиром…
Сигнал с камеры
Любой видеочат предлагает выбрать веб-камеру в качестве источника изображения и микрофон для звука. Как быть, если нам надо завести профессиональную видеокамеру и звук с двух микрофонов с фонограммой? Если кратко, мы использовали NDI.
Весь эфир нам надо было режиссировать и стримить в соцсети. Для этого у нас был главный компьютер в роли мини-ПТС (передвижная телевизионная студия). Вся работа проходила с помощью программы vMix. Это довольно мощный софт для организации трансляций различного типа и уровня сложности.
Нашу танцевальную пару снимала одна камера, больше попросту не нужно было. Сигнал с камеры мы захватили с помощью внутренней карты BlackMagic Intensity Pro. На мой взгляд, это актуальная карта для захвата одного HDMI-сигнала. Этот сигнал и нужно было отправить в виде вебки в TrueConf. Можно было сразу сконвертировать поток в веб-камеру с помощью vMix, но не хотелось нагромождать все на одном компьютере. Поэтому для труконф-созвона использовали отдельный ноутбук.
Как получить сигнал с камеры на ноутбуке? Можно создать виртуальный видеосигнал на одном компьютере и ловить его на любом другом компьютере в локальной сети сколько угодно раз. Это и есть NDI (Network Device Interface). По сути некий виртуальный кабель, который не нужно особо никак хитро админить. Ширина одного потока для 1080p25 почти 100 Мбит, поэтому для стабильной работы обязательно нужна сеть 1 Гбит или вайфай больше 150 Мбит. Но лучше именно кабель. Таких NDI-сигналов может быть много в одной локальной сети, лишь бы ширины канала хватило.
Итак, на главном компьютере в vMix мы видим сигнал с камеры, отправляем его в сеть как NDI сигнал. На ноуте-созвонщике ловим этот сигнал с помощью программы NDI Virtual Input из пакета NDI Tools (он бесплатный). Эта мини-программа создает виртуальную веб-камеру, в которую вы включаете нужный NDI-сигнал. По сути все, наша HDMI-камера через NDI появилась в TrueConf.
Что по звуку?
Звук с двух радиомикрофонов и фонограмму мы собираем с помощью хорошего аудиопульта и заводим внешней аудиокартой в vMix. Именно эту аудиосумму отправляем в эфир и в наш NDI-поток для труконфа. Там вместо микрофона ноутбука выбираем NewTek NDI Audio. Теперь все наши танцоры видят и слышат в созвоне нашу красивую картинку и качественный звук.
Эфирная картинка
В TrueConf выбрали обычный режим созвона, когда все видят всех. Еще был вариант, когда мы видим всех, а все видят только ведущих. Это эффективнее, но тогда не было бы эффекта массовости.
В формате созвона “все видят всех” можно выбирать любое окно, которое надо сделать большим. Так участники видели ведущую пару, а мы создали еще одного пользователя, с аккаунта которого выводили изображение в эфир и переключались между парами. Мы кликали на нужную пару и увеличивали их экран, остальные пары были мелкими внизу. Иногда выводили все экранчики, чтобы показать, как много людей танцует синхронно.
Теперь про синхронность
Вы наверняка задались вопросом про задержку. Да, она была, порядка 1-2 секунды в обе стороны. Здесь у нас играет музыка, к участникам звук приходит позже, они танцуют под этот ритм, а к нам их изображение возвращается еще позже. Мы решили пренебречь этим в рамках формата, и все равно это смотрелось масштабно и интересно.
Решить вопрос синхронизации для зрителей можно путем искусственной задержки звука в нашем эфире для соцсетей. Тогда бы зритель стрима видел, как участники танцуют точно в ритм музыки. Но не факт, что изображение ото всех приходит с одинаковой задержкой. Это очередное усложнение схемы эфира, обязательно сделаем так в следующий раз.
Кстати, в пакете NDI Tools есть еще одна мини-программа — Scan Converter. Она создает NDI-сигнал, захватывая ваш экран или вебку. Именно так легко можно организовать эфир, например, киберсоревнования внутри локальной сети, имея только эту сеть и веб-камеры. Больше никаких девайсов не нужно.
Для нас это был очередной проект, где нужно было опробовать в деле новые решения, с которыми еще не сталкивались в боевых стримах. Я с удовольствием отвечу на все ваши комментарии, внимательно и с интересом изучу пожелания и рекомендации, если вы знаете, как можно было сделать лучше. Мир стримов бесконечен, многие технологии появляются на наших глазах и учиться вместе можно быстрее. Ниже можно посмотреть обзорное видео с площадки.
stardust_kid
А вы знаете почему так произошло?
lv_denis Автор
Дима, потому что санкции. А санкции потому что неоднозначный Крым, относительно позиции разных стран. А дальше уже политика)
AlexCherny
Потому что «тебя посодют — а ты не воруй»
stardust_kid
Позиция насчет Крыма в международном сообществе довольно однозначна. На август 2019 года Крым признан частью России Афганистаном, Венесуэлой, Кубой, Никарагуа, Сирией, Суданом и КНДР. Остальные государства считают, что Россия оккупировала часть украинской территории.
Оккупация сопровождается убийствами, нарушениями прав человека, дискриминацией коренного населения.