LINUX.ORG.RU

SIP client


0

1

Доброе время суток. Хотел бы попробовать написать СИП клиент для asterisk например. Знаю что это будет велосипед, но просто захотелось написать своё. Помогите с чего начать. Или может у кого есть простой пример который можно понять. Спасибо.

anonymous

> Хотел бы попробовать написать СИП клиент для asterisk например. Знаю что это будет велосипед, но просто захотелось написать своё.

Можно попробовать (ну раз уж просто захотелось) написать клиент для Microsoft Communication Server 2007 который бы работал на линукс, может быть довольно актуально в перспективе.

Dima_Ky
()

Что имеешь в виду под SIP-клиент? Софтфон? Самому эта тема интересна - если что накопаешь - отпишись здесь ок? :)

lv ★★
()
Ответ на: комментарий от lv

==>Что имеешь в виду под SIP-клиент?

В идеале да. У тебя есть какая нибудь инфа.

пока нарыл вот это

http://peers.sourceforge.net/

как пример очень простой можно коечто понять.

Мне вот не понятно как полученный звук сжать и

отправить другому клиенту .

anonymous
()
Ответ на: комментарий от anonymous

> В идеале да. У тебя есть какая нибудь инфа.

Я написал UA (User Agent) + телефонная книга и всякие рюшечки с реализацией SIP-стека (использовал sofia-sip). Есть интерес в том, чтобы не изобретать велосипедов, а использовать функционал asterisk`a. Но так как в данное время другой работы хватает, я эту проблему пока не копал. На сколько я себе это представляю, у астериска должен быть определённый интерфейс, позволяющий получать евенты с софтфона (типа какие кнопочки нажали, положили/подняли трубу и т.д.). SIP-стек у астериска есть свой. Но повторюсь - это мои предположения - я с астериском ещё не работал и не представляю как там обстоят дела.

> пока нарыл вот это

> http://peers.sourceforge.net/


Спасибо - посмотрю в своё время.

> Мне вот не понятно как полученный звук сжать и

> отправить другому клиенту .


Для сжатия используются голосовые кодаки. Они реализованы в *.

lv ★★
()
Ответ на: комментарий от lv

==> Для сжатия используются голосовые кодаки. Они реализованы в *. То что там это реализовано это понятно. Мне интересно сип софтфон написать хотябы самый примитивный то есть чтобы мог брать звук с микрофона сжимать его и отправлять собеседнику

anonymous
()
Ответ на: комментарий от anonymous

> То что там это реализовано это понятно. Мне интересно сип софтфон написать хотябы самый примитивный то есть чтобы мог брать звук с микрофона сжимать его и отправлять собеседнику

А что тогда непонятно? Звук шлётся по протоколу RTP, если ты об этом. Примеры реализации свободных кодаков, думаю, можно найти много - я бы посмотрел на G.711, как на самый простой (a-law и u-law).

lv ★★
()
Ответ на: комментарий от anonymous

> Мне интересно сип софтфон написать хотябы самый примитивный то есть чтобы мог брать звук с микрофона сжимать его и отправлять собеседнику

Есть неплохая работа Rogelio Perea, Internet Multimedia Communications Using SIP, ISBN: 978-0-12-374300-8, там довольно подробно описана роль сипа как сигнального протокола включая RTP, создание и управление медиа сессиями. Видно, что у автора серьезный опыт разроботки медиа прилажений. Есть реализации на java.

Самый простой в реализации кодек, на мой взгляд, G.711 (http://en.wikipedia.org/wiki/G.711), алгоритм сжатия найти не сложно, декодировать можно просто используя таблицу.

Если писать на С++ я бы посоветовал использовть ACE (http://www.cse.wustl.edu/~schmidt/ACE-overview.html).

Dima_Ky
()
Ответ на: комментарий от anonymous

А, то есть сам принцип работы софтфона?.. тогда тебе не примеры исходников нужны, а более общие статьи. Если вкратце, то Используются два основных протокола SIP и RTP. SIP нужен для установки соединения (
- здрасьте вам звонок от
предлагает использовать такие вот кодаки(SDP-протокол)
- отвечаем
будем использовать кодак такой-то - цепляйся к хосту:порту такому-то
)
Далее идёт соединение и передача данных в RTP. Это уже шифрованный голос. То есть поддерживается два соединения - одно для обмена SIP-сообщениями, другое - для передачи голоса.
Поговорили, кто-то положил трубку - по SIP идёт (
- Пока
- Ваше пока получено
)

lv ★★
()
Ответ на: комментарий от Dima_Ky

> Если писать на С++ я бы посоветовал использовть ACE (http://www.cse.wustl.edu/~schmidt/ACE-overview.html).

...после чего товаристч надолго забудет о SIP будучи с головой затянутым в увлекательное сексуальное путешествие по внутренностям ACE... :)

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

>...после чего товаристч надолго забудет о SIP будучи с головой затянутым в увлекательное сексуальное путешествие по внутренностям ACE... :)

можно увлекательное сексуальное путешествие по внутренностям ACE, можно придаться болле изащеренным утехам фетишистского характера используя стримы из гнукоммон++, для любителей же наиболее острых ощущений имеется спец. предложение с программированием сокетов напрямую. :)

Dima_Ky
()
Ответ на: комментарий от Dima_Ky

> для любителей же наиболее острых ощущений имеется спец. предложение с программированием сокетов напрямую. :)

"Программирование сокетов" это в смысле вызвать socket() bind() и иже с ними? Самый логичный подход.

lv ★★
()

1.5 года назад было такое поделие sip-communicator, на java. C libosip работать бы не советовал, имхо пациент скорее мертв чем жив, сам пробовал с ним играться - не впечатлил. кстати неплохое представление о работе астериска дает RFC 3261.

help_us
()
Ответ на: комментарий от lv

> "Программирование сокетов" это в смысле вызвать socket() bind() и иже с ними? Самый логичный подход.

Спасибо, буду знать!

Dima_Ky
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.