Остановить PlaySound()
Модератор: immortal
-
serge_wddm
- Сообщения: 9
- Зарегистрирован: Вс июн 26, 2016 9:58 am
Остановить PlaySound()
Подскажите пожалуйста, возможно ли досрочно остановить воспроизведение звукового файла запущенного командой PlaySound('filename.mp3')?
Суть проблемы вот в чём. Имеется звуковой файл сирены длительностью 2 мин. Допустим, сработал алгоритм охраны и запустил файл сирены командой PlaySound('filename.mp3'). Иногда, при проверке и тестировании алгоритма я досрочно, не дожидаясь 2 мин, хочу отключить сирену.
Подскажите, возможно ли это? PlaySound, похоже, запускает каждый файл в отдельном потоке.
Спасибо!
MDM на OrangePi (Linux).
Суть проблемы вот в чём. Имеется звуковой файл сирены длительностью 2 мин. Допустим, сработал алгоритм охраны и запустил файл сирены командой PlaySound('filename.mp3'). Иногда, при проверке и тестировании алгоритма я досрочно, не дожидаясь 2 мин, хочу отключить сирену.
Подскажите, возможно ли это? PlaySound, похоже, запускает каждый файл в отдельном потоке.
Спасибо!
MDM на OrangePi (Linux).
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
Re: Остановить PlaySound()
По простому остановить не получится. Да и не хорошо это в PlaySound двух минутный файл заряжать. Не для этого инструмент задуман. Лучше создавайте событие, в цикле проверяйте его и брякайте короткими кричалками, пока событие присутствует. Можно таймеры использовать. Не зная полностью задачу и структуру вашего МД, трудно что то посоветовать. Вариантов масса.
-
serge_wddm
- Сообщения: 9
- Зарегистрирован: Вс июн 26, 2016 9:58 am
Re: Остановить PlaySound()
Спасибо за направление. Логика моего алгоритма проста. Нужно орать сирену пока свойство объекта AlarmStatus = 1. Если AlarmStatus = 0, то сирена не должна работать.Bagir писал(а):По простому остановить не получится. Да и не хорошо это в PlaySound двух минутный файл заряжать. Не для этого инструмент задуман. Лучше создавайте событие, в цикле проверяйте его и брякайте короткими кричалками, пока событие присутствует. Можно таймеры использовать. Не зная полностью задачу и структуру вашего МД, трудно что то посоветовать. Вариантов масса.
Можно создать метод (CheckAlarmStatus), который будет периодически сам себя вызывать по таймеру через 5 с (SetTimeOut("CheckAlarmTimer","cm('object.CheckAlarmStatus')", 5);).
В данном методе будем проверять нужное свойство (object.AlarmStatus = 1) и включать сирену (PlaySound) на 5 секунд. Если AlarmStatus сбросится в 0, то не будем делать PlaySound и создавать новый таймер на 5с.
Возможно существует более элегантное решение.
А события чем отличаются от методов? Как и когда их применять? Ткните, плиз, где посмотреть примеры.
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Контактная информация:
Re: Остановить PlaySound()
Ещё, как вариант, запускать через медиа-плеер
остановка проигрывания:
Код: Выделить всё
$media_file='..'; // путь к файлу сирены
$url=BASE_URL.ROOTHTML.'popup/app_player.html?ajax=1';
$url.="&command=refresh&play=".urlencode($media_file);
$result=getURL($url, 0); Код: Выделить всё
$url=BASE_URL.ROOTHTML.'popup/app_player.html?ajax=1';
$url.="&command=stop";
$result=getURL($url, 0); Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Re: Остановить PlaySound()
это код ведь должен останавливать воспроизведение радио 101?))sergejey писал(а):....
остановка проигрывания:
Код: Выделить всё
$url=BASE_URL.ROOTHTML.'popup/app_player.html?ajax=1'; $url.="&command=stop"; $result=getURL($url, 0);
что должно быть вместо?
Код: Выделить всё
BASE_URL.ROOTHTMLMD на raspberry pi3
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
Re: Остановить PlaySound()
Вариант с медиа безусловно интересен. И если подобное уже реализовано в системе, то и вопроса наверное бы не возникло. Играем вместо любимой музыки жуткую кричалку и останавливаем по команде в момент сброса тревоги. Это просто идеально.
Но если Медиа не настроено, то задача может вызвать ряд дальнейших затруднений.
Вообщем вариант с медиа интереснее, но как альтернатива предложенный пяти минутный таймер. Чтобы отменить тревогу можно просто грохнуть таймер, и сирена быстро заглохнет. Крик сирены при этом можно красиво дополнить вставками чтения текста.
Экспериментируйте, вы на верном пути.
Но если Медиа не настроено, то задача может вызвать ряд дальнейших затруднений.
Вообщем вариант с медиа интереснее, но как альтернатива предложенный пяти минутный таймер. Чтобы отменить тревогу можно просто грохнуть таймер, и сирена быстро заглохнет. Крик сирены при этом можно красиво дополнить вставками чтения текста.
Экспериментируйте, вы на верном пути.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
Re: Остановить PlaySound()
События я с горяча предложил. Events() Мне показалось это интересная штука. Я даже придумал как это сипользовать в разных ситуациях. Суть в том, что из любого кода можно создать событие. Это как таймер, только почти без срока завершения. В дальнейшем можно проверять события, и при их наличии принимать соответствующие решения. Событие, это как общее свойство, в котором по имени мы ищем интересующее нас.serge_wddm писал(а):А события чем отличаются от методов? Как и когда их применять?
Сергей пишет, что это мертвое дело. Я до сих пор использую Events, но ни что не мешает обойтись без этого.
Как итог, используйте медиа или таймер. Мне травятся оба эти способа.
-
serge_wddm
- Сообщения: 9
- Зарегистрирован: Вс июн 26, 2016 9:58 am
Re: Остановить PlaySound()
Спасибо, Сергей. Вариант с медиаплеером рабочий. Только остановка проигрывания заработала по команде close.
остановка проигрывания:
Вариант с периодическим вызовом PlaySound и таймерами тоже рабочий, однако непрерывный звук из коротких звуковых фрагментов получить невозможно, т.к. таймеры работают не очень точно. получается звук сирены-пауза-звук сирены-пауза. Также, как я понимаю, нагрузка на систему большая из-за постоянных проверок условия AlarmStatus и установки таймера каждые 5 секунд.
остановка проигрывания:
Код: Выделить всё
$url=BASE_URL.ROOTHTML.'popup/app_player.html?ajax=1';
$url.="&command=CLOSE";
$result=getURL($url, 0);Re: Остановить PlaySound()
как остановить проигрывание радио на rp2?
пытался так:на данный момент это самое сложное с чем пришлось столкнуться при использовании МД
пытался так:
Код: Выделить всё
getURL("http://localhost/rc/?command=vlc_pause",0);
getURL('http://192.168.1.100/popup/app_player.html?ajax=1&command=CLOSE',0);
getURL('http://192.168.1.100/popup/app_player.html?ajax=1&command=CLOSE',0);
getURL("http://localhost:8080/requests/status.xml?command=pl_stop",0);
getURL(‘http://localhost/popup/app_player.html?ajax=1&command=stop',0);
http://localhost:8080/requests/status.xml?command=pl_stop
getURL("http://localhost/rc/?command=pl_stop",0);
getURL("http://192.168.1.100/rc/?command=close",0);
http://192.168.1.100/rc/app_player.html?ajax=1&command=close
MD на raspberry pi3
Re: Остановить PlaySound()
неужели никто не знает как остановить воспроизведение?
какой командой выключить mpd?
ЗЫ. получается, что это самый нерешаемый вопрос за несколько месяцев использования МД
какой командой выключить mpd?
ЗЫ. получается, что это самый нерешаемый вопрос за несколько месяцев использования МД
MD на raspberry pi3