1

Я использую mplayer для потоковой передачи аудио из экземпляра MPD, настроенного на вывод через HTTP:

mplayer http://<stream-URL>:<port>

Поток контролируется клиентом MPD (Cantata). Поток приостанавливается всякий раз, когда MPD достигает конца очереди воспроизведения, определенной в клиенте. Когда это происходит, mplayer сразу выходит. Я хотел бы, чтобы он продолжал работать и воспроизводить новый контент, как только он станет доступным (т. Е. Как только новые элементы будут добавлены в очередь воспроизведения на клиенте).

Я попытался запустить mplayer с параметром -idle , и хотя это заставляет mplayer продолжать работать после остановки потока, при запуске воспроизведения содержимого в клиенте MPD не выводится звук.

Как я могу заставить mplayer прослушивать поток, чтобы он снова стал активным и начать воспроизводить то, что он получает из потока?

РЕДАКТИРОВАТЬ: MPD работает на сервере в моей локальной сети, а Cantata и mplayer работают на моем ноутбуке.

2 ответа2

2

Прошло очень много времени с тех пор, как я играл со сценариями MPD. Поскольку Cantata имеет интерфейс dBus, мне не составит труда сделать то, что вы хотите. Это, однако, приведет вас в страну странных средств управления dbus.

Отчасти ответ таков: -idle не заставляет mplayer пытаться повторно подключиться к вашему потоковому источнику. Это только препятствует выходу mplayer.

Это не значит, что то, что вы ищете, не может быть сделано. Вероятно, вам понадобится немного внешних скриптов, чтобы запустить mplayer для повторного подключения. В любом случае, чтобы включить дистанционное управление mplayer, выполните следующее:

mkfifo /home/you/.mplayer/cmd.fifo
mplayer -idle -input file=/home/you/.mplayer/cmd.fifo

После этого каждый раз, когда вы запускаете что-то похожее на следующее, вы можете заставить mplayer переподключиться.

echo "loadfile http://yourserver.com:8000/yourstream.mp3" >> /home/you/.mplayer/cmd.fifo

Это все, что я могу сделать, не играя с интерфейсом dbus Cantata. Немного исследований должно найти то, что нужно.

Примечание. Выполнение команды loadfile во время воспроизведения потока приводит к заметному прерыванию звука.

Здесь также может быть полезно отметить: MPD, mplayer и Cantata все в одной коробке или в разных системах?

Надеюсь это поможет.

1

Я ничего не слышал о кантатах, но когда я использую мобильное интернет-радио во время вождения в машине, я столкнулся с той же проблемой, чтобы перезапустить mplayer, если соединение разорвано. просто я помещаю команду mplayer в endlesloop, управляемый переменной, которая установлена в false для легкого выключения, добавляя 3-секундную паузу после прерывания, чтобы не перегружать что-либо.

runplayer=true
while $runplayer
do mplayer "http://yourserver.com:8000/yourstream.mp3" 
sleep 3
done   

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .