udvnl

 
<<< Back

Установка плеера VLC и использование модуля Internet Radio

Небольшая заметка по настройке 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

Установка VLC плеер, поддерживаемого MajorDoMo

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

Модуль Online Radio

В маркете приложение панели управления устанавливаем дополнение от 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).

Discuss (0) (0)

See also:
2025-01-24 Zigbee2mqtt 2025 (2.0) небольшое описание по установке
2024-06-21 Послеустановочные заметки
2024-05-21 RHVoice установка, проверка и прочее
2023-11-03 Пару мыслей о совместном применении SIP телефонии и систем «Умного Дома», а также немного об организации независимого от Internet канала связи с УД.
2023-10-14 Контроль SystemD и инструмент работы с системными логами через веб браузер
2023-10-10 Установка SIP сервера FreeSWITCH 1.10.10 на Raspberry Pi OS Lite (Debian11)
2023-01-03 Установка MajorDoMo с помощью скрипта от SergeJey на Raspberry Pi
2022-12-09 Где Телефон?
2022-05-30 Вариант установки Majordomo на Windows 10 с использованием пакета XAMPP. Немного о переносе и создании тестовой копии системы с Raspberry PI на Windows
2022-03-09 Небольшие заметки по подключению и использованию сервиса CONNECT
2022-02-27 Zigbee2mqtt, немного о стиках CC2531 и Sonoff USB Zigbee 3.0 Dongle Plus (сравнение, подключение, тестирование).
2021-09-23 Второй раз в первый класс. Часть 1: начало работы c базовым образом для RPi.
2020-12-31 Возможность создания канала управления через телефонные сети для системы домашней автоматизации.
2020-07-06 Чтение файлов из образа img Операционной системы. Возможность записи образа на меньшую по размеру SD карту памяти
2020-06-19 Raspberry Pi: немного о резервном копировании и актуальной копии системы
2020-05-07 Установка VoIP сервера FreeSWITCH с частичной интеграцией в систему MajorDoMo
2020-04-28 Установка базового образа MajorDoMo на Raspberry Pi. Начало первые шаги.
2019-10-07 Возможность создания видео звонков у MajorDoMo (RPI +WebCam)
2019-09-11 Создание голосового оповещения MajorDoMo
2019-08-21 Установка USB аудиокарты и настройка звука в Raspberry Pi
2019-04-04 Сертификация в Z-Wave
2019-03-11 RPI Monitor полезное ПО для Raspberry PI и Orange Pi
2019-02-04 Тестирование пропускной способности канала Ethernet (Wi-Fi) с помощью утилиты IPerf
2018-12-23 Пошаговая инструкция с картинками по установки MajorDoMo на Raspberry Pi 3 с помощью скрипта от Immortal
2018-10-20 Установка Freeswitch 1.8.2 на Debian 9 (Raspbian Stretch) на базовый образ системы «Умного дома» MajorDomo
2018-08-14 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение первого устройства Z-Wave и первые шаги по автоматизации
2018-07-08 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение контроллера RaZberry и первые шаги по Z-Wave
2018-06-29 Пошаговая инструкция по установке образа Majordomo на Raspberry Pi
2018-06-21 Удаленное наблюдение за близкими, но к сожалению, больными людьми.

Минск, Беларусь

На форуме: udvnl