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
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~~
|