Остановить PlaySound()
Модератор: immortal
-
- Сообщения: 9
- Зарегистрирован: Вс июн 26, 2016 9:58 am
- Благодарил (а): 8 раз
- Поблагодарили: 2 раза
Остановить 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
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Остановить PlaySound()
По простому остановить не получится. Да и не хорошо это в PlaySound двух минутный файл заряжать. Не для этого инструмент задуман. Лучше создавайте событие, в цикле проверяйте его и брякайте короткими кричалками, пока событие присутствует. Можно таймеры использовать. Не зная полностью задачу и структуру вашего МД, трудно что то посоветовать. Вариантов масса.
- За это сообщение автора Bagir поблагодарил:
- serge_wddm (Пн мар 13, 2017 3:13 pm)
- Рейтинг: 1.16%
-
- Сообщения: 9
- Зарегистрирован: Вс июн 26, 2016 9:58 am
- Благодарил (а): 8 раз
- Поблагодарили: 2 раза
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
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
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);
- За это сообщение автора sergejey поблагодарили (всего 2):
- serge_wddm (Вс мар 19, 2017 12:13 pm) • Samir77 (Пт окт 11, 2019 1:05 pm)
- Рейтинг: 2.33%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 587
- Зарегистрирован: Сб мар 19, 2016 7:24 pm
- Благодарил (а): 299 раз
- Поблагодарили: 27 раз
Re: Остановить PlaySound()
это код ведь должен останавливать воспроизведение радио 101?))sergejey писал(а):....
остановка проигрывания:
Код: Выделить всё
$url=BASE_URL.ROOTHTML.'popup/app_player.html?ajax=1'; $url.="&command=stop"; $result=getURL($url, 0);
что должно быть вместо?
Код: Выделить всё
BASE_URL.ROOTHTML
MD на raspberry pi3
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Остановить PlaySound()
Вариант с медиа безусловно интересен. И если подобное уже реализовано в системе, то и вопроса наверное бы не возникло. Играем вместо любимой музыки жуткую кричалку и останавливаем по команде в момент сброса тревоги. Это просто идеально.
Но если Медиа не настроено, то задача может вызвать ряд дальнейших затруднений.
Вообщем вариант с медиа интереснее, но как альтернатива предложенный пяти минутный таймер. Чтобы отменить тревогу можно просто грохнуть таймер, и сирена быстро заглохнет. Крик сирены при этом можно красиво дополнить вставками чтения текста.
Экспериментируйте, вы на верном пути.
Но если Медиа не настроено, то задача может вызвать ряд дальнейших затруднений.
Вообщем вариант с медиа интереснее, но как альтернатива предложенный пяти минутный таймер. Чтобы отменить тревогу можно просто грохнуть таймер, и сирена быстро заглохнет. Крик сирены при этом можно красиво дополнить вставками чтения текста.
Экспериментируйте, вы на верном пути.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Остановить PlaySound()
События я с горяча предложил. Events() Мне показалось это интересная штука. Я даже придумал как это сипользовать в разных ситуациях. Суть в том, что из любого кода можно создать событие. Это как таймер, только почти без срока завершения. В дальнейшем можно проверять события, и при их наличии принимать соответствующие решения. Событие, это как общее свойство, в котором по имени мы ищем интересующее нас.serge_wddm писал(а):А события чем отличаются от методов? Как и когда их применять?
Сергей пишет, что это мертвое дело. Я до сих пор использую Events, но ни что не мешает обойтись без этого.
Как итог, используйте медиа или таймер. Мне травятся оба эти способа.
-
- Сообщения: 9
- Зарегистрирован: Вс июн 26, 2016 9:58 am
- Благодарил (а): 8 раз
- Поблагодарили: 2 раза
Re: Остановить PlaySound()
Спасибо, Сергей. Вариант с медиаплеером рабочий. Только остановка проигрывания заработала по команде close.
остановка проигрывания:
Вариант с периодическим вызовом PlaySound и таймерами тоже рабочий, однако непрерывный звук из коротких звуковых фрагментов получить невозможно, т.к. таймеры работают не очень точно. получается звук сирены-пауза-звук сирены-пауза. Также, как я понимаю, нагрузка на систему большая из-за постоянных проверок условия AlarmStatus и установки таймера каждые 5 секунд.
остановка проигрывания:
Код: Выделить всё
$url=BASE_URL.ROOTHTML.'popup/app_player.html?ajax=1';
$url.="&command=CLOSE";
$result=getURL($url, 0);
-
- Сообщения: 587
- Зарегистрирован: Сб мар 19, 2016 7:24 pm
- Благодарил (а): 299 раз
- Поблагодарили: 27 раз
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
-
- Сообщения: 587
- Зарегистрирован: Сб мар 19, 2016 7:24 pm
- Благодарил (а): 299 раз
- Поблагодарили: 27 раз
Re: Остановить PlaySound()
неужели никто не знает как остановить воспроизведение?
какой командой выключить mpd?
ЗЫ. получается, что это самый нерешаемый вопрос за несколько месяцев использования МД
какой командой выключить mpd?
ЗЫ. получается, что это самый нерешаемый вопрос за несколько месяцев использования МД
MD на raspberry pi3