Переключение источников потока Icecast без остановки воспроизведения клиентами

#python #icecast #raspberry-pi4

#питон #icecast #raspberry-pi4

Вопрос:

Доброе утро 🙂

У меня есть несколько вопросов относительно настройки icecast. У нас есть мой собственный сервер (Nextcloud), который находится в нашей церкви. Это работает отлично, и поскольку здесь, в Германии, общественные службы уже один раз были запрещены во время всей этой истории с Covid19, мы хотим настроить поток. Мне удалось настроить экземпляр icecast на нашем сервере, и мы используем мой старый ноутбук с Rocket Broadcaster и Steinberg CI2 для предоставления источника для потока. Все работает так, как задумано. Мы уже использовали его однажды, потому что мы прекратили предоставление государственных услуг на две недели после того, как у одного из наших участников был положительный результат теста после того, как он уехал за границу на неделю. Наш оператор в ПА не хочет, чтобы там был еще один дисплей, который помешал бы ему слушать проповедь.

Мой проект по этому поводу: у меня есть RPi4 и Behringer U-Phoria UMC202HD. Входным atm является стандартный микрофон, который подключается к интерфейсу. Pi настроен с помощью darkice и использует собственную установку icecast, в то время как я тестирую все дома. С тех пор, как я начал проект потокового вещания, после службы мы переключили Rocket Broadcaster на использование VLC и папки со старыми записями сервиса (освоенными и в формате MP3), чтобы предоставить источник для прослушивания, пока мы на работе или в путешествиях. Этот вариант используется довольно регулярно, и я хочу, чтобы он продолжал работать. Мой план состоит в том, чтобы иметь маленькую коробочку со светодиодным уровнемером, где отображается входной уровень. Это должно быть сделано с помощью небольшого скрипта на Python. Также я хочу добавить две кнопки, с помощью которых загружаются пресеты для двух настроек. Кнопка 1: отключите текущий источник и запустите прямую трансляцию darkice. Кнопка 2: отключите текущий источник и запустите воспроизведение старых записей. Оба варианта должны иметь визуальную обратную связь для оператора. Малина должна работать в безголовом режиме без необходимости в VNC или SSH-соединении для нормального использования.

Моя проблема: я пытался: sudo killall darkice amp;amp; /home/pi/darkice.sh

Этот код будет изменен, потому что мне, вероятно, придется использовать ices для воспроизведения mp3. Таким образом, в основном это убивает darkice, запускает воспроизведение ices (на данный момент перезапускает поток только в мгновение ока) и наоборот. Файл bash существует и выполняется при перезагрузке через cronjob. Это хорошо работает. Когда я выполняю вышеупомянутую команду killall, icecast продолжает трансляцию почти мгновенно, но поток останавливается на клиентах. Каждый должен перезапустить его. Есть ли у меня возможность изменить настройки, чтобы я мог переключаться между двумя вариантами без необходимости перезагрузки для всех? Мой план состоял в том, чтобы создать bash-скрипт, где я делаю все это внутри и выполняю его с помощью GPIO-ввода и pythoncode.

Заранее спасибо!