相关文章推荐
含蓄的松球  ·  以SIP ...·  1 月前    · 
快乐的哑铃  ·  SIP协议解析与实现·  1 月前    · 
成熟的西装  ·  python 变量名 ...·  2 年前    · 
讲道义的闹钟  ·  Spring - ...·  2 年前    · 
瘦瘦的绿茶  ·  python ...·  2 年前    · 
  • SIP :Session Initiation Protocol/会话初始协议,互联网电话
  • RTP :Real Time Protocol/实时传输协议
  • RTCP: 每发完一批RTP包的时候,就发一个RTCP包,告诉接收方我刚才发了多少RTP包,多少个字节
  • PBX :程控交换机,集团电话
  • SIP: 基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。支持tcp和udp传输,通常使用UDP协议。
  • SDP:Session Description Protocol/会话描述协议,描述终端设备的特点。用途之一是会话建立时,需要媒体协商,双方才能确定对方的媒体能力以及交换媒体数据。
  • AOR:Address of Record, 设备无关的唯一地址, 格式为 SIP:user@domain
  • 3PCC: 3rd Party Call Control
  • SIP协议栈

    拨号地址格式: sip/sip:username@ip_address[:port]

    注: 端口为可选项,不提供使用默认端口5060。

    Kamailio

    Kamailio / github仓库 ,是流行的开源的SIP Proxy。和早期的另一分支OpenSips同样出自SER(SIP Express Router)。

    不同于PBX,Kamailio是个纯粹的SIP服务器,它可以作为Proxy、注册服务器、重定向服务器,也可作为简单的Presence服务器,其本身并不处理RTP,可能通过RTPProxy来处理RTP的NAT问题。

    Kamailio最新5.2版本,通常与RTPEngine组合,kamailio (995 ★) + rtpengine (311 ★)

    # Debian/Ubuntu 仓库: https://deb.kamailio.org/ wget -O- http://deb.kamailio.org/kamailiodebkey.gpg | sudo apt-key add - sudo apt update sudo apt install mysql-server sudo apt install kamailio kamailio-mysql-modules systemctl start kamailio # dump kamcmd ul.dump
    # 添加subscriber用户
    kamctl add alice secret
    kamctl restart
    

    kamctl 命令示例:

    – command ‘ul|alias’ - manage user location or aliases

    ul show [ ]………………. show in-RAM online users ul show –brief…………………… show in-RAM online users in short format ul rm [ ]……. delete user’s usrloc entries ul add …………… introduce a permanent usrloc entry ul add ….. introduce a temporary usrloc entry ul add .. introduce a temporary usrloc entry

    # 开启日志
    vi /etc/rsyslog.conf
    # 插入下面这行
    local0.* -/var/log/kamailio.log
    systemctl restart rsyslog.service 
    

    更多信息参考: kamailio-install-guide-deb

    RTPEngine

    rtpengine 通常作为媒体代理(media proxy)。

    rtpengine is a proxy for RTP traffic and other UDP based media traffic.

    opensips

    opensips ,同kamailio,用作SIP代理和控制信令。

    现在主要为3.0/2.4两个版本分支,常见组合:OpenSIPS做sip proxy,FreeSWITCH做SBC和媒体网关,媒体网关也可选Asterisk。

    opensips(619 ★) + rtp proxy ( 208 ★)

    RTP Proxy 是一个高性能而且开源的RTP流(RTP Stream)软件代理(Software Proxy). 其典型应用就是作为OpenSIP服务器的子模块, 为SIP Call 提供的Video/Audio RTP Stream的转发.

    Asterisk is an Open Source PBX and telephony toolkit. C实现,0.7k star。

    FreeSWITCH

    SIP/RTP开源实现

  • PJSIP: C语言实现的多媒体跨平台通讯库,支持SIP,RTP等多种协议
  • peers: Java实现
  • RTSP-Client-Server: Java的RTP实现
  • 安卓客户端

  • Lumicall : 支持证书
  • brew install yasm
    brew install ffmpeg
    

    两个Java实现

  • sipunit
  • simulap-plugin-sip
  • git clone https://github.com/BelledonneCommunications/linphone-desktop.git
    

    安装QT5 http://download.qt.io/official_releases/qt/5.9/

    不再维护的库

  • 官方的JMF
  • 半官方的JSIP/JAIN-SIP
  • doubango
  • Yate SIP客户端

    支持跨平台的开源客户端,下载

    MicroSIP

    MicroSIP ,Windows客户端的一种选择。

    Linphone

    Mumble

    Mumble,C++实现,2.7k star

    为游戏设计的语音聊天软件,基于Qt 和 Opus,包含client和server端。

    音视频处理

    WebRTC

    WebRTC是一个支持网页浏览器进行实时语音对话或视频对话的开源项目,它提供了包括音视频的采集、编解码、网络传输、显示等功能。 但需要配合其他开源server项目。

    Jitsi

    Jitsi 开源的多人视频会议系统,配合WebRTC。

    Java实现,2k star。

    janus

    WebRTC Server janus,C实现,2.9k star

  • Learning VoIP, RTP and SIP
  • 最全实时音视频开发要用到的开源工程汇总
  • pjsip.org
  • peers
  • RTSP-Client-Server
  •