FrostWire Radio - Инструкция по настройке и использованию
Обзор приложения
FrostWire Radio - это программное обеспечение для автоматизированного вещания интернет-радиостанции. Приложение поддерживает:
- Автоматическое воспроизведение музыки из плейлистов;
- Потоковое вещание на IceCast серверы;
- Динамическое расписание смены плейлистов;
- Автоматическую обработку звука (компрессия, лимитирование, ReplayGain);
- Вставку джинглов и рекламных блоков;
- Отправку информации о треках на внешние серверы;
- Многопоточное вещание с разными битрейтами.
Требования к системе
Поддерживаемые ОС:
- Windows (7/8/10/11, x64/x86)
- Linux (Ubuntu 20.04+, Debian 10+, Raspbian, x64/ARM)
Минимальные требования:
- 512 MB RAM
- 100 MB свободного места
- Аудиоустройство (реальное или виртуальное)
- .NET 6.0 Runtime
Создание конфигурационного файла
В папке config создайте или отредактируйте файл strimer.conf:
[Audio]
device=0; # ID аудиоустройства (-1 - устройство по умолчанию)
frequency=44100; # Частота дискретизации (44100 или 48000)
[IceCast]
server=localhost; # Адрес IceCast сервера
port=8000; # Порт IceCast сервера
name=FrostWire Radio; # Название потока
genre=Various; # Жанр
username=source; # Логин для IceCast
password=hackme; # Пароль для IceCast
[Playlist]
list=C:\Users\Evgeny\Desktop\list.pls; # Основной плейлист
dynamic_playlist=yes; # Да - динамически обновлять плейлист
save_playlist_history=yes; # Да - сохранять историю воспроизведения
artist_genre_history_enable=yes; # Исключить повторение исполнителей/жанров
max_history=10; # Записей в истории
max_attempts=5; # Попыток найти нового исполнителя/жанра в случае повтора
schedule_enable=no; # Да - использовать расписание
schedule=; # Путь к файлу расписания JSON
[Encoder:live] # Имя mount-point IceCast сервера: live
type=opus; # Тип кодека (opus)
enable=yes; # Включить энкодер
bitrate=128; # Битрейт (кбит/с)
bitrate_mode=vbr; # Режим битрейта: vbr/cbr
content_type=music; # Тип контента: music/speech
complexity=10; # Сложность кодирования
framesize=60; # Размер фрейма (мс)
[Encoder:live-32] # Дополнительный энкодер
bitrate=32;
bitrate_mode=vbr;
content_type=music;
complexity=10;
framesize=60;
[ReplayGain]
use_replay_gain=yes; # Использовать ReplayGain
use_custom_gain=yes; # Использовать кастомный ReplayGain из комментариев
[FirstCompressor]
enable=yes; # Включить компрессор
adaptive=yes; # Адаптивный режим (автоматическая настройка параметров под RMS стрека)
threshold=-20; # Порог срабатывания (dB)
ratio=4.0; # Коэффициент сжатия (X:1)
attack=3; # Время атаки (мс)
release=100; # Время восстановления (мс)
gain=5; # Усиление после компрессии (dB)
[SecondCompressor]
enable=yes;
threshold=-20;
ratio=2.5;
attack=25;
release=250;
gain=8;
[Limiter]
enable=yes; # Включить лимитер
threshold=-5.0; # Предельный уровень (dB)
release=5; # Время восстановления (мс)
gain=3; # Усиление (dB)
# Отправка информации о треках на внешний сервер
[MyServer]
enable=no; # Включить отправку
server=http://r.dlike.ru; # URL сервера
key=key; # Ключ доступа
add_song_info_page=add-history; # Страница для добавления трека
add_song_info_number_var=number; # Параметр: номер трека
add_song_info_title_var=title; # Параметр: название трека
add_song_info_artist_var=artist; # Параметр: исполнитель
add_song_info_link_var=link; # Параметр: ссылка на файл
add_song_info_link_folder_on_server=http://r.dlike.ru/music; # Базовый URL файлов
remove_file_prefix=radio/music; # Префикс для удаления из пути
[Jingles]
enable=no; # Включить джинглы
file=/home/admin/radio/config/jingles.json; # Файл конфигурации джинглов
frequency=6; # Частота вставки джинглов (каждый N-й трек)
random=yes; # Случайный порядок воспроизведения
[Debug]
enable=yes; # Включить отладочный режим
stack_view=no; # Показывать стек вызовов
Создание плейлиста
Создайте текстовый файл с расширением .pls:
track=C:\Music\Artist - Song 1.mp3?;
track=C:\Music\Artist - Song 2.flac?;
track=C:\Music\Artist - Song 3.opus?;
Расширенные возможности
Динамические плейлисты
- Включите dynamic_playlist=yes, чтобы приложение автоматически обновляло плейлист при изменении файла.
История воспроизведения
- При save_playlist_history=yes приложение создает файлы .history для отслеживания воспроизведенных треков и предотвращения повторений.
Расписание вещания (Schedule)
- Создайте JSON файл расписания:
{
"ScheduleItems": [
{
"Name": "Утренний эфир",
"StartHour": 6,
"StartMinute": 0,
"EndHour": 12,
"EndMinute": 0,
"DaysOfWeek": [1, 2, 3, 4, 5, 6, 7],
"PlaylistPath": "C:\\Playlists\\morning.pls"
},
{
"Name": "Вечерний эфир",
"StartHour": 18,
"StartMinute": 0,
"EndHour": 24,
"EndMinute": 0,
"DaysOfWeek": [1, 2, 3, 4, 5, 6, 7],
"PlaylistPath": "C:\\Playlists\\evening.pls"
}
]
}
- В конфиге укажите:
[Playlist]
schedule_enable=yes;
schedule=C:\путь\к\schedule.json;
Джинглы (аудио-вставки)
- Создайте JSON файл джинглов:
{
"JingleItems": [
{
"Path": "C:\\Jingles\\station_id.mp3",
},
{
"Path": "C:\\Jingles\\advert1.ogg",
},
{
"Path": "C:\\Jingles\\advert2.flac",
}
]
}
- Настройте в конфиге:
[Jingles]
enable=yes;
file=C:\путь\к\jingles.json;
frequency=3; # Джингл каждые 3 трека
random=yes; # Случайный порядок
ReplayGain и RMS
Приложение поддерживает:
- Стандартные теги ReplayGain в аудиофайлах;
- Кастомное усиление через комментарии:
replay-gain=-3.5
rms=-18.2
Многопоточное вещание
Настройте несколько энкодеров с разными битрейтами:
[Encoder:live_128]
type=opus;
enable=yes;
bitrate=128;
bitrate_mode=vbr;
[Encoder:live_64]
type=opus;
enable=yes;
bitrate=64;
bitrate_mode=vbr;
[Encoder:live_32]
type=opus;
enable=yes;
bitrate=32;
bitrate_mode=vbr;
Обработка звука
Адаптивный режим первого компрессора Что такое адаптивный компрессор?
- Адаптивный компрессор в FrostWire Radio — это интеллектуальная система обработки звука, которая автоматически настраивает параметры сжатия для каждого трека индивидуально, основываясь на его характеристиках громкости (rms) и ReplayGain метаданных.
Когда использовать адаптивный режим? Включите адаптивный режим (adaptive=yes), если:
- Ваша музыкальная библиотека имеет сильный разброс по громкости;
- Вы хотите автоматически выравнивать громкость между треками без ручной настройки;
- Вам нужно сохранить динамику в тихих композициях и контролировать пики в громких;
Отключите адаптивный режим (adaptive=no), если:
- Ваша музыкальная библиотека уже нормализована (одинаковая громкость);
- Вы хотите полный контроль над параметрами компрессии;
- Вы обрабатываете определенный жанр музыки с известными характеристиками;
Как работает адаптивный компрессор? Алгоритм работы:
- Анализ трека: При загрузке каждого трека система анализирует (из тегов):
- RMS (среднеквадратичное значение) - средний уровень громкости;
- ReplayGain значение - рекомендованное усиление/ослабление;
Динамическая настройка параметров:
- Порог (Threshold): автоматически рассчитывается на основе RMS трека;
- Коэффициент (Ratio): адаптируется к отклонению от целевого уровня;
- Времена (Attack/Release): настраиваются под динамику трека;