Полезные привычки программиста после 30, MySQL vs Postgres и как поговорить об этом в субботу

Год назад нижегородский PHP-чат собрался на свой первый, а вскоре и второй митап. Третий все откладывался. В итоге мы решили провести его в смешанном формате: спикеры соберутся на площадке и выступят перед ограниченной аудиторией (со всеми мерами профилактики), а желающие смогут не просто смотреть трансляцию —, но и общаться с докладчиками голосом (и не по зуму).

zkddp2dnts1a5xci-gykbdvlqmw.jpeg
Вы сможете задать вопрос голосом, просто открыв этот плеер на ютубе в субботу и следуя нехитрым инструкциям.

В программе три доклада: прочитать подробнее о них и самих докладчиках можно на страничке митапа. А ниже бегло расскажу, как мы на коленке изобрели недорогое решение для организации трансляции и телемоста, которое можно воспроизвести практически всюду.
Небольшая предыстория. Прошлой осенью ребята из Skyeng поучаствовали в 25+ митапах, в основном — региональных. Запись была где-то на половине: при этом большинство роликов выкладывалось с огромной задержкой по времени, а запись с нормальным звуком получилась на трех-четырех событиях. Трансляция была на пяти: нормальный звук в трансляции — на одном.

И это казалось странным: 21-й век, люди в космос летают, а стрим сделать не могут.

Зачем региональному митапу трансляция на Youtube


Часто слышал от организаторов, что «если мы сделаем трансляцию, никто не придет». Имхо, люди, которые не хотят к вам приходить, — и так не придут.

Кому-то неудобно по времени, локации, другим причинам (например, есть люди с инвалидностью). Без трансляции вы потеряете их. Кто-то боится новой тусовки и не понимает, что и как будет на мероприятии, — аудиовизуальные материалы помогут им понять, как все проходит обычно, и, возможно, решиться прийти в следующий раз.

Наконец, трансляция на Youtube — самый простой вариант получить артефакт со встречи. Стрим сохранится автоматически и будет доступен, пока в стране не заблокируют пока того будет хотеть видеохостинг и вы. Затем стрим можно нарезать и выложить доклады отдельными роликами. Возможно, через пару лет сообщество заглохнет. И даже записей на ютубе не останется. Обидно.

Как организовать трансляцию, имея два ноутбука и Google Chrome


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

Да, но нет. Точнее, если вы хотите организовать на митапе стрим уровня конференции, то, конечно, вам нужна видеобригада. А если вам достаточно, чтобы:

  • было видно человека,
  • было четко видно слайды,
  • было четко слышно человека,
  • и вы могли минимально режиссировать трансляцию, то…


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

Остальное можно сделать с помощью самого просто браузерного ПО, возникшего вокруг API Youtube — сегодня есть несколько сервисов, которые предлагают что-то вроде смеси старого (еще с возможностью стриминга на ютуб) Hangouts и OBS — программы для режиссирования трансляций.

-efvsaveaxhuxajmzt-zki4hqcc.png
По сути, у вас есть видеокомната и несколько элементов управления стримом: возможность подключать разные источники картинки и звука, а затем выводить их в эфир. Справа — лента комментариев с ютуба.

Мы остановились на Streamyard — просто потому, что его использовали несколько подкастов, которые мы слушали. Этот сервис в бесплатной версии мы и проверили на втором митапе PHP NN в декабре 2019-го. Получилось вот так:

yys4sko-lmnuxr5sg0kls-_w8ik.png
При 25 людях в зале, к эфиру в тот день подключились порядка 100 человек (максимум 18 одновременно). А через неделю ссылка на трансляцию попала в PHP-дайджест — пришло еще 200+ зрителей.

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

51xnwkdahspbuptnq072eltegb4.jpeg
Простите за качество фото, другого не сохранилось. Чтобы докладчик не выходил из поля обзора камеры, наметили ему «загончик» бумажными стикерами на полу.

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

0pdpl7u92qmokntikv1oinjx9pe.png
Зрители трансляции в PHP-чате Нижнего тут же заинтересовались реализацией.

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


До сих пор кажется, что это неплохо для наколенного решения, развернутого за 15 минут из подручных материалов и без какого-либо навыка в организации трансляций.

Дальше мы стали думать, как улучшить картинку и звук.


Как снять звук


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

Обычно микрофоны и колонки коммутируются через пульт. Мы стали думать, как завести звук с пульта в ноутбук — и увидели простое решение.

ketjt1gv9xwu8r4-vx0wgwq_p2s.jpeg
Выход пульта + провод джек-миниджек + микрофонный вход аудиокарты. Эта схема проста. И больше нет ничего)

Такая схема может работать и при отсутствии пульта, если есть доступ к колонкам, а у них есть лишний выход. Просто сами переходники будут чуть другими: XLR на миниджек.

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


В вопросах ко второму докладу можно заметить первый сеанс связи зрителя из трансляции со спикером в зале.

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


Как вывести звук от зрителя трансляции в зал


Все просто. Streamyard, как и его аналоги, предлагает нам видеокомнату в браузере. В эту комнату может подкючиться любой пользователь хрома (и некоторых других браузеров, но мы особо не проверяли). Остается надеяться, что на его стороне будет нормальный интернет и звук.

Чтобы человека по ту сторону браузера было слышно в зале, мы задействуем выход аудиокарты на наушники: забираем звук в пульт при помощи переходника с миниджека на пару «тюльпанов» или джеков.

sjwsuhjdrog_7ksuy8cvshxwyyw.jpeg
Вот эти ребята.

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

qds2h-iiaxxuqvox0nptfpk1s3s.png
Для зрителя трансляции призыв подключиться выглядит как-то так: этот же комментарий с активной ссылкой можно найти в чате трансляции.

А дальше наступает время общения.


Что в итоге


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

i75l8zutubklfwnl9lsodla41da.png
На недавний стрим заходило уже свыше 400 зрителей, до 90+ были одновременно в трансляции, а порядка 50 человек смотрели весь митап целиком. Онлайн-зрители подключались с вопросами из разных городов.

  • Сетап из различных вариантов коммутации и аудиокарты стоил порядка 2 тысяч рублей: мы закупили побольше переходников и взяли карту, о которой точно было известно, что она распознается на устройствах с современными версиями винды и макоси. Опять же, в теории можно было сэкономить и на аудиокарте, и на проводах — если вы хорошо знаете площадку и не собираетесь ее менять, а также готовы повозиться с драйверами для карточки. Найти такое оборудование в продаже можно почти всюду, а если что — заказать с доставкой.

xmx8ixvqzd_zqse54pn4usi8wd4.jpeg
Все оборудование между митапами помещается в небольшой чехол и спокойно хранится-транспортируется.

  • Быстро поняли, что идеально стримить по проводу: вайфай нестабилен. И докупили переходник Ethernet на usb. В целом, можно стримить и по воздуху — если вайфай моргнет, Streamyard сам поднимет трансляцию по той же ссылке обратно.

Какие есть ограничения


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

Но, учитывая, что у вас просто митап, а не платная трансляция с конференции, накладки можно простить.

p.s. Пока это все неразрешимые проблемы, которые мы выявили. Вы можете помочь нам словить больше багов смешанного формата, подключившись к 3-му нижегородскому PHP-митапу в эту субботу, 14 ноября. Стартуем в 11 часов по Москве/Киеву/Минску.


В этот раз обкатаем на бою схему с подключением напрямую к колонкам. В теории, должно работать)

© Habrahabr.ru