Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / Смена кодека "на лету"

Смена кодека "на лету"

Сообщений: 91

Смена кодека "на лету"

Вот в sip.conf

[101]
type=friend
canreinvite=no
host=dynamic
username=101
disallow=all
allow=g729
context=plan2

[102]
type=friend
canreinvite=no
host=dynamic
username=102
disallow=all
allow=alaw,g729
context=plan2

[103]
type=friend
canreinvite=no
host=dynamic
username=103
disallow=all
allow=alaw
context=plan2

Необходимо со 102го звонить 101му по одному кодеку, а 103му по другому.

В данной конфигурации звонок со 102го на 103 проходит нормально, а на 101й не проходит
No audio format found to offer

если так
[102]
allow=g729,alaw

то соответственно на 101й проходит, а на 103 нет.

Пробовал играть с переменной SIP_CODEC, но в этом случае кодек меняется только после установления соединения. Соответсвенно, сначала он пытается транскодить, а g729 у меня только pass-through.

Есть такая функция SIPPEER(102:codec[0]), но она только возвращает значение, но не устанавливает.

Помогите справиться.
2007-06-28 10:46

Сообщений: 91

Re: Смена кодека "на лету"

Вот в sip.conf

[101]
type=friend
canreinvite=no
host=dynamic
username=101
disallow=all
allow=g729
context=plan2

[102]
type=friend
canreinvite=no
host=dynamic
username=102
disallow=all
allow=alaw,g729
context=plan2

[103]
type=friend
canreinvite=no
host=dynamic
username=103
disallow=all
allow=alaw
context=plan2

Необходимо со 102го звонить 101му по одному кодеку, а 103му по другому.

В данной конфигурации звонок со 102го на 103 проходит нормально, а на 101й не проходит
No audio format found to offer

если так
[102]
allow=g729,alaw

то соответственно на 101й проходит, а на 103 нет.

Пробовал играть с переменной SIP_CODEC, но в этом случае кодек меняется только после установления соединения. Соответсвенно, сначала он пытается транскодить, а g729 у меня только pass-through.

Есть такая функция SIPPEER(102:codec[0]), но она только возвращает значение, но не устанавливает.

Помогите справиться.
2007-06-28 10:48

Откуда: Бишкек
Сообщений: 60

Re: Смена кодека "на лету"

Возможно нет кодека g729 в системе.
что показывает show translation или core show translation ?

если же есть, то нужно попробовать у 102 заменить
allow=g729,alaw
на
allow=g729
allow=alaw
2007-06-28 10:59

Сообщений: 6521

Re: Смена кодека "на лету"

нет.
Надо
[102]
allow=all
и всё будет так как хочется (при условии что 729 в системе все-таки есть).
2007-06-28 11:35

Сообщений: 6521

Re: Смена кодека "на лету"

нет. А у 102 аппаратно есть 729?
Надо
[102]
type=friend
canreinvite=yes
allow=all
и всё будет так как хочется (при условии что 729 в системе все-таки есть).
2007-06-28 11:36

Сообщений: 91

Re: Смена кодека "на лету"

В системе (астериске) g729 есть, только без транскодинга
Аппаратно на 102 он есть. Это один из портов D-Link DVG5004S.

2ded: к сожалению все не стало как хочется...
canreinvite=yes насколько я помню позволяет rtp-трафику идти клиент-клиент, а не клиент-сервер-клиент, но все же я пробовал ставить его в yes

allow=all просто разрешает все кодеки, но у них есть порядок по умолчанию так сказать

sip show peer 102 это продемонстрировал.
2007-06-28 12:16

Откуда: Бишкек
Сообщений: 60

Re: Смена кодека "на лету"

2ded а причем тут allow=all? не нужно что бы первым попавшимя кодеком шло соединение, например lpc10 :)

вот похоже не точное описание тут

если
102 allow=g729 и alaw, а у 101 только g729 и у обоих canrreinvite=yes то должно идти. Но не должно идти с 101 на 103, на 100% уверен если нет транскодинга. Поставь g729, не format_g729 как сейчас, а ещё и codec_g729 и не будет у тебя никаких мучений :)

2007-06-28 15:17

Сообщений: 91

Re: Смена кодека "на лету"

С canreinvite=yes с обоих сторон не пошло, как я уже писал.
Со 101 на 103 и не надо, главное чтобы 102 мог со всеми связываться.

codec_g729. тут тоже сложность. где мне найти codec_g729.so на Semptron? :) Весь гугл перерыл.

Крыша едет уже.
Пробовал следующий изврат. Загнал sip-конфиг в mysql, затем в диал-плане примерно следующее
exten => 101,1,MYSQL(Connect connid localhost user pass asterisk)
exten => 101,2,MYSQL(Query resultid ${connid} update\ sip_buddies\ set\ allow=\'g729\'\ where\ username=\'102\')
exten => 101,3,Dial(SIP/101|20|tT)
exten => 101,4,MYSQL(Query resultid ${connid} update\ sip_buddies\ set\ allow=\'alaw\;g729\'\ where\ username=\'102\')
exten => 101,5,MYSQL(Disconnect ${connid})

Не помогло. там надо сначала внести изменения в базу, а затем еще раз звонить.
2007-06-28 15:40

Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru