Вопрос

Мне было интересно, может ли кто-нибудь указать мне на хороший учебник о том, как создать SDP-сообщение.

Я прочитал основы и могу сконструировать и понять параметры, но, похоже, я просто не могу заставить это работать.

Я либо получаю неприемлемый здесь ответ, либо вообще не получаю ответа, это после того, как я получу 100 попыток и 180 ответных звонков.

Итак, мой SIP работает, но ему не нравятся данные SDP.

В настоящее время он сконструирован следующим образом:

String sdpData = "v=0\r\n"
            + "o=- 019078020 0"
            + " IN IP4  sip.ciceronetworks.com\r\n" + "s=MySession\r\n"
            + "c=IN IP4  sip.ciceronetworks.com\r\n"
            + "t=0 0\r\n" + "m=audio 6002 RTP/AVP 0\r\n"
            + "a=sendrecv\r\n" + "a=rtpmap:0 PCMU/8000\r\n" + "a=ptime:20\r\n"+ "a=fmtp:97 mode=20\r\n";


    byte[] contents = sdpData.getBytes(); 

    request.setContent(contents, contentTypeHeader); 

И пока я получаю 100 попыток, затем 180 звонков, но когда я принимаю вызов на другом конце, я вообще ничего не получаю в ответ, кажется, это просто сбой, я также получаю "Ошибку аудиоустройства" на клиенте ПК, которому я пытаюсь позвонить.

У кого-нибудь есть идеи?

Это было полезно?

Решение

Проблема мог быть очень простым:Кажется, вы забыли перевод строки после «a=sendrecv».:-)

В любом случае, вот совет:В целях тестирования вам, вероятно, лучше использовать какой-либо инструмент, а не сразу приступать к написанию частей протокола.Вы можете использовать глоток для этой цели он является отличным инструментом для тестирования SIP-сетей.Кроме этого, вы, конечно, можете просто прослушать сетевой трафик между двумя работающими SIP-устройствами и посмотреть, чем он отличается от вашего трафика.

РЕДАКТИРОВАТЬ:

Я пропустил это раньше:Вы должны опустить a=fmtp:97 mode=20, так как описание сеанса недействительно:Вы можете использовать атрибут параметра формата только для кодеков, упомянутых в строке мультимедиа.Кодеки идентифицируются по номеру типа полезной нагрузки (0=PCMU, 8=PCMA, 18=G723, ...).Некоторые кодеки не имеют официально присвоенных номеров, для них следует использовать динамический диапазон 96–127:пользовательские агенты могут свободно назначать номера в этом диапазоне через rtpmap атрибут.Таким образом, если вы не укажете, какой кодек вы подразумеваете под 97, другой пользовательский агент не сможет узнать, к какому кодеку следует применять параметры формата.

Другие советы

Паприка - это правильно:параметр a = fmtp: 97 mode= 20 просто неверен (и выглядит так, как будто это часть предложения кодека iLBC).Вы предложили не кодек 97, а кодек 0 (PCMU).

Обратите внимание, что a = fmtp: 97 не должно причинить вам вреда, это просто ложь.

Наиболее вероятная проблема заключается в том, что вы не являетесь sip.ciceronetworks.com - т. е.в ваших строках c = (и m = line) сказано "отправьте мой носитель на порт 6002 по адресу sip.ciceronetworks.com".Я подозреваю, что IP-адрес вашего компьютера не совпадает с sip.ciceronetworks.com, и / или между вами и другим концом есть брандмауэр / NAT.

Вероятно, это не ваша проблема, но строка o = неверна в соответствии со спецификацией От RFC 4566:

o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>

Заставить VoIP работать не так просто, как следует из RFC или объяснений в кулинарной книге....

Я нашел хорошую статью, посвященную SDP (протокол описания сеанса).Он также связан с SDK, который называется Ozeki VoIP SIP SDK.Если вы объедините эти вещи, вы сможете создать, например, программный телефон.

Также есть краткое описание СДП.

Работа с SDP в VoIP SIP-вызовах — интересная тема для тех, кто хочет разработать собственное приложение для программного телефона или веб-телефона или что-то еще по вашему желанию.

SDP описывает сеанс мультимедийной связи с целью объявления сеанса, приглашения на сеанс и согласования параметров.

Использование SDK может снять с плеч много бремени, поскольку обеспечивается гибкость и высокая совместимость.

Для получения дополнительной информации о SDP в связи с SDK для создания собственных приложений вы можете просмотреть упомянутую статью, если ищете в Google:«Работа с SDP при VoIP SIP вызовах»

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top