LINUX.ORG.RU
ФорумAdmin

Проблема с бесперебойным воспроизведением стрима


0

1

Здравствуйте, есть задача бесперебойно воспроизводить online радио, что б не городить что то громоздкое выбрали Raspberry Pi.

По умолчанию в пакетах идёт omxplayer, решили использовать его, плеер крайне урезанный, но с воспроизведением справляется, при отсутствии стрима, плеер падает.

Написали скрипт который проверяет изменение трафика от сервера к плееру, и в случае отсутствия изменения по промежутку, киляет старый процесс и поднимает новый.

используем такое решение, уже пару недель, но через сутки-двое, по неизвестной мне причине запускается сразу несколько копий плеера и соответственно на выходе образуется каша.

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

#!/bin/sh
iptables -F INPUT
iptables -I INPUT -p tcp -s 91.237.129.14 --sport 8800 -j ACCEPT
while true; do
if [ `iptables -Z INPUT 1; sleep 1; iptables -nvL INPUT 1 | awk '{print $1}'` -eq 0 ]
then
echo "do not runing"
kill -9 `ps aux | grep "/bin/bash /usr/bin/omxplayer" | grep -v grep | awk '{print $2}'`
kill -9 `ps aux | grep "/usr/bin/omxplayer.bin" | grep -v grep | awk '{print $2}'`
omxplayer http://ip:port/stream.mp3 &
echo "restarted"
sleep 30
else
echo "runing"
sleep 3
fi
done

Во-первых, можно проверять, запущен уже плеер или нет. Так как делаешь это ты - это костыльно, так как есть pidof и pkill. Плюс, стоит дождаться пока процесс будет убит, прежде чем запускать новый - kill -9 возвращает управление сразу, а процесс может еще висеть.

Во-вторых, vlc

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Пробовали проверять запущен или нет, но по каким то причинам из 50 раз 1 раз плеер отказывается падать при отсутствии инета...

Ожидать пока процесс будет убить наверно резонно, подскажите как это правильно сделать? Внести задержку, или стоит как то проверять? Если проверять то подскажите пожалуйста как это сделать правильно.

По поводу vlc есть ряд сомнений, ибо когда то использовали его в смежном проекте, где требовалось кодировать видео, мучились с ним довольно долго после перешли на ffmpeg. Если считаете что vlc будет работать стабильнее, обязательно протестирую.

xstya ()
Ответ на: комментарий от xstya

Ожидать пока процесс будет убить наверно резонно, подскажите как это правильно сделать?

Как вариант:

killall -w omxplayer

DiMoN ★★★ ()
Ответ на: комментарий от xstya

Внести задержку, или стоит как то проверять? Если проверять то подскажите пожалуйста как это сделать правильно.

Цикл, который ждет пока pidof omxplayer не перестанет возвращать pid процесса?

Если считаете что vlc будет работать стабильнее, обязательно протестирую.

У меня vlc работал не особо стабильно, но мне требовалось рекодить FullHD видео на откровенно дохлой машине. С меньшим разрешением с ним проблем особых не было, а вот ffserver я так поднять толком и не смог, насколько я помню...

Pinkbyte ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.