Радио Гиперион - детали
17/6/26 16:59Наш радиосервер последний раз проработал без падений довольно долго, около полугода. А потом снова лёг, да так, что костей не собрал. К тому же там начались очередные гонения на VPN, и стало проще настроить новый сервер с нуля. Наиль собрал новую машину и постарался восстановить весь комплект программ, которые занимались трансляцией. Но всё точно воссоздать не получилось. И мне пришлось вспоминать, что я там придумывал, и какие палочки подвязывал, чтобы всё крутилось. В прошлом я эту мудрость не записал и оказался лохом.
Состав Радио Гиперион:
1. Файлы mp3, нарезанные с концертов, которые звучали в Гиперионе. Одна песня - один файл.
2. Плеер AIMP, который проигрывает в шаффле гигантский плейлист на несколько дней.
3. OBS, которая изготовляет видеопоток из анимированной фотографии сцены старого Гипериона и аудиопотока из AIMP, снабжает информацией из mp3-тегов и отправляет на Ютуб.
4. Ютуб, который изготовляет переносимый ролик трансляции, который можно приткнуть где угодно.
Теперь подробнее по каждому пункту.
1. Коллекция mp3.
Всё нарезается с концертных записей. Основной архивный носитель у нас - это видеозаписи трансляций и концертов, которые ведёт Гиперион и выкладывает на своём канале в Ютубе. Оттуда скачивается аудиодорожка и отправляется, например, в Adobe Audution. В каждой выбранной к нарезке песне проверяется общее качество и уровень; если надо, проходится компрессором и нормализатором. И делается fade in и fade out (на аплодисментах).
Файлы сохраняются в папку формата YYMMDD_Familiya и именуются в формате YYMMDD_Familiya_Nazvanie_pesni.mp3. Настройки сжатия CBR 320 kbit/s.
Затем надо прописать все mp3-теги в каждый файл, это важно. Для этого у нас есть отличная программка mp3tag v2.91 (не моложе, потому что более поздние версии требуют денег).
Вот тут важный момент - какие поля и как заполняются (по-русски).
1. "Обложка". Для всех файлов радио у нас есть стандартная картинка 900 на 900 пикселей - фотография сцены старого Гипериона.
2. "Альбом". Формат ввода: «Гиперион», DD.MM.YYYY.
3. "Артист". Имя и фамилия.
4. "Год" - YYYY.
Это были общие поля, которые заполняются скопом. Дальше по каждому треку.
5. Название песни.
6. "Заметки". Вот в этом поле указывается авторство. Например, "ст. Давида Астрахана, муз. Веры Вотинцевой" (строчка идёт с маленькой буквы).
7. "Исполнитель альбома". А тут указываются дополнительные музыканты, если они тоже участвуют. Например: "Дмитрий Толпегов (тромбон)".
Остальные поля должны быть пустыми. Если "Жанр" что-то требует обязательно, можно там выбрать "Other".
Ещё стоит обратить внимание на стандарт тегов (это в настройках). У нас он ID3v2.3 (ID3v1 ID3v2.3).
Когда комплект mp3-файлов прошит тегами и готов, вся папка заливается на радиосервер, в общее хранилище "sound".
2. Плеер AIMP
Почему именно он? Потому что он единственный, который умеет передавать из mp3-файла информацию из тегов в момент проигрывания. И не просто в интерфейс программы (это-то обычный стандарт), а в отдельный текстовый файл. Именно этот текстовый файл читает потом программа OBS и добавляет нужную строку прямо в видеопоток. Так получается правильная фишка радио - человек слышит какую-то песню и сразу видит, кто и что поёт.
Теперь как это сделать.
Открываем настройки Аимп'а - и ищем вкладку "Плагины". Среди прочих там есть такой "Информация о треке в..." Вот он нам и нужен. Нажимаем плюсик, чтобы создать своё собственное правило, называем "Инфо". Здесь будет информация о исполнителе и названии песни.
Обычно там уже всё подобрано, как надо по умолчанию. Но некоторые поля надо прописывать.
"Реагировать на событие" - "Запуск трека".
"Брать информацию о:" - "Текущем треке".
"Источник шаблона" - "Строка".
"Шаблон" - вот тут руками пишем: "%Artist — «%Title»". Это как раз даёт нам самую верхнуюю строку в картинке радио: "Имя Фамилия (длинное тире) «Название песни» (в кавычках-ёлочках)".
"Исходная кодирока" - "Auto". Тут лучше не выдумывать, программа mp3tag всё и так сделала правильно, в кодировке UTF-8, это стандарт для русского языка.
"Русский/украинский в транслит" - не надо.
"Сохранять в файл" - вот тут надо прописать вручную название и расположение этого текстового файла, куда Аимп будет сохранять эту строку. Например, "C:\Radio\info.txt".
"Сохранять в Unicode" - да.
"Новая информация вверху" - да.
"Удалить последний перенос строки" и "Заполнять недостающие пустыми строками" - не надо.
"Максимальное количество записей в файле" - а вот тут очень важно, чтобы стояла цифра "1". Если там будет что-то другое, на картинке в OBS будет чорт знает что, а нам этого не надо.
После того, как мы сохранили это правило, делаем ещё несколько новых. Опять нажимаем плюсик и т.д. Все параметры остаются те же, кроме названия правила, "Шаблона" и "Сохранять в файл".

"Правило" - "Альбом"
"Шаблон" - "%Album"
"Сохранять в файл" - "C:\Radio\info_albom.txt"
"Правило" - "Коммент"
"Шаблон" - "%Comment"
"Сохранять в файл" - "C:\Radio\info_comment.txt"
"Правило" - "Доп. музыкант"
"Шаблон" - "%AlbumArtist"
"Сохранять в файл" - "C:\Radio\info_dop_muzykant.txt"
Итого при проигрывании любого трека в нужной нам папке автоматически создаются четыре текстовых файла:
info.txt
info_albom.txt
info_comment.txt
info_dop_muzykant.txt
И в каждом ровно по одной строке. Как только трек в плейлисте сменится, информация в этих файлах мгновенно перезаписывается.
Что до плейлиста, то надо сделать отдельный плейлист, назвать его "Гиперион" и настроить так, чтобы он автоматически брал всё содержимое из определённой папки вместе со всеми подпапками внутри. Так потом удобно будет заливать новые треки - чтобы он их сразу подхватывал. Назначить режим шаффла (случайный выбор) - это знак двух перекрещённых стрелочек. И закольцевать плейлист навечно. Громкость по вкусу.
В самом низу окна плеера под плейлистом идут полезные циферки. Это общее количество файлов, общее время звучания и вес файлов.
Ещё там есть прекрасная функция (нажать на три точки) - "Экспорт плейлиста". Экспорт идёт в формате html и красиво оформлен. С ним можно работать.

3. OBS
Тут тоже, в принципе, ничего сложного. Делаем сцену "Радио Гиперион" и постепенно добавляем в неё нужные источники.
1. Статичную картинку - вид старого Гипериона. Она сейчас сделана из 10-секундного видео, которое у нас там раньше крутилось. Просто экспорт кадра.
2. Крошечное видео горящего камина, поставлено ровно на нужное место. Это сделано для того, чтобы максимально уменьшить нагрузку на процессор - чем меньше видеофрагмент, тем легче его транслировать.
Важный момент: надо проверить в свойствах видео, какой у него параметр FPS - и точно такой же выставить потом в настройках трансляции OBS.
2. Тень сверху. Это полупрозрачный градиент в формате PNG (поддерживает прозрачность), сделан в Фотошопе. Дело в том, что на этом месте будут строчки из информационных файлов Аимп'а, которые идут белым цветом. И чтобы текст лучше читался, надо под него подложить что-нибудь тёмное.
3. Тень снизу справа. Та же причина - там будут не только строчки, но и логотип Гипериона.
А вот теперь добавляем источник типа "Текст". И называем его
4. "Инфо: Автор — Название"
"Чтение из файла" - "C:\Radio\info.txt"
Выбираем шрифт и размер (например, Камбрия болд). Включаем сглаживание, цвет текста - белый, цвет фона - чёрный, выравнивание влево и прочее - все изменения видны сразу. И ставим строчку туда, где она должна быть - в левый верхний угол.
И всё то же самое для ещё трёх источников "Текст":
5. "Инфо: Альбом"
6. "Инфо: Коммент"
7. "Инфо: Доп. музыкант"
И всё размещаем на сцене, где надо. В источнике "Инфо: Альбом" я ещё навесил фильтр "Кадрирование", потому что слово "Гиперион" и так есть на логотипе, нет смысла его повторять дважды. Поэтому из той строки приходит в сцену только дата.
8. Логотип Гипериона - в правый нижний угол.
9. Ну и вишенка на торте - прогресс-бар. Он берётся очень просто - из Аимп'а. Добавляется новый источник "Захват окна" (или "Захват экрана"). На рабочем столе эти две программы распределяются таким образом, что умещаются обе. Навешиваем фильтр "Цветовой ключ" и настраиваем так, что все лишние цвета на картинке становятся прозрачными, кроме оранжевого прогресс-бара. Затем кадрируем, оставляя только прогресс-бар, масштабируем (с шифтом) и ставим на нужное место внизу. Циферки тоже можно ставить.
Звук берётся в OBS автоматически - это "Звук рабочего стола". Важно только никаких лишних программ открытыми не держать, из которых могут раздаваться какие-нибудь служебные звуки.

Теперь что с настройками у OBS.
Вкладка "Трансляция". В разные моменты жизни Радио Гиперион там всё было по-разному. Сейчас жизнь сложилась так, что начинаем сразу взаимодействовать с Ютубом.
На Ютубе в "Творческой студии" создаём новую трансляцию и смотрим на её параметры. Сверху находим "Создать ключ трансляции". Создаём и называем его "Радио". Выбираем его.
Ниже смотрим, какой сервер предлагается - например, rtmp://a.rtmp.youtube.com/live2.
Перед этим Ютуб может предложить ещё назвать эту будущую трансляцию - "Радио Гиперион", заполнить поле описания (невопрос, у нас есть), выбрать обложку (тоже несложно нарисовать) степень доступности (для всех или только по ссылке) и прочие параметры.
Возвращаемся в OBS.
"Служба" - "Настраиваемый..."
"Сервер" - вот то, что Ютуб предлагает.
"Ключ потока" - то, что Ютуб нам сделал.
Дальше галочка на "Использовать вход в аккаунт" - и логинимся в Ютубе через OBS.
Вкладка "Вывод" - "Трансляция" - "Настройки кодировщика". Там важен только пункт "Битрейт". Для Радио Гиперион вполне достаточно 3000 Kbps.
Остальные пункты не принципиальны:
"Управление битрейтом" - "CBR".
"Интервал ключевых кадров" - "2 сек".
"Предустановка нагрузки на ЦП" - "ultrafast".
И вкладка "Видео".
"Разрешение предпросмотра" - у нас 1280 на 720 (самый маленький стандарт для видео).
"Разрешение выхода" - ровно то же самое.
"Частота кадров" - вот тут, напоминаю, должно быть ровно столько же, сколько в свойствах файла у того видео, которое участвует в нашей трансляции. У нас - "25".
Ну и, собственно, всё. Нажимаем на кнопку "Запустить трансляцию" и идём смотреть на Студию в Ютуб. Там начинается какое-то шевеление и наконец Ютуб сообщает: "О, да у вас тут какая-то трансляция пошла. Выпустить в эфир?" Ответ "да". Ну а дальше эта трансляция становится видна в Творческой Студии в разделе "Трансляции", можно легко взять её код и вставить, куда надо.
Если всё в OBS настроено правильно, можно открыть её окошко "Статистика" и посмотреть на параметр "Среднее время рендеринга кадра". Должно быть примерно 1,5 - 2,5 ms. А пропусков кадров вообще не должно быть.

Радио льётся, сейчас у нас три дня и девять с половиной часов звучания.
Состав Радио Гиперион:
1. Файлы mp3, нарезанные с концертов, которые звучали в Гиперионе. Одна песня - один файл.
2. Плеер AIMP, который проигрывает в шаффле гигантский плейлист на несколько дней.
3. OBS, которая изготовляет видеопоток из анимированной фотографии сцены старого Гипериона и аудиопотока из AIMP, снабжает информацией из mp3-тегов и отправляет на Ютуб.
4. Ютуб, который изготовляет переносимый ролик трансляции, который можно приткнуть где угодно.
Теперь подробнее по каждому пункту.
1. Коллекция mp3.
Всё нарезается с концертных записей. Основной архивный носитель у нас - это видеозаписи трансляций и концертов, которые ведёт Гиперион и выкладывает на своём канале в Ютубе. Оттуда скачивается аудиодорожка и отправляется, например, в Adobe Audution. В каждой выбранной к нарезке песне проверяется общее качество и уровень; если надо, проходится компрессором и нормализатором. И делается fade in и fade out (на аплодисментах).
Файлы сохраняются в папку формата YYMMDD_Familiya и именуются в формате YYMMDD_Familiya_Nazvanie_pesni.mp3. Настройки сжатия CBR 320 kbit/s.
Затем надо прописать все mp3-теги в каждый файл, это важно. Для этого у нас есть отличная программка mp3tag v2.91 (не моложе, потому что более поздние версии требуют денег).
Вот тут важный момент - какие поля и как заполняются (по-русски).
1. "Обложка". Для всех файлов радио у нас есть стандартная картинка 900 на 900 пикселей - фотография сцены старого Гипериона.
2. "Альбом". Формат ввода: «Гиперион», DD.MM.YYYY.
3. "Артист". Имя и фамилия.
4. "Год" - YYYY.
Это были общие поля, которые заполняются скопом. Дальше по каждому треку.
5. Название песни.
6. "Заметки". Вот в этом поле указывается авторство. Например, "ст. Давида Астрахана, муз. Веры Вотинцевой" (строчка идёт с маленькой буквы).
7. "Исполнитель альбома". А тут указываются дополнительные музыканты, если они тоже участвуют. Например: "Дмитрий Толпегов (тромбон)".
Остальные поля должны быть пустыми. Если "Жанр" что-то требует обязательно, можно там выбрать "Other".
Ещё стоит обратить внимание на стандарт тегов (это в настройках). У нас он ID3v2.3 (ID3v1 ID3v2.3).
Когда комплект mp3-файлов прошит тегами и готов, вся папка заливается на радиосервер, в общее хранилище "sound".
2. Плеер AIMP
Почему именно он? Потому что он единственный, который умеет передавать из mp3-файла информацию из тегов в момент проигрывания. И не просто в интерфейс программы (это-то обычный стандарт), а в отдельный текстовый файл. Именно этот текстовый файл читает потом программа OBS и добавляет нужную строку прямо в видеопоток. Так получается правильная фишка радио - человек слышит какую-то песню и сразу видит, кто и что поёт.
Теперь как это сделать.
Открываем настройки Аимп'а - и ищем вкладку "Плагины". Среди прочих там есть такой "Информация о треке в..." Вот он нам и нужен. Нажимаем плюсик, чтобы создать своё собственное правило, называем "Инфо". Здесь будет информация о исполнителе и названии песни.
Обычно там уже всё подобрано, как надо по умолчанию. Но некоторые поля надо прописывать.
"Реагировать на событие" - "Запуск трека".
"Брать информацию о:" - "Текущем треке".
"Источник шаблона" - "Строка".
"Шаблон" - вот тут руками пишем: "%Artist — «%Title»". Это как раз даёт нам самую верхнуюю строку в картинке радио: "Имя Фамилия (длинное тире) «Название песни» (в кавычках-ёлочках)".
"Исходная кодирока" - "Auto". Тут лучше не выдумывать, программа mp3tag всё и так сделала правильно, в кодировке UTF-8, это стандарт для русского языка.
"Русский/украинский в транслит" - не надо.
"Сохранять в файл" - вот тут надо прописать вручную название и расположение этого текстового файла, куда Аимп будет сохранять эту строку. Например, "C:\Radio\info.txt".
"Сохранять в Unicode" - да.
"Новая информация вверху" - да.
"Удалить последний перенос строки" и "Заполнять недостающие пустыми строками" - не надо.
"Максимальное количество записей в файле" - а вот тут очень важно, чтобы стояла цифра "1". Если там будет что-то другое, на картинке в OBS будет чорт знает что, а нам этого не надо.
После того, как мы сохранили это правило, делаем ещё несколько новых. Опять нажимаем плюсик и т.д. Все параметры остаются те же, кроме названия правила, "Шаблона" и "Сохранять в файл".

"Правило" - "Альбом"
"Шаблон" - "%Album"
"Сохранять в файл" - "C:\Radio\info_albom.txt"
"Правило" - "Коммент"
"Шаблон" - "%Comment"
"Сохранять в файл" - "C:\Radio\info_comment.txt"
"Правило" - "Доп. музыкант"
"Шаблон" - "%AlbumArtist"
"Сохранять в файл" - "C:\Radio\info_dop_muzykant.txt"
Итого при проигрывании любого трека в нужной нам папке автоматически создаются четыре текстовых файла:
info.txt
info_albom.txt
info_comment.txt
info_dop_muzykant.txt
И в каждом ровно по одной строке. Как только трек в плейлисте сменится, информация в этих файлах мгновенно перезаписывается.
Что до плейлиста, то надо сделать отдельный плейлист, назвать его "Гиперион" и настроить так, чтобы он автоматически брал всё содержимое из определённой папки вместе со всеми подпапками внутри. Так потом удобно будет заливать новые треки - чтобы он их сразу подхватывал. Назначить режим шаффла (случайный выбор) - это знак двух перекрещённых стрелочек. И закольцевать плейлист навечно. Громкость по вкусу.
В самом низу окна плеера под плейлистом идут полезные циферки. Это общее количество файлов, общее время звучания и вес файлов.
Ещё там есть прекрасная функция (нажать на три точки) - "Экспорт плейлиста". Экспорт идёт в формате html и красиво оформлен. С ним можно работать.

3. OBS
Тут тоже, в принципе, ничего сложного. Делаем сцену "Радио Гиперион" и постепенно добавляем в неё нужные источники.
1. Статичную картинку - вид старого Гипериона. Она сейчас сделана из 10-секундного видео, которое у нас там раньше крутилось. Просто экспорт кадра.
2. Крошечное видео горящего камина, поставлено ровно на нужное место. Это сделано для того, чтобы максимально уменьшить нагрузку на процессор - чем меньше видеофрагмент, тем легче его транслировать.
Важный момент: надо проверить в свойствах видео, какой у него параметр FPS - и точно такой же выставить потом в настройках трансляции OBS.
2. Тень сверху. Это полупрозрачный градиент в формате PNG (поддерживает прозрачность), сделан в Фотошопе. Дело в том, что на этом месте будут строчки из информационных файлов Аимп'а, которые идут белым цветом. И чтобы текст лучше читался, надо под него подложить что-нибудь тёмное.
3. Тень снизу справа. Та же причина - там будут не только строчки, но и логотип Гипериона.
А вот теперь добавляем источник типа "Текст". И называем его
4. "Инфо: Автор — Название"
"Чтение из файла" - "C:\Radio\info.txt"
Выбираем шрифт и размер (например, Камбрия болд). Включаем сглаживание, цвет текста - белый, цвет фона - чёрный, выравнивание влево и прочее - все изменения видны сразу. И ставим строчку туда, где она должна быть - в левый верхний угол.
И всё то же самое для ещё трёх источников "Текст":
5. "Инфо: Альбом"
6. "Инфо: Коммент"
7. "Инфо: Доп. музыкант"
И всё размещаем на сцене, где надо. В источнике "Инфо: Альбом" я ещё навесил фильтр "Кадрирование", потому что слово "Гиперион" и так есть на логотипе, нет смысла его повторять дважды. Поэтому из той строки приходит в сцену только дата.
8. Логотип Гипериона - в правый нижний угол.
9. Ну и вишенка на торте - прогресс-бар. Он берётся очень просто - из Аимп'а. Добавляется новый источник "Захват окна" (или "Захват экрана"). На рабочем столе эти две программы распределяются таким образом, что умещаются обе. Навешиваем фильтр "Цветовой ключ" и настраиваем так, что все лишние цвета на картинке становятся прозрачными, кроме оранжевого прогресс-бара. Затем кадрируем, оставляя только прогресс-бар, масштабируем (с шифтом) и ставим на нужное место внизу. Циферки тоже можно ставить.
Звук берётся в OBS автоматически - это "Звук рабочего стола". Важно только никаких лишних программ открытыми не держать, из которых могут раздаваться какие-нибудь служебные звуки.

Теперь что с настройками у OBS.
Вкладка "Трансляция". В разные моменты жизни Радио Гиперион там всё было по-разному. Сейчас жизнь сложилась так, что начинаем сразу взаимодействовать с Ютубом.
На Ютубе в "Творческой студии" создаём новую трансляцию и смотрим на её параметры. Сверху находим "Создать ключ трансляции". Создаём и называем его "Радио". Выбираем его.
Ниже смотрим, какой сервер предлагается - например, rtmp://a.rtmp.youtube.com/live2.
Перед этим Ютуб может предложить ещё назвать эту будущую трансляцию - "Радио Гиперион", заполнить поле описания (невопрос, у нас есть), выбрать обложку (тоже несложно нарисовать) степень доступности (для всех или только по ссылке) и прочие параметры.
Возвращаемся в OBS.
"Служба" - "Настраиваемый..."
"Сервер" - вот то, что Ютуб предлагает.
"Ключ потока" - то, что Ютуб нам сделал.
Дальше галочка на "Использовать вход в аккаунт" - и логинимся в Ютубе через OBS.
Вкладка "Вывод" - "Трансляция" - "Настройки кодировщика". Там важен только пункт "Битрейт". Для Радио Гиперион вполне достаточно 3000 Kbps.
Остальные пункты не принципиальны:
"Управление битрейтом" - "CBR".
"Интервал ключевых кадров" - "2 сек".
"Предустановка нагрузки на ЦП" - "ultrafast".
И вкладка "Видео".
"Разрешение предпросмотра" - у нас 1280 на 720 (самый маленький стандарт для видео).
"Разрешение выхода" - ровно то же самое.
"Частота кадров" - вот тут, напоминаю, должно быть ровно столько же, сколько в свойствах файла у того видео, которое участвует в нашей трансляции. У нас - "25".
Ну и, собственно, всё. Нажимаем на кнопку "Запустить трансляцию" и идём смотреть на Студию в Ютуб. Там начинается какое-то шевеление и наконец Ютуб сообщает: "О, да у вас тут какая-то трансляция пошла. Выпустить в эфир?" Ответ "да". Ну а дальше эта трансляция становится видна в Творческой Студии в разделе "Трансляции", можно легко взять её код и вставить, куда надо.
Если всё в OBS настроено правильно, можно открыть её окошко "Статистика" и посмотреть на параметр "Среднее время рендеринга кадра". Должно быть примерно 1,5 - 2,5 ms. А пропусков кадров вообще не должно быть.

Радио льётся, сейчас у нас три дня и девять с половиной часов звучания.
Tags: