Handsfree ip-телефон

Вопросы и информация о скриптах для ioBroker
Antworten
andrey99986
professional
Beiträge: 198
Registriert: 24.08.2016, 11:12

Handsfree ip-телефон

Beitrag von andrey99986 » 23.10.2017, 11:11

Наверное у каждого бывали ситуации когда звоните домой, а телефон никто не слышит (не зарядили вовремя, либо не слышно).
Есть вариант организовать sip-телефон на базе linux-сервера (без GUI и монитора!), к которому подключен микрофон, динамик и если нужен видеотелефон то ip/usb-камера.
Инструкция (пишется по памяти, если что-то не хватает - спрашивайте, дополню):

1. Устанавливаем Asterisk на любой сервер с выходом в Интернет (не обязательно на ту же машину где будет ip-телефон). Подойдёт любая бесплатная версия, которую проще поставить из пакетов.
Допустим у нас 2 абонента:
- Мобильный абонент: user1/password1 с номером 860
- Стационарный абонент на сервере: flat1/password2 с номером 861.

1.1 В Asterisk настраиваем:
в файле extensions.conf в конце добавляем:

Code: Alles auswählen

[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:

Code: Alles auswählen

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:

Code: Alles auswählen

/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 и поговорить :)

Antworten