How to Wiki Database (change log) http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

232 lines
8.3 KiB

10 months ago
====== Интернет-радио ======
В Yggdrasil очень легко и быстро можно создать собственное радио из локальной коллекции, не имея выделенного IP адреса.
Есть много инструкций по конфигурации эфирного времени, включая различные скрипты автоматизации плей-листов и взаимодействие с участниками стримов по расписанию.\\
Ниже рассмотрен базовый пример организации сервера на Yggdrasil / IPv6, возможно в процессе материал будет дополнен.
===== Icecast =====
[[https://icecast.org/|Icecast]] - популярный сервер потокового мультимедиа, с поддержкой потоков Ogg (Vorbis и Theora), Opus, WebM и MP3.
Поддерживает открытые стандарты общения и взаимодействия, распространяется под лицензией GNU GPL версии 2.
Простыми словами, он выполняет ту же функцию, что nginx для веб-сайтов, но ориентирован на работу с потоковым контентом.
Установка доступна из репозиториев:
<code>
apt install icecast2
</code>
Стартуем сервис, чтобы создать базовую конфигурацию
<code>
systemctl start icecast2
</code>
Пример конфигурационного файла:
<file - /etc/icecast2/icecast.xml>
<icecast>
<location>Yggdrasil</location>
<admin>icemaster@localhost</admin>
<clients>100</clients>
<sources>2</sources>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>65535</burst-size>
</limits>
<authentication>
<source-password>пароль</source-password>
<relay-password>пароль</relay-password>
<admin-user>admin</admin-user>
<admin-password></admin-password>
</authentication>
<hostname>[xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]</hostname>
<listen-socket>
<port>8000</port>
<bind-address>::</bind-address>
</listen-socket>
<http-headers>
<header name="Access-Control-Allow-Origin" value="*" />
</http-headers>
<fileserve>1</fileserve>
<paths>
<basedir>/usr/share/icecast2</basedir>
<logdir>/var/log/icecast2</logdir>
<webroot>/usr/share/icecast2/web</webroot>
<adminroot>/usr/share/icecast2/admin</adminroot>
<alias source="/" destination="/status.xsl"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel>
<logsize>10000</logsize>
</logging>
<security>
<chroot>0</chroot>
<changeowner>
<user>nobody</user>
<group>nogroup</group>
</changeowner>
</security>
</icecast>
</file>
Добавляем в автозагрузку и перезапустим сервис:
<code>
systemctl enable icecast2
systemctl restart icecast2
</code>
Разрешаем подключения только Yggdrasil:
<code>
ufw allow from 0200::/7 to any port 8000
</code>
===== Ezstream =====
[[https://icecast.org/ezstream/|Ezstream]] — это клиент командной строки для медиапотоков, в первую очередь для передачи на серверы Icecast.
Используется непосредственно для работы с файлами, предварительно обеспечивая их формат. В отличии от популярного Ices2, из коробки работает с ogg, mp3 а также видео форматами.
Установка:
<code>
apt install ezstream
</code>
Ezstream запускается отдельными потоками для каждой позиции stream, для этого удобно создать отдельного пользователя:
<code>
useradd -m radio
</code>
Файловую структуру можно организовать следующим образом:
<code>
mkdir /home/radio/collection - библиотека файлов для стрима
mkdir /home/radio/ezstream - файлы конфигурации ezstream
mkdir /home/radio/playlist - файлы плейлистов
</code>
Базовые варианты конфигурации ezstream расположены в директории:
<code>
ls /usr/share/doc/ezstream/examples/
</code>
Для начала, можно скопировать минимальный набор:
<code>
cp /usr/share/doc/ezstream/examples/ezstream-minimal.xml /home/radio/ezstream/gta/vice-city.xml
</code>
Работающий пример конфигурации для [[http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yggwave/radio/gta/vice-city|радио GTA Vice City]]:
<file - /home/radio/ezstream/gra/vice-city.xml>
<?xml version="1.0" encoding="UTF-8"?>
<ezstream>
<servers>
<server>
<name>YGGwave</name>
<hostname>127.0.0.1</hostname>
<password>пароль к серверу Icecast</password>
</server>
</servers>
<streams>
<stream>
<server>YGGwave</server>
<intake>GTA Vice City</intake>
<mountpoint>/gta/vice-city</mountpoint>
<format>MP3</format>
<shuffle>Yes</shuffle>
<stream_once>No</stream_once>
<public>No</public>
<stream_name>YGGwave - GTA Vice City</stream_name>
<stream_url>http://[201:23b4:991a:634d:8359:4521:5576:15b7]:8000/gta/vice-city</stream_url>
<stream_genre>OST</stream_genre>
<stream_description>GTA Vice City Radio Stations</stream_description>
</stream>
</streams>
<intakes>
<intake>
<name>GTA Vice City</name>
<filename>/home/radio/playlist/gta/vice-city.txt</filename>
</intake>
</intakes>
<metadata>
<svrinfoname>GTA - Vice City Radio</svrinfoname>
<format_str>GTA Vice City</format_str>
<refresh_interval>-1</refresh_interval>
<normalize_strings>Yes</normalize_strings>
<no_updates>No</no_updates>
</metadata>
</ezstream>
</file>
Копируем нужные медиа файлы в директорию /home/radio/collection
Плейлисты для директории можно сделать простой командой:
<code>
find /home/radio/collection -name *.mp3 > /home/radio/playlist/gta/vice-city.txt
</code>
Не забываем дать права пользователю:
<code>
chmod -R radio:radio /home/radio
</code>
В завершение, создадим для каждого стрима настройки systemd
<file - /etc/systemd/system/ezstream-gta-vice-city.service>
[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
</file>
и добавим в автозапуск:
<code>
systemctl enable ezstream-gta-vice-city
systemctl start ezstream-gta-vice-city
</code>
===== Nginx =====
Если есть желание стримить на 80 порту, но он занят nginx, можно сделать проксирование:
<file - /etc/nginx/sites-available/default>
location /yggwave/radio/gta/vice-city {
proxy_pass http://localhost:8000/gta/vice-city;
}
</file>
===== Ссылки =====
* [[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~~