Смена кодека "на лету"
Сообщений: 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]), но она только возвращает значение, но не устанавливает.
Помогите справиться.
|
Сообщений: 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]), но она только возвращает значение, но не устанавливает.
Помогите справиться.
|
Откуда: Бишкек
Сообщений: 60
|
Re: Смена кодека "на лету"
Возможно нет кодека g729 в системе.
что показывает show translation или core show translation ?
если же есть, то нужно попробовать у 102 заменить
allow=g729,alaw
на
allow=g729
allow=alaw
|
Сообщений: 6521
|
Re: Смена кодека "на лету"
нет.
Надо
[102]
allow=all
и всё будет так как хочется (при условии что 729 в системе все-таки есть).
|
Сообщений: 6521
|
Re: Смена кодека "на лету"
нет. А у 102 аппаратно есть 729?
Надо
[102]
type=friend
canreinvite=yes
allow=all
и всё будет так как хочется (при условии что 729 в системе все-таки есть).
|
Сообщений: 91
|
Re: Смена кодека "на лету"
В системе (астериске) g729 есть, только без транскодинга
Аппаратно на 102 он есть. Это один из портов D-Link DVG5004S.
2ded: к сожалению все не стало как хочется...
canreinvite=yes насколько я помню позволяет rtp-трафику идти клиент-клиент, а не клиент-сервер-клиент, но все же я пробовал ставить его в yes
allow=all просто разрешает все кодеки, но у них есть порядок по умолчанию так сказать
sip show peer 102 это продемонстрировал.
|
Откуда: Бишкек
Сообщений: 60
|
Re: Смена кодека "на лету"
2ded а причем тут allow=all? не нужно что бы первым попавшимя кодеком шло соединение, например lpc10 :)
вот похоже не точное описание тут
если
102 allow=g729 и alaw, а у 101 только g729 и у обоих canrreinvite=yes то должно идти. Но не должно идти с 101 на 103, на 100% уверен если нет транскодинга. Поставь g729, не format_g729 как сейчас, а ещё и codec_g729 и не будет у тебя никаких мучений :)
|
Сообщений: 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})
Не помогло. там надо сначала внести изменения в базу, а затем еще раз звонить.
|
|