MusicOnHold + mpg123 = проблема
Сообщений: 1530
|
MusicOnHold + mpg123 = проблема
Есть такая проблема:
На сервере стоит * (1.0.7) + mpg123 (0.59s). Звук играет (правда в X-Lite его нет -- не поддерживает?), но если продолжить разговор, то * пишет, что музыка остановлена, но процесс mpg123 остается висеть. При этом если опять перевести линию в hold и обратно, то повиснет еще один mpg123. Завершение работы * и повторного запуск на процессы mpg123 никак не влияют. Убиваются только по kill -9.
Что я так неправильно собрал/настроил?
P.S. mpg123 собран с последними патчами от ALT Linux...
|
Откуда: Москва
Сообщений: 3421
|
Re: MusicOnHold + mpg123 = проблема
А что говорит AltLinux?
|
Сообщений: 1530
|
Re: MusicOnHold + mpg123 = проблема
litnimaxА что говорит AltLinux?
А они-то причем?
У меня есть пара вопросов:
1. Почему * просит строго определенную версию mpg123 иначе ругается?
2. Почему * не убивает неиспользуемые процессы?
|
Сообщений: 29
|
Re: MusicOnHold + mpg123 = проблема
Вообще-то на ВИКИ писали, что только версия mpg123 0.59r а не 0.59s нормально работает. Есть еще альтернативые плееры. Можно их попробовать..... У меня с этим не было проблем (если делал все строго по инструкции).
|
Сообщений: 6521
|
Re: MusicOnHold + mpg123 = проблема
Цитита с http://www.asterisk.org.ru/forum/viewtopic.php?t=73
Если при компиляции подряд выдается множество warning'ов типа:
Код:
localtime.c: In function `ast_tzset':
localtime.c:958: warning: passing arg 3 of `__ast_pthread_mutex_lock' discards qualifiers from pointer target type
localtime.c:960: warning: passing arg 3 of `__ast_pthread_mutex_unlock' discards qualifiers from pointer target type
, то выключите (закоментируйте) опцию '-DDEBUG_THREADS', иначе Asterisk на слабой машине будет выпадать в coredump от (вероятно) нехватки памяти, тут же "возрождаться", снова умирать и так далее, пока, простите, не засрет всю память десятками клонов mpg123, которые он оставляет после себя, не умея убирать их нормально. В конечном итоге система начнет убивать (out of memory...) вполне приличные приложения, вроде sshd? так, что вы вылетите из консоли и сможете подключиться только локально, и то с грехом пополам, так как вся консоль будет забита криками kernel
|
Сообщений: 1530
|
Re: MusicOnHold + mpg123 = проблема
michaВообще-то на ВИКИ писали, что только версия mpg123 0.59r а не 0.59s нормально работает. Есть еще альтернативые плееры. Можно их попробовать..... У меня с этим не было проблем (если делал все строго по инструкции).
Да, читал. Но я не видел описания причины такого выбора!
Возможно mpg123 просто не убивается по SIGKILL (именно так его пытается убить asterisk судя по исходникам). Проверку еще не проводил -- на машине, на которой крутится asterisk нет звуковой карты и mpg123 просто не запускается в консоле...
|
Сообщений: 1530
|
Re: MusicOnHold + mpg123 = проблема
ded
localtime.c: In function `ast_tzset':
localtime.c:958: warning: passing arg 3 of `__ast_pthread_mutex_lock' discards qualifiers from pointer target type
localtime.c:960: warning: passing arg 3 of `__ast_pthread_mutex_unlock' discards qualifiers from pointer target type
Ни одного сообщения.
ded
, то выключите (закоментируйте) опцию '-DDEBUG_THREADS', иначе Asterisk на слабой машине будет выпадать в coredump от (вероятно) нехватки памяти, тут же "возрождаться", снова умирать и так далее, пока, простите, не засрет всю память десятками клонов mpg123, которые он оставляет после себя, не умея убирать их нормально. В конечном итоге система начнет убивать (out of memory...) вполне приличные приложения, вроде sshd? так, что вы вылетите из консоли и сможете подключиться только локально, и то с грехом пополам, так как вся консоль будет забита криками kernel
У меня asterisk собирается на другой машине в rpm'ку...
Собирается на PIV-1800, работает на PIV-2600. Я сомневаюсь, что обе машины такие уж слабые, тем более, что первая машина участвует исключительно в процессе сборки. Ключи оптимизации были полностью переработаны мной под стандартные для своей системы (Openwall).
Я грешу либо на mpg123, который не умирает по SIGKILL, но это больно странно. Возможно * просто не во всех ситуациях посылает сигнал SIGKILL...
|
Сообщений: 1530
|
Re: MusicOnHold + mpg123 = проблема
Хм. Сейчас глняул -- висит два mpg123.
Попробовал провести эксперимент на Sipura SPA-841 (у нее 2 линии).
Звонил с одной линии на другую и вешал на Hold.
Новые mpg123 не появлялись. Так два процесса и висит...
Правда другой странный глюк -- при снятии с Hold'а музыка так и продолжает играть. ;)
-- Executing Wait("SIP/101-a51c", "1") in new stack
-- Executing SetMusicOnHold("SIP/101-a51c", "random") in new stack
-- Executing Answer("SIP/101-a51c", "") in new stack
-- Executing Dial("SIP/101-a51c", "SIP/102|70") in new stack
-- Called 102
-- SIP/102-70f1 is ringing
-- SIP/102-70f1 answered SIP/101-a51c
-- Attempting native bridge of SIP/101-a51c and SIP/102-70f1
-- Started music on hold, class 'random', on SIP/101-a51c
-- Started music on hold, class 'random', on SIP/102-70f1
-- Stopped music on hold on SIP/101-a51c
-- Started music on hold, class 'random', on SIP/101-a51c
-- Stopped music on hold on SIP/102-70f1
-- Stopped music on hold on SIP/101-a51c
== Spawn extension (tmapvt, 102, 4) exited non-zero on 'SIP/101-a51c'
Stopped было. Хотя если в реальной жизни вроде все работает правильно (нужно, конечно, проверить).
P.S. Не в тему: X-Lite не поддерживает MusicOnHold?
|
Сообщений: 194
|
Re: MusicOnHold + mpg123 = проблема
у меня - нормально поддерживает и икс-лайт, и икс-про, и сипуры :-)
|
Сообщений: 44
|
Re: MusicOnHold + mpg123 = проблема
Да забейте на mpg123.
В CVS-HEAD есть замечательная штука rawplayer.c
Скомпилить, изменить musiconhold.conf как написано в asterisk/contrib/utils/README.rawplayer и все пашет на ура.
Сам провернул подобное, причем все это работает на FreeBSD 5-STABLE.
Ни чего не зависает, не продолжает играть и корректно убивается при перезагрузке *.
|
|