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.
231 lines
8.3 KiB
231 lines
8.3 KiB
====== Интернет-радио ====== |
|
|
|
В 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~~
|
|
|