XuLizhao 's Notes

时光,漫步


  • 首页

  • 技术

  • 文档

  • 关于

  • 搜索
close

了解VOIP

时间: 2019-09-16   |   分类: tech     |   阅读: 1495 字 ~3分钟

VOIP简单说就是网络电话。

按:最近想找做个Java版的VOIP简单demo,发现官方居然没有个正经库。网上这方面的一些介绍文章也已经过时,特整理一份供大家参考。

名词解释

  • 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
  • 本文作者: xulizhao
  • 本文链接: https://xulizhao.com/blog/voip/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
#networking#
sipp压测工具介绍
mqtt轻量级发布订阅协议
  • 文章目录
  • 站点概览

xulz

时光,漫步

56 日志
3 分类
28 标签
  • 名词解释
  • SIP协议栈
    • Kamailio
    • RTPEngine
    • opensips
    • 其他
  • SIP/RTP开源实现
    • 安卓客户端
    • 测试库
    • 本地开发
    • 不再维护的库
  • 客户端
    • Yate SIP客户端
    • MicroSIP
    • Linphone
    • Mumble
  • 音视频处理
    • WebRTC
    • Jitsi
    • janus
  • 扩展阅读
© 2017 - 2023 XuLizhao 's Notes
Powered by - Hugo/ NexT
津ICP备17010344号-1
0%