====== Интернет-радио ======
В Yggdrasil очень легко и быстро можно создать собственное радио из локальной коллекции, не имея выделенного IP адреса.
Есть много инструкций по конфигурации эфирного времени, включая различные скрипты автоматизации плей-листов и взаимодействие с участниками стримов по расписанию.\\
Ниже рассмотрен базовый пример организации сервера на Yggdrasil / IPv6, возможно в процессе материал будет дополнен.
===== Icecast =====
[[https://icecast.org/|Icecast]] - популярный сервер потокового мультимедиа, с поддержкой потоков Ogg (Vorbis и Theora), Opus, WebM и MP3.
Поддерживает открытые стандарты общения и взаимодействия, распространяется под лицензией GNU GPL версии 2.
Простыми словами, он выполняет ту же функцию, что nginx для веб-сайтов, но ориентирован на работу с потоковым контентом.
Установка доступна из репозиториев:
apt install icecast2
Стартуем сервис, чтобы создать базовую конфигурацию
systemctl start icecast2
Пример конфигурационного файла:
Yggdrasil
icemaster@localhost
100
2
524288
30
15
10
1
65535
пароль
пароль
admin
[xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
8000
::
1
/usr/share/icecast2
/var/log/icecast2
/usr/share/icecast2/web
/usr/share/icecast2/admin
access.log
error.log
3
10000
0
nobody
nogroup
Добавляем в автозагрузку и перезапустим сервис:
systemctl enable icecast2
systemctl restart icecast2
Разрешаем подключения только Yggdrasil:
ufw allow from 0200::/7 to any port 8000
===== Ezstream =====
[[https://icecast.org/ezstream/|Ezstream]] — это клиент командной строки для медиапотоков, в первую очередь для передачи на серверы Icecast.
Используется непосредственно для работы с файлами, предварительно обеспечивая их формат. В отличии от популярного Ices2, из коробки работает с ogg, mp3 а также видео форматами.
Установка:
apt install ezstream
Ezstream запускается отдельными потоками для каждой позиции stream, для этого удобно создать отдельного пользователя:
useradd -m radio
Файловую структуру можно организовать следующим образом:
mkdir /home/radio/collection - библиотека файлов для стрима
mkdir /home/radio/ezstream - файлы конфигурации ezstream
mkdir /home/radio/playlist - файлы плейлистов
Базовые варианты конфигурации ezstream расположены в директории:
ls /usr/share/doc/ezstream/examples/
Для начала, можно скопировать минимальный набор:
cp /usr/share/doc/ezstream/examples/ezstream-minimal.xml /home/radio/ezstream/gta/vice-city.xml
Работающий пример конфигурации для [[http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yggwave/radio/gta/vice-city|радио GTA Vice City]]:
YGGwave
127.0.0.1
пароль к серверу Icecast
YGGwave
GTA Vice City
/gta/vice-city
MP3
Yes
No
No
YGGwave - GTA Vice City
http://[201:23b4:991a:634d:8359:4521:5576:15b7]:8000/gta/vice-city
OST
GTA Vice City Radio Stations
GTA Vice City
/home/radio/playlist/gta/vice-city.txt
GTA - Vice City Radio
GTA Vice City
-1
Yes
No
Копируем нужные медиа файлы в директорию /home/radio/collection
Плейлисты для директории можно сделать простой командой:
find /home/radio/collection -name *.mp3 > /home/radio/playlist/gta/vice-city.txt
Не забываем дать права пользователю:
chmod -R radio:radio /home/radio
В завершение, создадим для каждого стрима настройки systemd
[Unit]
Description=ezstream-gta-vice-city
After=network.target
[Service]
Type=simple
User=radio
ExecStart=/usr/bin/ezstream -c /home/radio/ezstream/gta/vice-city.xml
StandardOutput=file:/home/radio/ezstream-gta-vice-city-debug.log
StandardError=file:/home/radio/ezstream-gta-vice-city-error.log
Restart=on-failure
[Install]
WantedBy=multi-user.target
и добавим в автозапуск:
systemctl enable ezstream-gta-vice-city
systemctl start ezstream-gta-vice-city
===== Nginx =====
Если есть желание стримить на 80 порту, но он занят nginx, можно сделать проксирование:
location /yggwave/radio/gta/vice-city {
proxy_pass http://localhost:8000/gta/vice-city;
}
===== Ссылки =====
* [[https://icecast.org/|Icecast]] - сервер для организации мультимедиа потоков
* [[https://icecast.org/ices/|Ices]] - клиент для Icecast
* [[https://icecast.org/ezstream/|Ezstream]] - альтернатива Ices с поддержкой дополнительных форматов
* [[http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yggwave/|YGGwave]] ([[http://wave.ygg|wave.ygg]]) - каталог радио станций для Yggdrasil
~~DISCUSSION~~