Страница 1 из 4

Проблема с воспроизведением музыкального фона при разговоре

Добавлено: 09 мар 2016, 11:53
Garnish
Всем привет. Собственно само тз: "Соединить 2х клиентов (оба используют мобильную связь) и добавить им музыкальный фон на время беседы".

Версия: Asterisk 11.17.0
Сама задача решена с помощью 2х call файлов (первый соединяет клиентов, второй подключает chanspy и музыку:
# Cоединяем клиента 79376538527 с 79250901402
Channel: Local/79376538527@mobile/nj
CallerID: 78462070121
Context: client
Extension: 79250901402

# Dialplan
[mobile]
exten =>_[78]9XXXXXXXXX,1,Set(CALLERID(num)=79376538526)
exten =>_[78]9XXXXXXXXX,n,NoOp(${CHANNEL})
exten =>_[78]9XXXXXXXXX,n,Dial(SIP/link/${EXTEN})

[client]
exten =>_[78]9XXXXXXXXX,1,Set(CALLERID(num)=79376538123)
exten =>_[78]9XXXXXXXXX,n,NoOp(${CHANNEL})
; 2201955 номер файла, который будет проигрываться для фона
exten =>_[78]9XXXXXXXXX,n,Dial(SIP/link/${EXTEN},30,M(music,${CHANNEL},220195))

# После поднятия ответа клиента Б, идем в:
[macro-music]
; 12323 - просто имя для нового call файла
exten => s,1,AGI(tone.php,12323,${ARG1},${ARG2});

Суть AGI - создать еще один call файл, который запустит chanspy в канал, в котором уже есть разговор, и второй ногой в контекст, который будет проигрывать мелодию:
# этот подключается
[spy]
exten => s,1,ChanSpy(${channel},bqBE)
exten => s,n,Hangup

# этот проигрывает по кругу, пока люди не наговорятся
[spy_music]
exten => 1,1,Answer
exten => 1,n,Wait(1)
exten => 1,n,Set(ROW_COUNTER=0)
exten => 1,n,While($[${ROW_COUNTER} < 100])
exten => 1,n,Playback(/u00/soundin/220195)
exten => 1,n,Set(ROW_COUNTER=$[ ${ROW_COUNTER} + 1 ])
exten => 1,n,EndWhile()
exten => 1,n,Hangup

Перед тем, как проиграть мелодию, она обрабатывается через sox (нормализация и понижение громкости. Обработка происходит после скачивания файла с нашего сервера).
Все работает, клиенты слышат друг друга, фоновая музыка играет. В примерах прописаны статичные файлы, т.к. все в рамках тестирования.
Проблема пришла оттуда, откуда не ждали. Иногда, во время разговора у одного из участников, в момент его речи пропадает музыка. Т.е. он говорит - пропадает, замолкает - музыка продолжается. В этот момент у второго участника разговора все отлично. Проблемная сторона при этом рандомная, т.е. нет разницы кому звонить первым, это может быть как у клиента А, так и у Б.

Пробовал выставлять джиттер - не помогает.
Ужимал файл до:
Channels : 1
Sample Rate : 8000
Precision : 16-bit - Не помогает

Выставлял в asterisk.conf
internal_timing = yes

Отключал vad и игрался с качеством кодеков в codecs.conf
Пробовал на 2х серверах (железо и виртуалке (на виртуалке проблем с ivr нет)) - разницы нет.

Все вызовы проходят через g.711 alaw (пробовал через 2х операторов).
Ничего не помогает.
При этом, проблема НЕ наблюдается, если:
1. Один из участников разговора sip клиент
2. Не уменьшать громкость мелодии (но это не вариант, люди друг друга не будут слышать)

Я уже хз что думать, и куда копать. Может подскажете?
У меня остались только мысль, что это либо вообще проблемно сделать в мобильных сетях, либо какая-то лажа с транскодингом (тестировал во время полного отсутствия на сервер)
Никаких ошибок в лог не падает.

Ну и второй вопрос, можно ли вышеизложенное осуществить без chanspy? Я пробовал макросом сразу запускать Playback, но слышит только одна сторона, а вторая висит на линии и ждет ответа.

Re: Проблема с воспроизведением музыкального фона при разгов

Добавлено: 09 мар 2016, 12:10
Glukinho
Что, если сделать через конференцию, а не ChanSpy?

И в каком кодеке записан проигрываемый файл? Может, тоже в alaw перекодировать?

Re: Проблема с воспроизведением музыкального фона при разгов

Добавлено: 09 мар 2016, 12:27
Garnish
Честно говоря, не видел в confBridge ничего похожего (https://wiki.asterisk.org/wiki/display/AST/ConfBridge).
Пробовал в alaw, нет разницы.

Re: Проблема с воспроизведением музыкального фона при разгов

Добавлено: 09 мар 2016, 14:06
Glukinho
А что там надо видеть? Просто суете в конференцию три канала: два участника, третий с вечным Playback файла. Как-то так.

Re: Проблема с воспроизведением музыкального фона при разгов

Добавлено: 09 мар 2016, 15:50
Garnish
Имхо, конференции более ресурсозатратные, нежели chanspy. Тем более, клиентов-то будет на 2, а более.
Ради интереса, провел небольшой эксперимент, звоню на свой мобильный, в отвеченный канал робот монотонно бубнит сообщение. Все хорошо, ничего не квакает. Подключаю музыку через chanspy. Из 4 раз - 1 раз музыка пропадала во время моих реплик.
Сделал все тоже самое, только вместо сотовых использовал sip клиент (на том же сотовом, но не суть): 7 из 7 раз все отлично.

Re: Проблема с воспроизведением музыкального фона при разгов

Добавлено: 09 мар 2016, 16:47
Glukinho
А SIP/link - это что? Через что звоним на мобильные?

Re: Проблема с воспроизведением музыкального фона при разгов

Добавлено: 09 мар 2016, 17:15
Garnish
Да, это один из поставщиков услуг.

Re: Проблема с воспроизведением музыкального фона при разгов

Добавлено: 09 мар 2016, 18:03
Glukinho
Я имел в виду, что там за оборудование. Может, у них и крутить надо? Например, от них идут пакеты Comfort Noise, астер такие не очень хорошо воспринимает.
Вообще, хорошо бы посмотреть дамп и консоль с дебагом в момент, когда пропадает музыка.

Re: Проблема с воспроизведением музыкального фона при разгов

Добавлено: 09 мар 2016, 18:49
Garnish
Спасибо за наводку. Гляну дебаг вечером или завтра утром. Хочу уточнить, а что смотреть-то в дампе? По сути обычный вызов, ртп порты и прочее. Искать пакет, когда пропадает музыка?

P.S. Как я писал, пробовал через разных операторов, поэтому сомневаюсь, что проблема на их стороне. К тому же, смущает, что при звонках на SIP устройства подобной проблемы не наблюдается.

Re: Проблема с воспроизведением музыкального фона при разгов

Добавлено: 09 мар 2016, 22:34
Glukinho
Не знаю, что смотреть. Знал бы - сразу сказал.
Например, если в RTP, уходящем с астериска в сторону транка, никаких провалов нет, это повод подумать, что астер не виноват.