IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Пингвинятник (ОС *NIX) (http://www.imho.ws/forumdisplay.php?f=76)
-   -   Как отловить пропадание стрима? (http://www.imho.ws/showthread.php?t=148242)

Plague 06.08.2015 12:53

Как отловить пропадание стрима?
 
Мы тут с Caesar'ем уж вторую неделю медитируем:

Имеем: "Малину" (raspberry pi, ОС - Rasbian (Debian под arm)) на которой mplayer-ом воспроизводится поток онлайн-радио. Нужно каким-то образом отловить момент когда этот поток прервётся, чтоб дать команду на дальнейшее действие (переключение). Изначально была мысль пинговать что-либо (например гугль), и привязываться на его отвал. Отказались по причине того, что гугль вполне может благоденствовать, а передающий сервер - лежать. По той же причине не подходит и пинг непосредственно вещающего серванта: сам серв может быть онлайн, а вещание - свалиться.
Не кажется идеальным и решение мониторить наличие процесса mplayer: он хоть и отваливается через некоторое время отсутствия потока, но делает это не сразу и не очень красиво.
Чутьё подсказывает что есть простое и изящное решение.
Может есть у кого-нибудь мысли?

ps. если чего упустил - Caesar дополнит.

SinClaus 06.08.2015 17:52

Плейер Audacious имеет в своём составе утилитку audtool.
Команда audtool current-song выдаёт в stdout строку названия текущего трека. Не знаю, есть ли в вашем репозитарии этот плейер, но такой вариант вполне жизнеспособен.

Caesar 06.08.2015 20:17

Спасибо, проверил вариант с утилитой audtool. Вариант мог бы быть рабочим, но, к сожалению, время обновления информации, которая выдается по команде audtool --current-song велико. Т.е. допустим вещание потока прервалось, но пока сам audacious не выдаст ошибку потока, audtool будет выдавать информацию, что все нормально. В таком случае проще мониторить наличие процесса mplayer или audacious. Пытаемся найти вариант (в идеале), чтоб отследить отключение потока еще до полного опустошения буфера плейера.

SinClaus 07.08.2015 07:26

Так... Что означает "отключение потока"?
Если пропадание коннекта к серверу - то lsof -i :номер-порта покажет текущее состояние коннекта.
Другой вариант
netstat -np tcp 2>/dev/null | grep .ip-of-the-server | grep ESTABL
при возврате пустой строки - аларм.

Caesar 07.08.2015 20:46

Спасибо. Варианты с netstat и lsof подошли.


Часовой пояс GMT +4, время: 02:13.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.