Небольшая заметка по настройке VLC и использование модуля Online Radio
![]() |
![]() |
![]() |
![]() |
В этой статье речь пойдёт о плеере VLC и использовании модуля Online Radio.
В первую очередь нужно опредилиться что будем использовать в качестве устройства для воспроизведения
У меня в качестве вывода звука - USB колонки, возможно использование и Audio 3,5 jack. В случае использования последнего - настройка немного упрощается.
Определяем на каком устройстве опредилилися USB колонки
(у меня в RPi устройство 0 - Audio3,5 bcm2835_headpho - bcm2835 Headphones , 1 - vc4-hdmi - vc4-hdmi, 2 - USB-Audio - ST200, на тестовой малинке очередность устройств изменена, так что проверяйте).
cat /proc/asound/cards
aplay -l
Проверка воспроизведения звука, средствами ОС:
speaker-test -Dplughw:0,0 –c2
Где 0,0 – номер карты и устройства в системе, с-2 – количество кналов. Слышим поочередно звук в правом - левом динамике. Выход из проверки ctrl +C.
Вызов утилиты для настройки звука:
alsamixer
Проверка воспроизведения файлов встроенными средствами ОС:
mplayer /var/www/html/cms/sounds/dingdong.mp3
aplay /var/www/html/3rdparty/googleblockly/media/disconnect.wav
sudo apt-get install -y vlc
Создать файл автозагрузки описания сервиса VLC на порту 7777 с паролем (имя пользователя - пустое поле)
sudo nano /etc/systemd/system/vlcd.service
Содержимое файла (в файле две строки запуска одна для аналогового выхода, вторая, как у меня для USB устройства (закоментирована):
[Unit]
Description=VLCDaemon
[Service]
Requires=majordomo.service
Type=simple
WorkingDirectory=/var/www/html
#строка запуска с использованием разъема 3,5 jack для подключения аналоговых колонок
ExecStart=/usr/bin/vlc --quiet --intf dummy --extraintf http --http-password 12345 --http-port 7777 --http-host 0.0.0.0 --no-interact>
#строка запуска с использованием USB колонок или USB звуковой карты, hw:2,0 адрес аудио устройства в ОС (проверка правильности с помощью команды aplay -l)
# ExecStart=/usr/bin/vlc --quiet --intf dummy --extraintf http --http-password 12345 --http-port 7777 --http-host 0.0.0.0 --no-interact> --aout alsa --alsa-audio-device hw:2,0
Restart=always
User=www-data
Group=www-data
[Install]
WantedBy=multi-user.target
Перечитать автозагрузрчные юниты, добавить vlc в автозагрузку, запустить сервис vlcd и проверка работы сервиса:
sudo systemctl daemon-reload
sudo systemctl enable vlcd
sudo systemctl start vlcd
sudo systemctl status vlcd
Вывод должен быть без ошибок, сейчас переходим к MajorDoMo
В маркете приложение панели управления устанавливаем дополнение от LuckyFIA Online Radio
Переходим в приложения: Панель Управления – Приложения - Internet radio
Модуль пока пустой, только краткая помощь (информация) по его работе.
Для его использования нам необходимо указать ссылки на трансляции и настройть терминал для воспроизведения.
перейдём к превому условия, ссылка натрансляцию, довольно часто спрятана на сайте радиостанции или на сайте агрегатора радиостанций. Что просто и быстро её получить открываем сайд р/с к примеру: https://radiopotok.ru/ https://radiopotok.ru/avtoradioby
Нажимаем F12 (входим в режим отладки), PLAY (воспроизведение трансляции) далее Ctrl+F5 (обновление страницы)
Ищем данные сети, обычно самые большие по размеру – искомая ссылка на трансляцию. Копируем эту ссылку (для проверки можно открыть в новом окне браузера – запуститься плеер браузера).

Для повторения примера данные с другого сайта:

Сейчас у нас есть две радиостанции добавленные в модуль Радио.

Осталось настроить терминал (пусть для воспроизведения радио MAIN - главный терминал сервера УД)
Панель Управления - Настройки - Терминалы
в настройках указываем:
Системное имя MAIN, Название Server, Хост (адрес): localhost
тип плеера: VLC через HTTP
порт доступа к плееру: 7777 (тот который ранее был указан в Unit файле)
имя пользователя - не задаём, т.к. его не указывали
пароль: 12345 (тот который ранее был указан в Unit файле)
Сохраняем, теперь радио должно работать, управляться с главной странице нашего УД.
Перейдём к заметка о управлению радио через физическое устройство.
Многое указано в самом модуле и всё делается относительно просто.
У меня реализовано на кнопке с транскодером Tuya Smart Knob
простое нажатие используем метод Switch - запуск/остановка воспроизведения радио. Нужно настроить методы Turn On и Turn Off устройства для управления ( в каждом методе прописываем соответствующию строку). Для включения у меня стоит ограничение громкости 35.
cm('RadioSetting.Control', array('play','vol'=>35));
cm('RadioSetting.Control', array('stop'));
Далее сделаем действие (я делал доп виртуальное устройство), при котором будет переключение станции на следующую. Станции должны идти по порядку ID без прерываний. В строках таблицы app_radio (легче их сортировать в phpMyAdmin в случае удаления и добавления новой станции, автоматически присваевается не свободное ID, а следующее по списку). Свой рабочий код сейчас прогнал через ИИ, получил несколько лучший, привожу его.
// Получаем текущий ID последней включённой станции
$lastID = (int)gg('RadioSetting.LastStationID');
// Считаем общее количество станций
$countRow = SQLSelectOne('SELECT COUNT(*) AS cnt FROM `app_radio`');
$totalCount = (int)$countRow['cnt'];
// Если станций нет — ничего не делаем
if ($totalCount < 1) {
say('Нет станций в списке', 1);
return;
}
// Вычисляем следующий ID с зацикливанием
$nextID = $lastID + 1;
if ($nextID > $totalCount) {
$nextID = 1;
}
// Сохраняем новый ID
sg('RadioSetting.LastStationID', $nextID);
// Получаем название станции по ID
$station = SQLSelectOne('SELECT `name` FROM `app_radio` WHERE `ID` = ' . (int)$nextID . ' LIMIT 1');
// На случай, если запись пропала — берём первую станцию
if (!$station || !isset($station['name']) || $station['name'] === '') {
$station = SQLSelectOne('SELECT `name` FROM `app_radio` ORDER BY `ID` LIMIT 1');
}
$stationName = $station['name'] ?? '';
if ($stationName !== '') {
cm('RadioSetting.Control', array('sta' => $stationName));
say($stationName, 1);
} else {
say('Не удалось получить название станции', 1);
}
Т.к. кнопка имеет энкодер (вращение), то в ПУ добавил 2 метода Vol+ (приведен код, для Vol- меняем знак и указываем min громкость):
// 1. Получаем текущую громкость (гарантируем целое число)
$vol = (int)gg('ThisComputer.volumeMediaLevel');
// 2. Устанавливаем лимит и шаг
$step = 3;
$maxVol = 50;
// 3. Вычисляем новую громкость с ограничением сверху
$new_vol = min($maxVol, $vol + $step);
// 4. Сохраняем в глобальную переменную
setGlobal('ThisComputer.volumeMediaLevel', $new_vol);
// 5. Отправляем команду в модуль Online Radio
cm('RadioSetting.Control', array('vol' => $new_vol));
// 6. Голосовое подтверждение
say('Громкость радио ' . $new_vol, 1);
На этом всё, VLC для проигрывания радио меня вполне устраивает, в качестве медиа плеера, мне он не зашел. Как нибудь продолжу по медиа плееру (на основе mpd).
Минск, Беларусь
На форуме: udvnl