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

Не работает согласование кодеков

1 2>
Сообщений: 16

Не работает согласование кодеков

Проблема такая

Провайдер (sipnet.ru) поддерживает кодеки G723, G729, GSM, G711a (u не поддерживает) Все сообщения провайдера идут в G723 (голосовые меню и т.п.)
X-Lite поддерживает кодеки GMS,G711a,u
D-Link DPH-120S поддерживает кодеки G723, G729, G711a,u

Если Asteriskу в sip.conf разрешить использовать все кодеки, то происходит такое:
При звонке он выбирает разные кодеки для IP-телефона и X-Lite, и после поднятия трубки происходит разрыв.
В лог пишется например
NOTICE[60735]: channel.c:1724 ast_set_read_format: Unable to find a path from alaw to g723
NOTICE[60735]: channel.c:1691 ast_set_write_format: Unable to find a path from g723 to alaw
При обратном звонке всё нормально, выбирается g711.

Насколько я понимаю, почему-то не работает автосогласование кодеков! Хотя каждая стороная имеет много кодеков, среди которых есть одинаковые (в данном примере это только G711), они выбирают кодеки которые хотят, и соединение установить не получается!

Сообщение же в логе вроде говорит о том,что Asterisk не может перекодировать голос.
А он вообще это может делать? Я хотел поставить кодеки G723 и G729 с intel, но там какая-то ограниченная лицензия на месяц (и вообще не понятно как их ставить). Бесплатных (или взломанных) версий нет что ли?
Кстати у меня FreeBSD. Туда вообще встанут кодеки?
Вообще-то хотелось бы иметь возможность перекодировать, если у соединяемых устройств вообще нет общих кодеков (или в некоторых случаях насильно).
Но в остальных случаях хочется, чтобы находился общий кодек!

В Asterisk уже встроен GSM (все менюшки на нём), но и его он почему-то перекодировать не хочет ! То есть если я ограничу X-Lite только GMS-ом (как настройкой самого X-Lite, так и настройкой в его блоке в sip.conf), соединение так же не устанавливается. При этом он не пишет о кодеках, а просто говорит
WARNING[60735]: channel.c:2115 ast_channel_make_compatible: No path to translate from SIP/xxxxx(1) to SIP/yyyyyyy(2)
WARNING[60735]: app_dial.c:1006 dial_exec: Had to drop call because I couldn't make SIP/xxxxx compatible with SIP/yyyyy
Это он говорил и в прошлом случае, но уже после сообщения о кодеках.

Далее при звонке с X-Lite через провайдера на город, соединение устанавливается (G711), но в лог всё равно пишется про невозможности трансляции из G723 в G711 и наоборот. Видимо сначала удалённый шлюз пытается использовать G723 но получив отказ, всё же переключается на G711
При звонке с IP-телефона на город всё нормально (используется G723).

Кстати в IP-телефоне выставлен следующий приоритет кодеков. G723, G729, G711a, G711u
В Asterisk
disallow=all
allow=g723
allow=g729
allow=alaw
allow=gsm
allow=ulaw
allow=ilbc

Если же я меняю так:
disallow=all
allow=g723
allow=g729
allow=gsm
allow=alaw
allow=ulaw
allow=ilbc

то при звонке с D-Link на X-Lite уже пишет о невозможности транслировать GSM (до этого говорило G711) в G723


На автоинформаторы же сипнета с X-Lite позвонить невозможно вообще, так как они упорно хотят работать в G723 и опять пишется о невозможности транслировать G711 в G723 и наоборот.

НО! Когда я звоню с D-Linka (который поддерживает G723) пишется то же самое! Почему он сразу не выбирает этот кодек?

Временно решил я проблемы со связью во внутренней сети с помощью разрешения только G711
Его поддерживает всё. Но проблемы всё же остались:
1. На автоинформаторы сипнета позвонить нельзя
2. Дорого платить за трафик G711 при звонках на город, забивается канал, падает качество.

Так что это совсем не годится.
Подскажите, пожалуйста, как заставить оконечные устройства согласовывать кодеки!
2006-01-08 14:38

Сообщений: 51

Re: Не работает согласование кодеков

все непросто.

ИМХО сипнет, выбирая направление для соединения как я понял ищет подходящий кодек из твоего списка доступных. То есть, разрешил ты скажем G711 и G729 в направлении сипнета, сипнет тебя может соединить со шлюзом, где G711 есть, а G729 вообще нет. Соответственно твоему астериску ничего не остается как работать в G711. И пытаться перекодировать, если на телефоне с которого звонишь G711 нет.
Замечу также что в направлении на москву, если выбираеттся G729 кодек, то обычно с включенном VADом и никаким качеством.

Теперь. Если кодеки совпадают и в настройках не стоит canreinvite=no, голосовой трафик в астериск вообще не заходит. Он идет МИМО него. То есть соединение по RTP устанавливается напрямую от телефона к сипнету. Если же трафик проходит через asterisk, тут возможны проблемы с настроками и самим астериском. Ибо он - не самое безглючное создание чесловечества к сожалению.

Для перекодировки кодеков в астериске, нужно наличие модулей codec_g729.so и codec_g723.so, полученных не от астериска. Ибо в астериске там затычка вместо кодека. Их надо скачать и поставить. Тут они есть вроде. Правда с лицензией вопрос, но все работает в итоге.
2006-01-08 17:02

Сообщений: 16

Re: Не работает согласование кодеков

Дело то в том, что все телефоны поддерживают G711
Трафик идёт через Asterisk, так как напрямую он не пойдёт (NAT и т.п.).
В блоке sipnet прописано canreinvite=no а в общих настройках canreinvite=yes, чтобы телефоны между собой в локалке работали напрямую.

Но дело даже не в сипнете. Допустим что его нет. Но между собой телефоны то тоже не коннектятся! Хотя на них есть общий кодек G711.
Всё равно для них выбираются разные и в результате Asterisk выдаёт ошибку.
2006-01-08 17:52

Сообщений: 104

Re: Не работает согласование кодеков

Сипнет.ру поддерживает 4 кодека только на эхо-тесте (номер 0000)
На всех остальных звонках стоит только один кодек - GSM 06.10
2006-01-10 17:51

Сообщений: 569

Re: Не работает согласование кодеков

afaik sipnet никак не лимитирует используемые кодеки - он просто посредник между терминаторами и пользователями.
в процессе экспериментов asterisk звонил на sipnet и с g.711 и с g.729 (другие кодеки не пробовал)
2006-01-10 18:03

Сообщений: 51

Re: Не работает согласование кодеков

может я не прав (тогда попрвьте!),но сложилось такое впечатление, что в сипе в качестве кодека берется на каждом соединении (а в случае работы через астериск с cfnreinvite=no их 2 - до * и от * до абонента) первый кодек по списка, доступный на противоположной стороне. ЭТО называется красивым словом СОГЛАСОВАНИЕ?
2006-01-10 21:50

Сообщений: 16

Re: Не работает согласование кодеков

Шлюзы, участвующие в их программе поддерживают набор из G711, G723, G729, GSM (где больше, где меньше).
На счет первого из спискакак раз у них с этим вроде всё впорядке. Выбирает следующий, если первый не получается использовать.

НО! Давайте забудем про SIPNET, у меня конкретная проблема связи между устройствами в своей сети. Именно тут не получается.
Что происходит я уже писал в первом сообщении.
Никто не знает, почему так??? Могу более подробно расписать ситуации и дать нужные конфиги.

Сейчас ещё появился шлюз DVG-2001S, который поддерживает G711, G729 и G726
2006-01-10 23:55

Сообщений: 194

Re: Не работает согласование кодеков

в файле sip.conf в секции [general] пропиши все кодеки, которые у тебя астериск понимает по show translation в командной строке, и не забудь сделать reload

[general]
disallow=all
allow=alaw
allow=ulaw
allow=g726
allow=gsm
allow=ilbc
allow=g729
allow=g723.1

ИМХО, одного описания кодеков в пирах недостаточно (были у меня когда-то давно подобные грабли)
2006-01-11 16:54

Сообщений: 16

Re: Не работает согласование кодеков

По show translation даёт вот что
g723 gsm ulaw alaw g726 adpcm slin lpc10 g729 speex ilbc
g723 - - - - - - - - - - -
gsm - - 71 71 86 81 70 91 - - 171
ulaw - 101 - 1 17 12 1 22 - - 102
alaw - 101 1 - 17 12 1 22 - - 102
g726 - 115 16 16 - 26 15 36 - - 116
adpcm - 102 3 3 18 - 2 23 - - 103
slin - 100 1 1 16 11 - 21 - - 101
lpc10 - 113 14 14 29 24 13 - - - 114
g729 - - - - - - - - - - -
speex - - - - - - - - - - -
ilbc - 132 33 33 48 43 32 53 - - -


на хватает как раз того что нужно g723 и g729

кодеки и были прописаны в секции [general]


Но всё же. Предположим транслировать кодеки (перекодировать) Asterisk не может, потому что соотв. кодеки не установлены. Но ведь он может двум устройствам назначить использовать кодек из тех, которые у них совпадают! Почему же этого не происходит, а он выбирает разные кодеки для них?
2006-01-13 19:08

Сообщений: 51

Re: Не работает согласование кодеков

asterisk и вообще SIP интеллектом не обладает.
и выбирается, как я уже писал первый кодек из списка, имеющийся на противоположной стороне. Поскоьку твоего конфига (астериска и обоих телефонов\шлюзов)так никто и не видел, точно чтото сказать сложно, но думаю если конкретно рассмотреть конфиги, то так оно и получится, что все правильно. Запрети "лишние" кодеки.

2006-01-13 21:01

1 2>
Добавить страницу в закладки:  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