1、安装freeswitch
https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7
dong@ubuntu:~/freeswitch$ vi freeswitch_v1.8_install_centos7.2.sh
yum install -y http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm epel-release
yum install -y git alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel libdb4-devel e2fsprogs-devel erlang flite-devel g722_1-devel gcc-c++ gdbm-devel gnutls-devel ilbc2-devel ldns-devel libcodec2-devel libcurl-devel libedit-devel libidn-devel libjpeg-devel libmemcached-devel libogg-devel libsilk-devel libsndfile-devel libtheora-devel libtiff-devel libtool libuuid-devel libvorbis-devel libxml2-devel lua-devel lzo-devel mongo-c-driver-devel ncurses-devel net-snmp-devel openssl-devel opus-devel pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel python-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel wget which yasm zlib-devel libshout-devel libmpg123-devel lame-devel
yum remove cmake
cd /usr/local/src
wget https://cmake.org/files/v3.14/cmake-3.14.0.tar.gz
tar vzxf cmake-3.14.0.tar.gz
cd cmake-3.14.0
./configure
make
make install
cd /usr/local/src
yum install libatomic
git clone https://github.com/signalwire/libks.git
cd libks
cmake .
make
make install
cd /usr/local/src
git clone https://github.com/signalwire/signalwire-c.git
cd signalwire-c/
cmake .
make
make install
ln -sf /usr/local/lib64/pkgconfig/signalwire_client.pc /usr/lib64/pkgconfig/signalwire_client.pc
cd /usr/local/src/
if false;then
git clone https://github.com/signalwire/freeswitch.git freeswitch
cd freeswitch
./bootstrap.sh
else
wget http://files.freeswitch.org/releases/freeswitch/freeswitch-1.8.5.tar.gz
tar vzxf freeswitch-1.8.5.tar.gz
cd freeswitch-1.8.5
fi
./configure
make
make install
dong@ubuntu:~/freeswitch$ ./freeswitch_v1.8_install_centos7.2.sh
dong@ubuntu:~/freeswitch$ cd /usr/local/freeswitch/mod
已经有了mod_av.la 和 mod_av.so库了。
如果需要系统音频文件
make cd-sounds-install
make cd-moh-install
2、配置freeswitch
1) Change password
cd /usr/local/freeswitch/conf
vi vars.xml
Change: <X-PRE-PROCESS cmd="set" data="default_password=1"/> {!!set it to something different!!}
Save and close (<Esc> :wq!)
2) Delete IPv6
cd /usr/local/freeswitch/conf/sip_profiles
mv internal-ipv6.xml internal-ipv6.xml.removed {disables ipv6 support}
mv external-ipv6.xml external-ipv6.xml.removed {disables ipv6 support}
3) Configuring ext-rtp-ip
cd /usr/local/freeswitch/conf/sip_profiles/
vi internal.xml
<param name="ext-rtp-ip" value="182.61.xx.25"/>
<param name="ext-sip-ip" value="182.61.xx.25"/>
vi external.xml
<param name="ext-rtp-ip" value="182.61.xx.25"/>
<param name="ext-sip-ip" value="182.61.xx.25"/>
4)stun
<X-PRE-PROCESS cmd="stun-set" data="external_rtp_ip=stun:182.61.xx.25:3478"/>
<X-PRE-PROCESS cmd="stun-set" data="external_sip_ip=stun:182.61.xx.25:3478"/>
3、下载webrtc客户端sipml5(sipjs/jssip也类似)
https://github.com/DoubangoTelecom/sipml5
4、在sipml5根目录启动一个http服务
1)python -m SimpleHTTPServer 8000 &
2)访问http://192.168.18.130:8000/
3)进入Enjoy our live demo
4)填写sip账号信息和ws接入信息
5)拨号
5、stun穿透
sip终端拨不通webrtc或者webrtc拨sip终端很久才能拨通,一般是nat穿透问题,在webrtc端加个stun服务一般能解决
免费的stun,我验证过的就这三个能用,最好还是自己搭一个stun/turn/ice服务
[{url:'stun:stun.schlund.de'}]
[{url:'stun:stun.voipbuster.com'}]
[{url:'stun:stun.xten.com'}]
coturn和Stuntman比较好用
coturn
https://github.com/coturn/coturn
Stuntman
http://www.stunprotocol.org/
stuntman_centos7.2_install.sh
yum install boost yum install boost-devel yum install boost-doc wget http://www.stunprotocol.org/stunserver-1.2.7.tgz tar -zxvf stunserver-1.2.7.tgz make ./stuntestcode ./stunserver #./stunclient 182.61.xx.25 3478
除了在webrtc端添加stun服务来解决nat穿透问题,在freeswitch端配置应该也行,我还没验证。
6、参考设计
基于freeSWITCH的sip协议利用WebRTC 实现实时视频聊天
https://blog.csdn.net/graceup/article/details/79485976
end
https://blog.csdn.net/PKU1254/article/details/102546899
https://blog.csdn.net/qq_33959879/article/details/100132659
https://blog.csdn.net/weixin_42151614/article/details/82592095
https://www.jianshu.com/p/42aef8874ebe
https://blog.csdn.net/qq_29719097/article/details/101523874