Интернет-радио «Моминьмай»: будем знакомы
Здравствуй, Хабр!
Это моя первая статья здесь и сегодня я хочу рассказать о нашем необычном интернет-радио.
В этой статье будет ретроспектива, нынешнее состояние, планы на будущее. Немного философии по теме. Также коснусь технических деталей и приглашу к обсуждению.
Как мы размещаемся на «сервере» с 32 Мб оперативной памяти? Как мы выросли из пет-проекта одного человека до команды профессионалов, работающих на энтузиазме? Зачем и кому это вообще нужно?
Знакомство и ретроспектива
Позвольте представиться: меня зовут Артур, я программист и музыкант, основатель и исполнительный директор интернет-радио «Моминьмай».
Именно сегодня нашему радио исполняется 9 лет. Точную дату запуска установить вряд ли возможно, но мы условились считать таковой дату первого упоминания радио в посте моего микро-блога.
Я родился в семье кинооператора и моё детство прошло на донецкой студии телевидения. Там я на всю жизнь впечатлился эфирными медиа и усвоил принципы их создания. Редакции, пультовые, съёмочные павильоны, передвижные теле-студии — всё это было моим «вторым домом». И, хоть я выбрал позже путь программиста, любовь к эфирному медиа превратилась в хобби на грани IT и искусства.
Ещё на рубеже 1990-х — 2000-х в городской «локалке» (г. Евпатория) я держал своё первое радио. Эфир состоял то из музыки с моего жёсткого диска, то из коротких дайджестов городских новостей, то просто из ретрансляции FM-радиостанций. Всё это в программном плане осуществлялось связкой WinAMP + Shoutcast. В аппаратном — мой домашний компьютер + офисный микрофон + дешёвый китайский радио-приёмник, подключенный 3.5-«джеком» в line-in аудиокарты. Радио пользовалось местной популярностью: мне присылали композиции для дополнения плейлиста, просили передать приветы друзьям по «локалке» и уделяли особое внимание на общих офф-лайновых сборах. Я тогда казался обществу каким-то волшебником, а всего-то чуть больше остальных понимал как это работает и делился результатами собственных экспериментов.
Таким я был в далёком 2002-м году
В середине 2000-х я вернулся в Донецк чтобы учиться и впоследствии работать. В то время я продолжал интересоваться музыкой и историей развития эфирных медиа. И в 2012-м произошли два ключевых события, благодаря которым появилось радио «Моминьмай».
Первое из них — приобретение роутера D-Link DIR-620. На нём обнаружился один USB-порт, который предназначался в первую очередь для подключения 3G-модемов в качестве резервного канала. Но он же на родной прошивке позволял монтировать USB-накопители, причём даже с ext-файловыми системами. Telnet-доступ к роутеру так же существовал. После недолгого изучения доступных инструментов в прошивке на базе Linux я понял, что роутер вполне можно использовать как микро-веб-сервер. «Флэшки» на 512 Мб хватало для размещения с лихвой. Толку от такого «сервера» было немного. И так бы оно и осталось в виде эксперимента без особых выводов, если бы не второе событие.
Вторым оказался просмотр фильма «Рок-волна» («Boat that Rocked») На тот момент я знал многое о «пиратских радиостанциях» и, в частности, о «Радио Кэролайн» Но, одно дело — читать ретроспективу, а совсем другое — проникнуться «вау-эффектом» от замечательного фильма. Тут-то в голове и щёлкнула мысль: «А смогу ли я запустить интернет-радио на свободных ресурсах роутера?» Пара вечеров вдумчивого чтения документации, неделя оптимизации кода под конкретные условия — и, вот: для роутера собраны icecast2 и ices, которые сносно отдают OGG-поток в сеть. Роутер, тем временем, продолжал исполнять свои основные обязанности — раздавал Интернет по квартире.
Так выглядел наш первый сервер в 2012-м
Именно тогда и появилось радио «Моминьмай». Эфир состоял из относительно небольшого плейлиста, лежащего на той же «флэшке». Музыка воспроизводилась »24 / 7» и отбиралась в ротацию по принципу «что нам самим хотелось бы слушать». На тот момент моими единомышленниками и первыми же слушателями были моя супруга Наталья и мой друг Валентин (привет, @Evolik!) Ни о какой аудитории мы поначалу не задумывались, делали «для себя» и «экспериментов ради».
Эксперименты заключались не только в формировании плейлиста, но и в техническом плане. На роутере было всего 32 Мб оперативной памяти и не слишком производительный процессор. При кросс-компиляции для него приходилось учитывать различные оптимизации, а весь бэкенд писался на shell-script. Да, на том, который !#/bin/sh
(точнее — ash в busybox), а не на bash. Последний, как оказалось, был несколько тяжеловесен в плане памяти и процессора, когда речь заходит о сильно ограниченных ресурсах. Обо всех технических тонкостях, которые только смогу вспомнить, я обязательно расскажу в следующих статьях.
Для удобства я со временем зарегистрировал бесплатный домен от Freenom (тогда ещё Dot-Tk) и, спустя примерно год, обнаружил что радио вдруг стали слушать по всему миру. Мне писали из Калифорнии: «Чувак, я слушаю твоё радио утром в душе и в машине по дороге на работу! Круто! Вот тебе моя подборка — закинь в эфир если нравится.» Писали из Италии: Если тебе будет нужно «зеркало» — пиши, у меня есть свободные ресурсы.» А из Германии слушатель вообще прислал мне небольшой donation биткоином в размере $2.42 по курсу на тот момент (в феврале 2021-го я его обналичил в $270) Радио неожиданно стало чем-то бóльшим, чем просто «пет-проект для своих». Мне нечаянно удалось повторить свою «локалку», но теперь ей был весь мир.
Я стал чувствовать ответственность за работоспособность радио перед слушателями. При отвале канала меня среди ночи будила моя самописная система, а я будил техподдержку провайдера, если была на то необходимость. Пивом на сисопках компенсировал, конечно. В 2013-м году лютая гроза не пощадила роутер. Будучи временно безработным, я потратил последние деньги на покупку такой же модели и возобновил вещание меньше чем за сутки. В общем, я стал владельцем и, в некотором роде, рабом собственного радио.
Мы тогда начали задумываться о прямых студийных эфирах, но нехватка времени и последовавшие известные события на Донбассе не дали тогда этим планам сбыться. В конце 2014-го радио было упаковано в сумку рядом с ноутбуком и переехало из Донецка в Одессу.
512-ти мегабайтная «флэшка» сменилась на 16-ти гигабайтную. Количество музыки в ротации достигло почти пяти суток. А я, как музыкант, познакомился в Одессе с клубом «Выход», в котором проводились еженедельные блюз-фанковые джемы. После недолгих экспериментов я предложил клубу в качестве личной инициативы вести прямые трансляции джемов на моём радио. Забирал звук с аналогового пульта, цифровал на ноутбуке клуба и слал потоком к себе домой, на роутер. Так на радио появились первые прямые эфиры, пока ещё «as-is», без ведущих.
Сервер радио сейчас (флэшка переходная только, 8 Гб)
В истории радио «Моминьмай» было ещё немало интересных случаев. Изо всех сил стараюсь не утомлять в первой статье, поэтому расскажу о них в следующих. А пока переходим к настоящему времени.
Нынешнее на нашем радио
И опять «лирическое отступление», уж простите. В 2018-м я познакомился с Татьяной Волошиной. Татьяна — председатель неприбыльной организации «Одесское Городское Общество Защиты и Охраны Животных», наш «Биг Босс». У организации есть арендованный офис в центре Одессы и совершенно нет ресурсов для его содержания и развития. Татьяна, зная о моих связях с культурной сценой Одессы, попросила меня организовать культурное пространство на базе офиса организации. Довольно скоро офис стал полу-подпольным (в т.ч. буквально: мы находимся в полу-подвале) музыкально-поэтическим клубом под названием «Рога и Копыта». А многие музыканты, поэты и художники Одессы стали волонтёрами общества. И «волонтёр», в этом случае, не только тот, кто занимается проблемами животных непосредственно, а и тот, кто помогает в обустройстве офиса-пространства и популяризации зоозащитного движения с помощью своего искусства в окружающем социуме. Мы организовывали музыкальные джемы и благотворительные концерты. Вокруг «общества» начала создаваться культурная среда. А в перерывах клали плитку в офисе и крутили сантехнику.
Наша импровизированная студия
Наш коллега и единомышленник из Латвии, Нико, летом 2020-го вдруг предложил мне провести прямой эфир на моём радио и выступить в роли ведущего. Я начал своё обычное: «Ну-у, давай через пару дней попробуем…», на что получил резкое: «А почему не сейчас? Сколько тебе надо времени на подготовку?» Я сказал, что справлюсь за час. «Окей, ты ж с оборудованием мобильный, через час встречаемся на углу Дерибасовской и Екатерининской, оттуда ведём эфир» — ответил Нико.
Честно говоря, мне было страшно. Справимся ли? Не подведёт ли оборудование? Все опасения оказались зря: оснастка была «на высоте», а Нико показал себя отличным ведущим. Так появилась первая полноценная прямая передача на радио «Моминьмай» под названием «Эй, ты, подошёл!…» В эфире были байки от ведущих, живая музыка под акустическую гитару и саксофон, интервью с проходящими мимо одесситами и гостями города. Даже внезапные танцы от трёх пар профессионалов под наш разбитной рок-н-ролл! Наконец-то я ощутил, что моя мечта о создании прямых эфиров стала реальностью. И обрёл новых единомышленников, которые «загорелись» идеей радио.
Эфир на Дерибасовской / Екатериниской, Одесса
Передача «Эй, ты, подошёл!…» просуществовала недолго. Но в 2021-м мы вернулись к прямым эфирам уже с опытом и уверенностью. Сейчас мы ведём передачу «Чёрная Кошка» раз в две недели по пятницам. В прямом эфире мы с гостями обсуждаем вопросы зоозащиты и экосистем, делая перерывы на живую музыку от одесских коллективов и исполнителей, приходящих в нашу «студию» на основе офиса организации.
В гостях у нас были замечательные зоозащитники Одессы, эксперт-криминалист Павел Плевинскис и даже знаменитый директор одесского зоопарка Игорь Беляков, который исполнил в прямом эфире песню собственного сочинения.
Типичный эфир передачи «Чёрная Кошка», в гостях Игорь Беляков (справа на фото)
К нам со временем присоединились профессионалы своего дела — ведущие: Дмитрий Адамовский (журналист, репортёр), Андрей Мельник (поэт, музыкант), Марк Пан (актёр театра) Видеооператор и специалист по видеомонтажу — Ольга Махонько. Стажёр инженерно-технической части — Никита Трач. И музыканты Одессы, которые играют в прямых эфирах.
Люди, работающие на радио сейчас — энтузиасты. Мы не получаем зарплат и не монетизируем вещание напрямую. Всё, что у нас есть — собственное оборудование, которое сотрудники принесли на радио во временное пользование и немногочисленные донейты, которых едва хватает на сопутствующие накладные расходы. Ну и вложение собственных умений сотрудников, разумеется. Главное — нам всем это нравится: и тем кто делает, и нашим слушателям.
Стажёр внимательно стажируется
У такого «аскетичного» подхода есть как плюсы, так и минусы. Плюсами можно считать независимость (от инвесторов, к примеру) и низкие финансовые риски. А также некоторую экологичность подхода: мы используем ровно столько ресурсов, сколько действительно нужно. Минусы — сложность в разработке и сопровождении, технические ограничения в отдельных случаях.
Нам придётся расширяться. Уже запланированы другие интересные передачи, а это потребует более напряжённой сетки вещания и расширения штата. Привлечение редакторов и ведущих, дизайнеров, специалистов по ведению аккаунтов в социальных сетях и т.д. Нужно будет обновить парк техники. Ну, хотя бы заменить роутер на какой-нибудь микро-компьютер вроде пресловутой «малинки». Её, я уверен, нам хватит надолго.
Сейчас мы готовим краудфандинговую программу и пробуем подавать заявки на гранты по поддержке гражданских инициатив. Но мы определённо сохраним направленность на минимизацию необходимых ресурсов.
Я, образца 2021-го года
Некоторые технические детали
Основной и единственный сервер — роутер D-Link DIR-620 на относительно медленном канале в 100 мегабит. Поток — OGG/Vorbis, 127 Kbps.
Использование штатной прошивки не необходимость, а, скорее, «хакерская» лихость. Мне просто было интересно как далеко можно зайти с такими ограничениями. На каком-нибудь OpenWRT не так интересно.
Стабильность дополнительно обеспечивается CDN Cloudflare и сервисом ретрансляции интернет-радио Zeno.fm
Владимир экстренно приводит в порядок оборудование за 10 минут до эфира
В качестве студийного оборудования используются: пульт «Alesis MultiMix 8 FireWire», звуковая карта «Lexicon Alpha Studio», нетбук-трансформер «Asus TX201LA», различные электретные и динамические микрофоны.
Программное обеспечение: icecast2, ices, lighttpd, ffmpeg, OBS Studio, бэкенд на shell-script.
Немногочисленные данные хранятся просто в текстовых файлах. Какие-нибудь выборки на самом роутере не нужны, поэтому никаких движков баз данных мы не используем. Очень забавно при этом наблюдать в логах попытки просунуть SQL-иньекцию.
И ещё общей философии о радио
Мне часто задают вопросы о выборе именно такого формата вещания. Опишу своё видение на их основе и моих ответах. Я, разумеется, могу оказаться неправ и буду рад, если вы поправите меня в комментариях.
Радио-формат справедливо противопоставляется телевизионному. В случае с радио задействуется лишь звуковое восприятие, а телевидение требует визуального в том числе. При этом любое активное восприятие требует внимания от слушателя / зрителя. Внимание — ресурс ограниченный. В случае восприятия информации в аудиовизуальной форме, внимание будет неизбежно «размываться» между конкурирующими потоками. «Видео без звука» осталось в эре «немого кино» (да и то в кинозале всегда играл музыку тапёр) А, вот, «звук без видео» отлично существует до сих пор, как минимум, в форме подкастов и музыки.
Вдобавок я заметил и за собой и за друзьями тенденцию запускать студийные видео-эфиры на YouTube в фоновой вкладке и слушать только звук. Максимизируя: YouTube за рулём авто не посмотришь, а послушать что-то — вполне возможно.
А ещё для видео-стрима нужно не только хорошо звучать в студии, но и «выглядеть». Это требует хорошего света и оптики. И не каждый гость студии чувствует себя уютно при направленном на него объективе. Даже бывалые ведущие радио-эфиров со сценическим опытом несколько тушуются в таких ситуациях.
Собакена устраивает и слушать и выглядеть
Ну и банальный технический вопрос: для аудио-трансляции хватает минимального оборудования и канала. А для видео обязательно потребуется обращаться ко крупным площадкам, что исключает независимость вещания. Известных случаев проблем с тем же YouTube достаточно. Да и я сам попадал под автоматический бан всего аккаунта без каких-либо нарушений с моей стороны. UPD: совсем недавно поймал «страйк» по совершенно не связанной с опубликованным видео причиной. Апелляция, впрочем, быстро помогла.
Как итог, мы сознательно отказались от видео-вещания и даже от ретрансляции радио через крупные сервисы. При этом во время передач ведётся фото-видео съёмка с моментальной публикацией в телеграм-канал радио удачных моментов. И выкладыванием на YouTube-канал отредактированного материала.
Теперь по поводу «Почему всё-таки прямые эфиры, а не запись подкастов?» Я считаю, что «золотой век» радио пришёлся на 60-е — 70-е годы прошлого века. Примерно в то время радиостанции перешли от дикторских новостей и радиоспектаклей в более «живую», интерактивную форму. Появились радиоведущие, гости эфиров и звонки в студию от слушателей. Как выяснилось, каждый хочет стать «звездой». Или побыть. Пусть даже в эфире небольшой локальной радиостанции. Подкасты менее интерактивны: можно, в лучшем случае, обсудить произошедшее в комментариях и попросить раскрыть тему в следующем эфире. А особая «магия» происходящего «здесь и сейчас» слушателю интересней.
Мы до сих пор не сделали возможность полноценно принимать звонки в прямой эфир, но уже близки к этому технически и это обязательно будет. И записи эфиров уже выкладываются в виде подкастов для тех, кто не успел послушать нас вживую.
Другой, часто задаваемый вопрос: «Почему интернет-радио, а не частотное?» У интернет-радио есть очевидные плюсы: «дальность» вещания определяется наличием доступа в Интернет у слушателя. Мы действительно вещаем на весь мир и не несём каких-либо дополнительных трат на это. Несмотря на то, что наши прямые эфиры русскоязычные, география прослушиваний действительно впечатляющая. Всё просто — русскоязычные диаспоры существуют почти в каждой стране.
Нико берёт интервью у мимо проходивших гостей города
В дополнение, получение лицензии на частотное радиовещание — это дорого для нас и налагает немаленькие обязательства. А мы позиционируем себя как независимое радио, помните?
В процессе мы немного похулиганили в разрешённом гражданском диапазоне частот, но лишь эксперимента и искусства ради. Быстро перестали, никого не разозлив. Всё ж радиолюбителей уважаем и больше так делать не будем.
Планы на будущее
Будущее всегда туманно. Планировать всегда тяжело. Но общая тенденция и желаемое направление у нас есть. Мы хотим стать по-настоящему независимым и интересным для слушателей радио. В ближайших планах повышение популярности и интерактивности. Улучшение качества звука (этот процесс бесконечный) и расширение сетки вещания за счёт увеличения количества передач и рубрик в них. Взаимная реклама одесских (и не только) музыкальных коллективов и нас. Продуктивное общение с IT-сообществом. И всё прочее, что только придёт нам в головы и что вы нам сможете посоветовать.
Наша «пиратская шхуна» расправила паруса и продолжает идти полным ходом по интернет-радио-волнам. Добро пожаловать на борт!
Эй, там, на палубе!…
Позиция о пиратстве
Лично я и наш коллектив не считаем пиратство чем-то категорически плохим. Как музыкант и разработчик коммерческого ПО, я всегда искренне рад, если продукты моего труда распространяются на любых условиях. «Упущенную выгоду» не приемлю для себя и очень прохладно отношусь к ней в упоминаниях других.
Да, мы «крутим» в эфире много треков, на воспроизведение которых у нас нет прав. Но, во-первых, мы не получаем от этого прямой финансовой выгоды. А, во-вторых, благодаря этому мы создаём и свободно распространяем своё творчество.
Мы — пираты, но мы — честные пираты. Знаю, что это тема для возникновения порой острых и довольно паритетных дискуссий, но с радостью раскрою её в комментариях, если у кого-то возникнет желание.
I mean it!
Одесситам Хабра
Я знаю, вас много! Мы будем искренне рады видеть вас у нас в гостях. С удовольствием обсужу IT-шные, и не только, вопросы. Расскажу интересные байки за кружкой чая, или ещё чего. Пишите в комментариях или в личные сообщения.
Конечно же, гостей города будем тоже рады у нас видеть!
Большое спасибо
Хочу лично поблагодарить @RusakovMxL за совершенно неожиданное приглашение в полноправные пользователи Хабра. В частности оно меня сподвигло на написание первой статьи. Я очень ценю этот аванс и изо всех сил постараюсь оправдать доверие.
А также @Exosphere за оперативную и замечательную рецензию черновика статьи.