NEWS
Handsfree ip-телефон
-
Наверное у каждого бывали ситуации когда звоните домой, а телефон никто не слышит (не зарядили вовремя, либо не слышно).
Есть вариант организовать sip-телефон на базе linux-сервера (без GUI и монитора!), к которому подключен микрофон, динамик и если нужен видеотелефон то ip/usb-камера.
Инструкция (пишется по памяти, если что-то не хватает - спрашивайте, дополню):
1. Устанавливаем Asterisk на любой сервер с выходом в Интернет (не обязательно на ту же машину где будет ip-телефон). Подойдёт любая бесплатная версия, которую проще поставить из пакетов.
Допустим у нас 2 абонента:
-
Мобильный абонент: user1/password1 с номером 860
-
Стационарный абонент на сервере: flat1/password2 с номером 861.
1.1 В Asterisk настраиваем:
в файле extensions.conf в конце добавляем:
[from-sip] exten => 860,1,Dial(SIP/user1) exten => 861,1,Dial(SIP/flat1)
в файле sip.conf в конце добавляем:
` > [user1]
type = friend ; Friends place calls and receive calls
username=user1
context = from-sip ; Context for incoming calls from this user
secret = password1
;allow = all
disallow=pcmu ; First disallow all codecs
allow=speex,libc,gsm,vp8,h264 ; Allow codecs in order of preference
host = dynamic
directmedia = nohat
nat = force_rport,comedia
[flat1]
type = friend ; Friends place calls and receive calls
username=flat1
context = from-sip ; Context for incoming calls from this user
secret = password2
disallow=pcmu ; First disallow all codecs
allow=speex,libc,gsm,vp8,h264 ; Allow codecs in order of preference
;allow = all
host = dynamic
directmedia = nohat
nat = force_rport,comedia
keepalive=60 `
В файле rtp.conf чтобы не открывать снаружи слишком большой диапазон портов можно ограничить в секции "[general]"
` > rtpstart=19900
rtpend=20000 `
1.2. На маршрутизаторе открываем извне порт udp 5060 и диапазон портов udp указанный в rtp.conf.
2. На linux-сервере, к которому подключен микрофон, динамик и ip-камера устанавливаем linphonec из пакетов (весьма желательно), либо пытаемся откомпилировать- но это дело очень муторное, много зависимостей.
2.1
Если нужен видеотелефон из ip-камеры:
2.1.1 Создаём videodevice:
modprobe v4l2loopback devices=4
2.1.2
Устанавливаем пакеты gstreamer1.0-libav, gstreamer1.0-plugins-base, gstreamer1.0-tools
2.1.3
Захватываем видео с камеры в videodevice с преобразованием в "сырое" видео:
> gst-launch-1.0 rtspsrc location=rtsp://user:password@192.168.2.30:554/Streaming/Channels/2 ! rtph264depay ! decodebin ! videorate ! video/x-raw, framerate=10/2 ! v4l2sink device=/dev/video2 &
(Для usb камеры захват будет другой, ищите в гугле)2.2
Запускаем linphenec с помощью специальной программы для управления - linphonecsh:
/usr/bin/linphonecsh init -C -c /etc/linphonec.cfg /usr/bin/linphonecsh register --host 10.10.10.10:5060 --username flat1 --password password1 /usr/bin/linphonecsh generic 'camera' #(активирует возможность видеотелефона) /usr/bin/linphonecsh generic 'soundcard use 0' #(явно указывает номер звуковой карты в системе) /usr/bin/linphonecsh generic 'webcam use 0' #(использует /dev/video2, номер проверяется командой /usr/bin/linphonecsh generic 'webcam list') /usr/bin/linphonecsh generic 'autoanswer enable' #(разрешить автоответ)
3. На смартфоне устанавливаем linphone либо другой SIP-клиент из play-маркета.
Указываем в настройках Сервер, порт, login: user1 и пароль: password2.
Если регистрация успешна - можно набрать номер 861 и поговорить
-