Icecast-Ezstream — трансляция аудиопотока

Здравствуйте, уважаемые читатели. Сегодня статья на тему: "Icecast-Ezstream - трансляция аудиопотока". Я продолжаю серию статей о сервере потокового вещания Icecast, и в этой статье, мы будем настраивать связку Icecast-Ezstream, для организации трансляции аудиопотока.
Ezstream – это бесплатное программное обеспечение, для организации потоков аудио и видео вещания (В первую очередь для потоковой передачи на серверы Icecast).
Если Вы производили установку Icecast по одной из предыдущих моих с статей, то никаких дополнительных действий, кроме установки самого Ezstream, делать не нужно.
Установка Ezstream в CentOS 7
- Ezstream устанавливается в пару кликов, при помощи пакетного менеджера YUM.
# yum install ezstream
Добавление аудио файлов и плейлиста для трансляции
- После установки, создаём директорию, в которой будут хранится наши mp3 файлы, и плейлист для трансляции.
# mkdir -p /music
- Следующим шагом, загружаем музыкальные файлы, в созданную директорию.
- После загрузки файлов, нужно создать плейлист для трансляции. Создаём файл /music/playlist.m3u, и добавляем в него пути к нашим mp3 файлам.

- Файлов может быть сколько угодно. Путь к каждому файлу, вносится с новой строки.

Настройка Ezstream для трансляции аудиопотока
- Теперь можно переходить к конфигурации Ezstream.
- Создаём директорию, в которой будет находится конфигурационный файл Ezstream.
# mkdir -p /etc/ezstream
- После создания директории, можно создать и сам файл конфигурации /etc/ezstream/ezstream.xml.
Формат файла конфигурации Ezstream:
- <url> - адрес создаваемого потока, по которому будет идти аудио трансляция
- <sourcepassword> - пороль для подключения потока в Icecast
- <format> - формат транслируемых файлов
- <filename> - путь к плейлисту для трансляции
- <stream_once> - опция повторного воспроизведения (при (0) постоянный повтор воспроизведения, при (1) воспроизведение один раз)
- <shuffle> - проигрывание аудио файлов в случайном порядке (при (1) случайное проигрывание, при (0) проигрывание по порядку)
- <svrinfoname> - название сервера ( на Ваше усмотрение)
- <svrinfourl> - информативный адрес сервера
- <svrinfogenre> - жанр проигрываемого аудиопотока
- <svrinfodescription> - описание аудиопотока
- <svrinfobitrate> - битрейт аудиопотока
- <svrinfochannels> - количество канало аудиопотока
- <svrinfosamplerate> - частота дискретизации аудиопотока
- <svrinfopublic> - включение аудиопотока в публичный каталог
В моём случае, настройки конфигурационного файла будут такими:

Настройка управления Ezstream при помощи systemctl
- Ezstream не относится к службам, и поэтому он не может управляться с помощью systemctl.
- Давайте это исправим.
- Создаём файл /etc/systemd/system/ezstream.service, такого содержания:
[Unit] Description=ezstream After=network.target Requires=ezstream.service [Service] User=icecast Group=icecast Type=simple PIDFile=/etc/ezstream/ezstream.pid ExecStart=/usr/bin/ezstream -c /etc/ezstream/ezstream.xml ExecReload=/bin/kill -HUP $MAINPID Restart=always [Install] WantedBy=multi-user.target
- После создания файла, произведём перезапуск systemctl.
# systemctl daemon-reload
- Теперь нужно настроить необходимые права и разрешения.
# chown -R icecast:icecast /etc/ezstream # chmod 600 /etc/ezstream/ezstream.xml
- После произведённых манипуляций, мы можем управлять Ezstream при помощи systemctl.
- Производим запуск Ezstream, добавляем его в автозагрузку, и проверяем статус.
# systemctl start ezstream # systemctl enable ezstream # systemctl status ezstream

- Ну вот и всё, мы с Вами запустили трансляцию аудиопотока.
- Заходим в веб-интерфейс Icecast.
В моём случае это:
http://192.168.10.12:8000
- В списке точек монтирования, присутствует созданный нами поток.

- Для проверки, можно воспроизвести поток при помощи браузера, или любого плейера с поддержкой потокового вещания.

- Вы услышите звук проигрывания загруженных аудио файлов, в зависимости от настроек, которые Вы сделали в конфигурационном файле /etc/ezstream/ezstream.xml.
Сегодня мы рассмотрели тему: "Icecast-Ezstream - трансляция аудиопотока". Произвели установку Ezstream, настроили его, и запустили трансляцию аудиопотока из добавленных нами mp3 файлов. Смотрите так же видео по теме.
Надеюсь статья была вам полезна. До встречи в новых статьях.
✍
С уважением, Андрей Бондаренко.
Видео на тему "Icecast-Ezstream - трансляция аудиопотока":

WMZ-кошелёк = Z667041230317
«Media»
Коля
Не работает. Failed to start ezstream. Всё перепроверил 2 раза. В чём может быть проблема?
Андрей Бондаренко
Какой текст ошибки? Что написано в логах?
Может быть всё, что угодно. Например плейлист указан в конфиге, но не создан физически. Либо не правильно указанны пути. Либо не указанны правильные права…
Всё что угодно!
Смотрите логи в /var/log/messages.
Alexey
Вот почти всё хорошо, но, как ezstream снимать аудиопоток с линейного входа? в шоткаст такой бНОПНЯ был решен,но теперь не понятно как снять аудиопоток с линейного входа, чтобы передать его в удалнный icecast (Azurecast)..
Андрей Бондаренко
Честно говоря, я так глубоко не копал.
В одной из статей этой рубрики, есть описание возможностей ffmpeg2theora:
https://aeb-blog.ru/media/icecast-ffmpeg2theora-ffmpeg-videopotok/
При выводе справки к ffmpeg2theora в консоли, выходит описание запуска Live-stream с помощью V4L девайса.
Почитайте, попробуйте, может быть из этого что-нибудь получится.
Alexey
Я разобрался, ffmpeg в помощь
ffmpeg -ac 2 -f alsa -i hw:0,0 -acodec libmp3lame -ab 128k -ac 2 -content_type audio/mpeg -f mp3 icecast://login:password@radio.host.ru:8010/resource
и всё ) весьма гибкий инструмент.
Андрей Бондаренко
Да, я тоже погуглил.
Для захвата видео, будет что-то типа:
# ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
или
# ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg
Для захвата рабочего стола, что-то типа:
# ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg
Alexey
ffmpeg — оказывается отличный инструмент! ) Я честно не знал, ну в смысле скорее не требовалось ранее.
Андрей Бондаренко
Нет таких людей которые всё знают. Почти всё, знает наверное только Google.
Нужно уметь находить решения задач, по мере их поступления.
Удачи Вам, в решении всех возникающих задач!
Cola149
Добрый день, пытался накатить ezstream на Debian 11 и при попытке запустить его через systemctl пишет вот это:
* ezstream.service — ezstream
Loaded: loaded (/etc/systemd/system/ezstream.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2023-09-30 14:31:32 MSK; 10s ago
Process: 2055 ExecStart=/usr/bin/ezstream -c /etc/icecast2/ezstream.xml (code=exited, status=217/USER)
Main PID: 2055 (code=exited, status=217/USER)
CPU: 480us
Sep 30 14:31:32 aryfe53.example.com systemd[1]: ezstream.service: Scheduled restart job, restart counter is at 5.
Sep 30 14:31:32 aryfe53.example.com systemd[1]: Stopped ezstream.
Sep 30 14:31:32 aryfe53.example.com systemd[1]: ezstream.service: Start request repeated too quickly.
Sep 30 14:31:32 aryfe53.example.com systemd[1]: ezstream.service: Failed with result ‘exit-code’.
Sep 30 14:31:32 aryfe53.example.com systemd[1]: Failed to start ezstream.
Как быть? Что делать? Лучше CentOS использовать для этой идеи да?
Андрей Бондаренко
Здравствуйте.
Вывод текста в терминале который Вы показали в своём сообщении не о чём не говорит. Просто сервис не запустился. Нужно смотреть логи! Возможно в конфиге какая-то ошибка.
Александр
Проверьте в файле службы директиву USER!
Cообщение: (code=exited, status=217/USER) — говорит о том, что у вас не существует пользователь от имени которого вы пытаетесь запустить службу…
Чтобы проверить это отредактируйте файл службы:
sudo nano /etc/systemd/system/ezstream.service
После редактирования не забудьте выполнить команду:
systemctl daemon-reload
чтобы перезагрузить процесс systemd. Ну и попробуйте запустить по новой службу…
Radiominor
попробуйте убрать строчки user и group Будет работать от рута. но иного способа я пока не нашел. Возможно у вас другая причина)
И да я бы поправил Requires=ezstream.service на icecast2.service