текст логотипа
Статьи

Как запустить роботов в онлайн

Аватар пользователя
Горев Кирилл Викторович

%D0%A8%D0%B0%D0%BF%D0%BA%D0%B0%20ONLINE.jpg

Вместо вступления

До 2021 года официально запрещены любые массовые мероприятия для детей в условиях распространения коронавируса. Однако, для инженеров ограничения - повод проявить креативность. Поэтому родилась идея провести соревнования в режиме онлайн по уже существующим регламентам. Портал “РобоФинист” позволяет организовать регистрацию участников, фиксировать результаты соревнований и выдавать дипломы. 

Так 14 июня уже были успешно проведены первые международные онлайн-соревнования по робототехнике с использованием портала РобоФинист. Без портала было бы очень сложно, поскольку, судьи в режиме онлайн сразу же вводят результаты выступлений участников, а зрители их видят в онлайн-трансляции. Автоматически формируются турнирные таблицы, протоколы для организаторов. Все это упрощает работу судьи и ведущего. С инструкциями по работе с порталом можно ознакомиться тут . Нужно лишь определить, как именно организовать трансляцию для всех желающих?

D8.png

В статье рассматриваются взаимодействия различных технологий и программ, работоспособность которых зависит от многих факторов. Поэтому перед воспроизведением описанных решений может потребоваться консультации с врачами специалистами по компьютерам и вычислительным сетям. В тоже время наличие таких специалистов в команде организаторов крайне рекомендуется.

Цель

Наша цель: решения, которые позволят проводить трансляции соревнований.

Сразу стоит оговориться: 

  • Соревнования бывают разной конфигурации. Универсального решения нет, так же как и нет универсального решения для проведения очных соревнований. Поэтому статья описывает технологии, методики и ресурсы, комбинация которых может дать желаемый результат, при различных вводных. 
  • В теории представленные методы позволяют масштабировать трансляцию под любой размер соревнований. На практике при достижении больших размеров, применение этих методик может стать нецелесообразным, по сравнению с готовыми продуктами для трансляций, представленными на рынке.                              

Контент

Есть два основных варианта соревнований и у каждого свои плюсы и минусы.

1) Запуск робота у участника дома с захватом и трансляцией видео из конференц-связи

  • + Участник имеет возможность полностью отладить работу робота и показать наилучший результат. Правда, не все этой возможностью пользуются.
  • - На фестивале “Робофинист” мы стараемся следить за качеством полигонов и освещения, так как это сильно влияет на работоспособность роботов, собранных участниками . Но для онлайн соревнований дети строят полигон в основном у себя дома, без помощи руководителей, и не учитывают эти требования, что приводит к соответствующему результату. Лучших результатов добиваются те, кто запускают роботов прямо в кружках и под контролем руководителя.
  • - Плохое качество связи и разрешения веб-камеры. И то, и другое приводит к тому, что видео от участника “тормозит” или качество видео не позволяет адекватно определять нарушения. Например, иногда сложно в “квадратах” определить сход с линии. Или из-за задержек в канале связи определить точное время старта или финиша.
  • - Плохо поставленная экспозиция. Участники в подавляющем большинстве используют веб-камеры, так как они самые доступные. Но они очень плохо справляются, если на заднем фоне будет окно с ярким внешним светом. При чем, это нужно отслеживать, даже если засвета нет, так как пока идет соревнование солнце может начать засвечивать позже, например, на второй или последующих попытках.
  • - Все вышеперечисленные минусы можно исправить и избежать, но это требует большой предварительной работы организаторов с участниками.                               

2) Запуск роботов на площадке организаторов

  • Плюсы и минусы полностью противоположны запуску у участника дома, с той лишь разницей, что организаторам приходится бороться не за качества видео, а за качество программы робота. Но у этого есть и обратная сторона. Тот, кто применяет более сложные алгоритмы, тот и побеждает. Например: на соревнованиях 14 июня, те, кто сделал автокалибровку датчиков цвета, проезжали лучше в категории “Большое путешествие”.                 

Возможны комбинации этих вариантов, но это существенно усложняет организацию самих соревнований.

Выбор того или иного способа реализации должны осуществлять организаторы исходя из своих ресурсов и задач.

Постановка общих задач

Прежде чем приступить к реализации, стоит декомпозировать задачу.

Первое, что необходимо разделить - это организацию соревнований и организацию трансляции. Почему так? Потому, что за эти направления организации должны отвечать два разных человека с разным набором навыков и обширным списком ответственности у каждого. Для простоты, одного можно назвать режиссером трансляции (РТ), а второго главным организатором (ГО).

Обязанности ГО на онлайн-соревнованиях отличаются от обычных лишь тем, что необходимо выделять отдельные ресурсы на трансляционную часть и учитывать визуальную экспозицию. Из под пера Алексея Хованского уже вышли инструкции по организации соревнований, поэтому далее идет рассмотрение только обязанностей РТ.

Когда определены ГО и ГТ, они должны обсудить, в каком формате и какие виды соревнований будут проходить. Результатом этого обсуждения должен быть расписанный по датам план, включающий в себя:

  • План помещения, откуда будет транслироваться соревнование
  • Дату готовности визуальных элементов. Причем отдельно по виртуальным элементам и элементам на площадке.
  • Сроки монтажа. В этом пункте РТ должен быть не менее заинтересован, чем ГО, так как во время монтажа, РТ будет необходимо настроить экспозиции и оборудование трансляции. Поэтому, после начала монтажа, внесение изменений в план помещения, визуальные элементы и полигоны может оказаться критичным, если не фатальным. Например, в плане может быть заложено крепление камеры к потолку, и в случае перемещения полигона перенос такой камеры может вызвать серьезные трудности. Может не хватить одноразовых креплений, или помешать переносу камеры может уже установленный предмет.
  • Технический запуск. Очень важная операция. РТ должен проверить работоспособность всех систем. Даже тех, что были настроены давно. Нередки случаи сброса параметров или их изменений, вследствие замены периферийного оборудования.
  • Репетиция. Позволяет ведущему, ГО, РТ и их помощникам наладить взаимодействие, что очень важно при нештатных ситуациях во время трансляций. А РТ даёт возможность проверить работоспособность всей системы целиком и подправить параметры под особенности. Такой подход позволяет понимать друг друга даже жестами, что бывает полезно, если у вас могут услышать через микрофон ведущего.                                

2020-06-30%2019.17.30.jpg

Экспозиция

В расстановке оборудования необходимо проявлять чувство прекрасного. Это правило справедливо для всего, что попадает в кадр. Все остальное должно подчиняться здравому смыслу и практичности. 

На фотографии представлен пример “комнаты ведущего”, в которой коллеги готовятся к началу трансляции:  

2020-06-30%2019.22.33.jpg

На первый взгляд, “всё навалено”. Однако, стоит учитывать, что попадает в кадр, а что нет. Здесь было установлено три камеры. 1 - общий план на ведущего и его собеседника (на большой треноге). 2 - только ведущий (малая тренога на столе) 3 - только собеседник (коробка на столе).

Все три камеры поставлены так, что в кадр попадает только люди и фон. Поэтому всё остальное можно не “декорировать”, но требует здравого смысла и практичности. Коробка это импровизация, в следствии нехватки оборудования, и если задеть стол, то её может начать качать. Однако имеем то, что имеем. Значит следует предупредить об этом всех, кто перемещается в этой комнате. Так же следовало бы собрать провода и закрепить, иначе можно их зацепить и уронить технику. Или ограничить проход перед столом лентой. Но, в данном случае, этого не было сделано, так как в этой комнате и без того ограничено перемещение “посторонних”.

Отдельно внимание стоит обратить на свет. В автоматическом режиме цифровые камеры подстраивают яркость кадра, в зависимости от яркости объектов и процента занимаемой площади кадра. Поэтому, следует выровнить яркость всех объектов в кадре. Вот интересный кадр, который демонстрирует данный эффект: 

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-06-30%20%D0%B2%2020.03.46.png

Изначально камера смотрящая на полигон смотрела “ниже”. Однако, в этом случае синего ковролина в кадре набиралось критическое количество и камера поднимала яркость кадра. В результате чего полигон становился настолько белым, что на нем нельзя что-либо разобрать. Особенно в зоне лабиринта. “Подъём” камеры выровнил яркость, но недостаточно для лабиринта. Поэтому для контраста на “ребра” лабиринта была нанесена черная изолента. Этот эффект хорошо виден в разнице между левой внешней стеной и внутренними перегородками лабиринта.

Такой же эффект может дать “бьющее” в окно солнце. Поэтому необходимо исключать солнечный свет в помещении. Если нет плотных штор, то можно заклеить окно ватманом.

Рассмотрим расстановку камер на соревнованиях:  

DSC00115.jpg

В этой трансляции использовалось 5 камер LOGITECH HD Pro C920, направленных на полигоны. Такие же камеры использовались в комнате ведущего. Эмпирическим путем было установлено, что такая камера эффективно снимает объекты на расстоянии до 1,5 метров. Камера над столом сумо показала сносную картину, однако её стоило бы повесить на 10 см ниже. А вот камера, направленная на “Большое путешествие”, уже плохо справлялась. Качества картинки не хватало, а так же “гулял” автофокус камеры. Здесь лучше было бы использовать камеру с более высоким разрешением и фиксированным или настраиваемым фокусом.

При креплении камер проявлена креативность. Двухсторонний скотч 3М не удержал камеры на колоннах, было сделано усиление в виде четырех стяжек, скрепленных вместе вокруг колонны. Для потолочных камер использована металлическая лента хоз. назначения, обернутая вокруг элементов потолка. Их веса относительно веса камеры было достаточно для предотвращения раскачивания . Оба способа можно брать на вооружение, но они справедливы только для легких камер.

Доставка контента зрителям  

NCDN_-_CDN.png

Расставленные камеры генерируют контент. Но как его доставить зрителю?

Можно реализовать в виде собственного сервера вещания. Такой подход имеет место быть только при определенных условиях. Например, при минимальной задержке видеопотока. Но если стоит задача организовать трансляцию для большого количества людей, лучше сразу от неё отказаться. Во-первых, это требует существенных знаний и времени. А во-вторых, такой подход требует высокую скорость подключения интернета. Например, в проведенных соревнованиях битрейт местами поднимался выше 15 000 кб\с. Если каждому клиенту доставлять контент на такой скорости, то уже от 50 до 100 зрителей исчерпают канал в 100 Мб\с полностью. 

К счастью, все придумано до нас. Есть протокол Real Time Messaging Protocol (RTMP) - протокол потоковой передачи аудио, видео. Сейчас множество сервисов трансляций поддерживают этот протокол. Выделим крупные из них:

  • Youtube
  • vk.com
  • Facebook
  • Twitch                               

Из крупных только Instagram не поддерживает этот протокол. Однако, есть сервисы, которые конвертируют формат видео RTMP в формат Instagram. Но, наши тесты не показали устойчивую работу, а также Instagram требует вертикальное видео, тогда как всем остальным требуется горизонтальное. Поэтому не рекомендуется делать трансляцию в Instagram совместно с другими сервисами. Как минимум, пока команда организаторов не получит достаточно опыта в трансляции в других сервисах. 

Использование сервисов решает множество трудностей, а также даёт дополнительные преимущества. К примеру, youtube сохраняет трансляцию автоматически, позволяет “проматывать” трансляцию зрителям, чтобы посмотреть интересующий момент и многое другое.

Такой подход позволяет доставлять контент для любой аудитории зрителей. И фиксирует размер необходимой скорости интернет-соединения равной примерно максимальному битрейту, умноженному на количество стриминговых сервисов.

Таким образом, задача доставки контента сводится к простым шагам:

  1. Зарегистрироваться в стриминговых сервисах;
  2. Создать в них трансляции, нажав соответствующие кнопки и введя название трансляции;
  3. Настроить второстепенные параметры. Например: описание, назначение модераторов чатов и прочего (опционально);
  4. Получить URL, куда необходимо направить поток RTMP и ключ трансляции для авторизации;
  5. Ввести URL и ключ в программу, транслирующую видео поток с камер по протоколу RTMP;
  6. Запустить поток RTMP.                               

Пример настройки трансляции в стриминговых сервисах не приводится, по причине того, что у таких сервисов есть хорошая документация, как это сделать. А также интерфейс с момента написания статьи может измениться.

На этом шаге необходимо пояснить, что прямая трансляция никогда не бывают “прямой”. Основные сложности трансляции это задержка и синхронизация. В проведенной трансляции, задержка между кадром отображаемой программой-источником RTMP-потока и кадром в youtube варьировалась между 8 и 20 секундами. Центральное телевидение тоже работает с задержками. К примеру, трансляцию чемпионата мира по футболу 2006 зрители видели на 6 секунд позже реального времени. Бывают прямые трансляции с задержками и более 5 минут. Поэтому, прямая трансляция понятие относительное. Также, возникают трудности синхронизации видеопотоков с разными задержками. Эти два нюанса необходимо постоянно учитывать на всех этапах создания трансляции.

Коммутация видеопотоков 

2020-06-30%2023.58.31.jpg

На представленной схеме отражена коммутация всех видеопотоков трансляции проведенных соревнований. Как видно из схемы, основным узлом работы трансляции является RTMP-сервер. В теории можно обойтись и без него. Но тогда трансляция будет ограничена одним стриминговым сервисом и камерами, подключенными к вещающему компьтеру. На практике, нужно множество камер, разнесенных в пространстве, и множество стриминговых сервисов. Поэтому без этого сервера не обойтись.

Что же делает RTMP-сервер? У него два основных назначения.

Первое - это размножить сигнал с вещающего компьютера трансляции сразу в несколько сервисов. Это сокращает количество компьютеров, на которых ведется сведение трансляции, до одного. Так же он может помочь сэкономить исходящий трафик в ситуации, когда площадка проведения соревнований арендована, и провайдер просит очень много денег за каждый мегабит/с. Для этого нужно поднять еще один RTMP-сервер вне площадки, где интернет дешевле. При такой настройке по интернет-соединению площадки идет не N-видеопотоков в каждый сервис, а только один, в сторону этого сервера, а от него уже в стриминговые сервисы.

Второе - это необходимость собирать видеопотоки из разных мест:

  • Удаленная или переносная транслирующая камера. Это может быть Android или iOS смартфон с приложением Larix Broadcaster , передающий по Wi-Fi, или физически очень удаленная камера, к которой протянут LAN.
  • Встраивание трансляции в трансляцию.                              

Последний пункт необходимо раскрыть подробнее. На проведенных соревнованиях в основную трансляцию подключалось целых три трансляции:

  • первая и вторая - это трансляции видеопотока из программы видеосвязи, 1-го и 2-го участника соответственно. Их можно было сводить на компьютере основной трансляции. Но это дополнительная нагрузка на РТ, а ему и без того есть чем заняться. Так же это дополнительная нагрузка на компьютер РТ. Если в комнату видеосвязи зайдет много людей, то компьютеру РТ придется декодировать видеопотоки каждого человека в отдельности, что может вызвать большие задержки в трансляции, так как обработка идет одним и тем же аппаратным обеспечением. Программу видеосвязи можно использовать любую, так как производится захват экрана.
  • Трансляция ведущего. У ведущего стояло аналогичное ПО для генерации RTMP и три камеры. Ведущий находился в отдельном помещении со звукоизоляцией.               

По сути описанные видеопотоки отличаются от просто удаленных камер наличием управления со стороны человека. Например, оператор сначала “готовит” участника к выходу в эфир, а уж потом РТ забирает его видеопоток. И все эти потоки идут через RTMP-сервер.

Еще одним полезным свойством RTMP-сервера является возможность забирать один и тот же поток в разные места. Это оказалось полезно для просмотра финального потока трансляции. У ведущего был открыт VLC-плеер, который способен проигрывать RTMP-поток. В него приходит выходной поток, где ведущий видел, что сейчас показывается на трансляции. Почему не в YouTube смотреть? Во-первых, как озвучивалось выше, у YouTube задержка более 5 секунд, а локально с RTMP-сервера не более 2 сек. Во-вторых, экономия трафика, так как RTMP-сервер стоит в локальной сети.

RTMP-сервер - очень мощный инструмент, позволяющий делать трансляцию сложной конфигурации. Так ли сложно его установить и настроить? На самом деле просто. На соревнованиях использовался Nginx с модулем nginx-rtmp-module, который и реализует весь необходимый функционал. Его можно поставить как docker-образ . RTMP-сервер не требователен к “железу”, а вот хороший канал LAN для него важен. Скорость LAN-соединения стоит рассчитывать исходя из ожидаемого количества потоков и битрейтов в них.

Рассмотрим docker-образ, так как его быстрее всего развернуть, в любом месте.

  1. Ставим докер с официального сайта 
  2. Заходим в консоль системы и выполняем шаги 3 и 4
  3. docker pull tiangolo/nginx-rtmp
  4. docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmp                              

Этого уже достаточно чтобы коммутировать все локальные видео-потоки. А для ретрансляции в несколько стриминговых сервисов необходимо прописать URL и ключи в настройку RTMP-сервера. Для этого в консоли выполняем:

  1. docker run -t -i tiangolo/nginx-rtmp /bin/bash
  2. apt-get update
  3. apt-get install nano
  4. nano /etc/nginx/nginx.conf
  5. Редактируем файл
  6. ctrl+O
  7. ctrl+X
  8. service nginx reload                              

На 5-м шаге откроется файл со следующим содержимым: 

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-06%20%D0%B2%2018.52.08.png

Заменяем секцию rtmp следующим: 

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-06%20%D0%B2%2018.53.44.png

Секцию vk можно скопировать с другим названием и прописать другой стриминговый сервис. Также нужно не забыть прописать push в секцию obs на новый сервис.

На этом настройка RTMP-сервера завершена, и в последующем нужно будет только прописывать новые ключи трансляции.

Файл с текстом настроек приложен к статье в разделе файлы: nginx-rtmp.conf

Звук  

Studio-Mic.jpg

Качество звука напрямую влияет на положительное восприятие всей трансляции. Поэтому, если есть возможность, необходимо использовать качественное оборудование для записи звука. В особенности это важно для ведущего. Даже не столько для того, чтобы было членораздельно слышно, что он говорит, но и для того, чтобы у ушей зрителей было время отдохнуть от не качественных микрофонов участников, с которым ведущий будет вести беседу.

Вместе с тем звук даже важнее, чем видео. Если в трансляцию сводится несколько видеопотоков, зритель будет концентрироваться только на одну часть кадра и может не сразу обратить внимание на рассинхрон видео со звуком. А может и вообще не смотреть, а только слушать, в ожидании важного для него момента. А вот звуковой поток зритель будет слушать постоянно. Поэтому рассинхрон будет замечен моментально. Этот эффект не проявится, если у вас только один источник звука. Но если собеседников несколько, и у каждого свой микрофон, этот эффект может себя проявить.

На соревнованиях для связи был использован мессенджер Discord. У него множество положительных функций для организации конференцсвязи для соревнований:

  • Хорошая стабильность связи даже при слабом интернете абонента
  • Наличие чатов в том же окне, что и видеосвязь. Это полезно когда необходимо вести беседу со всеми участниками сразу.
  • Наличие отдельных комнат конференц-связи с возможностью перемещения участника между ними. Очень полезно когда нужно отдельно с кем-то поговорить. Например, помочь с настройкой камеры, взять интервью, подготовить к запуску в трансляци и т.п.
  • Система прав на основе ролей. Позволяет делать всё выше описанное более гибко. Создавать чат-ленту объявлений, которую могут читать все, но писать в неё могут только организаторы. Делать закрытые комнаты трансляции, в которые участник может попасть только благодаря перемещению его организатором и т.п. При этом есть и открытые части, в которые могут присоединяться все желающие, а затем им выдаются права организатором.                             

Незаменимый инструмент, но Discord не был изначально предназначен для трансляции. Поэтому захват видеопотока и звука надо настраивать для трансляции. И если с видео вопрос решается относительно просто, то со звуком надо применить смекалку.

Протокол RTMP передаёт как видео, так и звук. Но в зависимости от конфигурации сети, удаленности абонентов и буферизации, звук и видео могут приходить с разной задержкой из одной и той же конференции. Как было сказано выше, рассинхрон видеопотоков не так страшен, как рассинхрон звука. Поэтому для сведения звука можно применять следующие варианты:

  • Если в трансляции только один микрофон, либо он единственный в один и тот же момент времени, то можно звук забирать напрямую из RTMP-потока. В таком случае не будет рассинхрона между аудио и видео.
  • Если микрофонов много, то лучше забирать звук всей конференции только с одного RTMP-потока, а остальные заглушить. В этом случае может произойти рассинхрон звука и видео у заглушенных потоков, но связность диалога не пострадает.           

На соревнованиях у ведущего был аппаратный микшер, в который был подключен микрофон и звук из компьютера. Затем микшер смешивал оба потока в себе и отправлял звук всей конференции отдельным потоком по USB обратно в компьютер. Благодаря этому ведущий и собеседник общались в дискорде как обычно, а общий звук направлялся в RTMP-поток, который, в свою очередь, шел в трансляцию. Аналогичного функционала можно добиться используя программы, создающие виртуальные каналы звука, внутри которых будет происходить аналогичное смешение звука. Например для Windows: Virtual Audio Cable .

Расстановка оборудования  

DSC00218.jpg

На фото представлена расстановка оборудования и людей на соревнованиях:

  • Ведущий (за дверью) - ведёт трансляцию. Находиться в шумоизолированной комнате. Там же находиться собеседник ведущего.
  • Главный судья - руководит судейской коллегией и, время от времени, даёт комментарии ведущему. Должен видеть всё, что происходит на площадке. Он же объявляет следующих участников.
  • Режиссер - на своем компьютере сводит главный поток трансляции.
  • Подготовка - организатор готовит участников и проверяет связь, прежде чем они попадут в трансляцию. Должен быть на связи с главным судьёй, чтобы была возможность сообщить о наличии или отсутствии участников.
  • Участник 1 и 2 - организаторы, которые транслируют режиссеру участников. Могут быть по совместительству судьями.
  • Интервьюер (опционально) - Организатор, который берет интервью после трансляции.
  • Не лишним будет выделить наблюдателя-модератора. Он сможет навести порядок в чатах YouTube и сможет проследить, что трансляция доходит до зрителя корректно. Например, на последних соревнованиях произошла коллизия звука и режиссеру этого не было видно в его программе. Это было заметно только на YouTube.                             

Компьютер режиссера должен быть самой мощный, так как на нем проводится множество операций по сведению видео. У всех остальных требования компьютеру не такие строгие, но также стоит выделить более мощные, так как все они будут работать с видео.

Отдельно стоит упомянуть участника 1 и 2. Технически возможно забирать участников прямо на компьютере режиссера. Но режиссеру трудно уследить за трансляцией и участниками одновременно. Более существенная техническая трудность заключается в том, что Discord декодирует видео каждого участника конференции отдельно. А конвертация в RTMP-поток ведется тем же декодером. Поэтому большое количество участников с видео в конференци способно положить на “лопатки” даже самую мощную видеокарту, что приведет к некорректной работе трансляции.

Все компьютеры нужно объединить в высокопроизводительную ЛВС по проводам. RTMP-сервер необходимо включить в неё же. Стоит отметить, что RTMP-серверу не нужна высокая производительность, даже видеокарта может отсутствовать. Он может быть настроен прямо на компьютере режиссера.

Настройка OBS  

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-02%20%D0%B2%2023.06.13.png

После обсуждения всех организационно-технических вопросов можно приступить к настройке программы трансляции. На соревнованиях использовался OBS studio . Это бесплатная программа для ведения трансляций в соц. сетях по протоколу RTMP. У неё достаточно богатый функционал, но все же это не профессиональный софт, поэтому не все удобно и возможно на нем сделать.

OBS вещает в формате RTMP и поэтому одинаково подходит как для режиссера, так и для ведущего и организаторов, транслирующих участников. Поэтому, далее последует описание настройки для режиссера. Для остальных применяются те же приемы, но в ограниченном количестве.

Первоначально необходимо настроить параметры странсляции RTMP. Для этого есть кнопка “настройка” слева внизу окна. В открывшемся окне переходим во вкладку “вещание”.  

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-03%20%D0%B2%2014.59.41.png

Здесь можно настроить следующие параметры:

  1. Сервис - если предполагается вещание напрямую в стриминговый сервис, выбираем его в списке. OBS сам установит нужный URL, и останется лишь указать ключ трансляции. В случае использовании собственного RTMP-сервера необходимо выбрать “настраиваемый”.
  2. Сервер - В этом параметре указывается URL собственного сервера, состоящий из:
    - rtmp:// - протокол вещания
    - n01-stream-robo.sl.netlo - адрес сервера. Может использоваться localhost, ip или домен. В примере использован домен ЛВС.
    - :1935 - порт, на котором запущен сервер. 1935 - это стандартный порт, но он может быть изменен при настройке RTMP-сервера.
    - /obs - путь вещания. Пути обозначены ключевым словом application в конфигурации сервера. В указанном выше примере использовалось два пути. /obs - для вещания в интернет главного потока. /live - для трансляций ведущего, участников и т.п.
  3. Ключ потока - своеобразный пароль вещания или его идентификатор. В случае вещания прямо в стриминговые сервисы, берется из настроек трансляции стримингового сервиса. Для пути /obs локального RTMP-сервера - ключ не нужен. Для пути live - могут использоваться произвольные ключи, без предварительной настройки.                             

Используя VLC-плеер, можно просматривать вещание прямо с локального RTMP-сервера. Для этого достаточного использовать те же пути, что и для вещания:

Для настройки выводного потока во вкладке “вывод” необходимо настроить:

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-03%20%D0%B2%2015.24.31.png

Режим вывода - расширенный

  • Кодировщик - лучше всего использовать аппаратный. Однако стоит произвести тестовый запуск трансляции с переключением сцен, стингерами и видео, чтобы определить лучший вариант на конкретном компьютере.
  • Битрейт - Для Full HD средство диагностики youtube рекомендовало выше 4500. Очень большое значение ставить не стоит, так как кодировщик может не справиться с таким значением.
  • Интервал ключевых кадров - ставим 2. Авторежим плохо справляется.                             

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-03%20%D0%B2%2015.40.11.png

Во вкладке аудио настраиваем источники аудио из системы. Для режиссера отключаем все источники, чтобы они не мешались в микшере. Для для тех трансляций, где необходим микрофон, выбираем микрофон из системы.

    Во вкладке видео можно настроить разрешение выходного потока. Можно использовать Full HD. Зрители со слабым интернетом могут использовать настройки качества в стриминговых сервисах.

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-03%20%D0%B2%2015.46.36.png

Вкладка “горячие клавиши” крайне полезный инструмент. Благодаря ей можно управлять трансляцией практически не притрагиваясь к мышке. Здесь можно настроить:

  • Выбор сцены
  • Активацию перехода между сценами
  • Отображение/скрытие элементов сцены
  • Включение/отключение звуковых элементов
  • Управлять скриптами                            

Крайне рекомендуется настроить на всё, что будет использоваться, горячие клавиши, так как, в противном случае, на управление мышью просто не останется времени.

Однако данную вкладку полноценно не настроить сразу после первого запуска программы, так как многие поля здесь появятся после создания соответствующих элементов в других местах. Поэтому к этой вкладке необходимо вернуться в самый последний момент, после настройки всей остальной программы.

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-03%20%D0%B2%2016.23.09.png

Режим студии - позволяет переключаться и делать предварительный просмотр, а также редактировать сцены, не затрагивая основной видеопоток. По нажатии на иконку шестеренки можно настроить параметры режима:

  • Дублировать сцену - при переходе сцена полностью дублируется в пространство вещания. Поэтому редактирование сцены в предпросмотре не влияет на вещание. Однако есть и отрицательный момент: горячие клавиши сцены перестают работать в этой дублированной сцене.
  • Менять местами сцены - при переходе меняются местами сцены. Очень удобно, если необходимо быстро переключаться между двумя сценами.                            

Ниже расположена панель с кнопками с быстрыми переходами. Их можно добавить из зарегистрированных в проекте.  

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-03%20%D0%B2%2016.43.46.png

Добавить переход в проект можно нажав на кнопку, указанную на скриншоте. По нажатию откроется контекстное меню, в котором есть стандартные переходы OBS. Там же доступна возможность создания нестандартных переходов, которые называются стингеры. Стингер - это видеофайл в формате webm. Такие файлы создаются в программе Adobe After Effects. О том, как это делается, можно посмотреть в видеоинструкции. К примеру, на канале BRNK:

Настройки добавляемого стингера интуитивно понятны. Стоит лишь выделить точку перехода. Если к стингеру не прилагалось описание этого параметра, можно подобрать на глаз. Для этого надо выставить примерное значение перехода. У большинства стингеров это значение лежит в пределах 1000-2000 мс, поэтому можно взять значение 1500 мс. Затем, используя кнопку предпросмотр, изменять это значение, пока резкая смена между фонами не будет полностью покрыта стингером. 

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-03%20%D0%B2%2017.29.02.png

Следующей основной задачей является настройка сцен. Сцены могут встраиваться друг в друга. Поэтому все сцены можно разделить на две категории: 

  • Основные сцены - собраны для отображения кастомного контента и используются для вывода в эфир.
  • Вспомогательные сцены - имеют общий для основных сцен контент и предназначены для встраивания в эти сцены.                          

К вспомогательным сценам можно отнести overlay. Он встраивается в каждую сцену и содержит элементы, которые должны присутствовать в каждой сцене. К таким элементам относиться:

  • Лого мероприятия и прочего
  • Строка со ссылками соц. сетей, текстами пожертвований и т.п. 
  • Музыка. Визуально не отображается, но необходима именно здесь, чтобы не прерывалась между сценами.
  • Секундомер заезда                          

Это основные элементы, которые необходимо добавить в базовую сцену. Однако есть еще подобные элементы:

  • Ведущий в рамке
  • Чат из стримингового сервиса                          

Эти элементы занимают очень много места. И поэтому могут быть с измененным размером или вовсе отсутствовать в различных основных сценах. Например: ведущего в рамке нет необходимости показывать, если он и так в основной сцене на весь экран. Так же бывает необходимость изменить для некоторых основных сцен конфигурацию таких элементов:

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-03%20%D0%B2%2018.10.26.png

В представленной основной сцене камера установлена так, что занимает всю верхнюю часть кадра. Поэтому, рамку ведущего необходимо было переместить, а чат уменьшить в высоте.

Исходя из вышеописанного целесообразно сделать “матрешку” из базового overlay, который встроить в частные overlay, которые, в свою очередь встраивать в основные сцены. 

Еще одним полезным свойством сцен является порядок слоев. Чем выше элемент в списке источников сцены, тем его слой выше остальных источников. Это свойство используется для наложения overlay. Также это свойство полезно использовать для “заглушки” внештатных ситуаций. Во всех сценах, где выводится контент на весь экран, целесообразно ставить фоновую картинку мероприятия в нижний слой. Тогда, в случае внештатного отсутствия источника, будет показан именно этот фон, а не черный экран. 

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202020-07-03%20%D0%B2%2018.41.27.png

После настройки всех сцен необходимо настроить источники звука. Для этого можно открыть контекстное меню в микшере и снять галку “только активные источники”. Здесь необходимо обратить внимание на прослушивание аудио. Эта опция отвечает за то, что будет ли этот источник слышен зрителям. Так же необходимо эмпирическим путем выравнить звук между всеми источниками. А музыку приглушить.

Полезные советы

  • Стриминговые сервисы строго следят за авторскими правами и могут удалить трансляцию прямо посреди неё. Например на YouTube за такое нарушение можно не только потерять; трансляцию, но и получить запрет на её проведение до 90 дней. Поэтому следует следить за аудио и видеосопровождением, чтобы оно не нарушало авторские права;
  • Необходимо провести проверку связи с участниками до начала соревнований. Возможно даже за несколько дней;.
  • Все организаторы должны быть на площадке для уменьшения задержек в трансляции;.
  • В Discord стоит использовать режим рации всем организаторам, дабы случайно не вклиниться в эфир;
  • Стоит рассчитать нагрузку на LAN;
  • Делегируйте части трансляции своим помощникам;.
  • Все что можно соединить по проводу - нужно соединять проводами и только так! Объемы передаваемой информации значительные, и беспроводные сети могут не выдержать или дать значительные задержки;
  • USB-камеры необходимо подключать напрямую, не используя usb-hub;      

DSC00043.jpg

Не стоит забывать о кабель-менеджменте.  Небрежно лежащие кабели могут испортить кадр, если использовать переносную камеру. Если нет специальных напольных каналов, то можно использовать малярный скотч.

Итоги

Трансляция требует знаний и ресурсов, однако, проведя несколько соревнований, становится существенно легче проводить последующие соревнования. Описанные в статье решения позволяют провести трансляцию, используя лишь имеющееся оборудование, без необходимости закупать дорогостоящие профессиональное оборудование, которое будет использоваться время от времени. Также эти решения могут быть использованы для трансляций оффлайн-мероприятий.

С результатом применения решений можно ознакомиться в записи трансляции:

P.S.

К статье приложены исходники проекта OBS. Но, к сожалению, импорт сцен в OBS работает частично, и просто развернуть проект не получится. Необходимо будет снова прописывать пути до файлов + необходимо поставить шрифт Roboto в систему.

Вопросы можно направлять на почту info@robofinist.ru или в коментариях.

Если статья оказалась полезной - ставьте лайк!

Файлы 4