关键词不能为空

当前您在: 主页 > 英语 >

基于SIP协议的音视频的软件开发

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-17 11:17
tags:

-

2021年2月17日发(作者:delon)


基于


SIP


协议的音视频的软件开发

< p>


前言




VoIP


中,


我们知道


SI P


协议有很大的用处。


这里,


我们就针 对


SIP


协议,


来看看


SIP


软电话开发环境的建立都需要知道哪方面的知识。


那么首先我们来看


看这个开发平台的条件。要在


window s


或者


linux


平台下开发基于


SIP


软电话,


需要以下软件。

< p>


服务器端软件:



注册多个客户端到服务器上,可以进行通话测试



SIP


客户端软件:主要用于测试,可以对别人已经完成的客户端进行抓包,


以比对自己程序的发包数据



SIP< /p>


协议栈:


基于某个现成的


SIP


协议栈来开发会加快开发进度


RTP


栈:



输语言或者视频数据的协议栈



抓包测试工具:调试网络程序最有效的办法



以下介绍这些软件主要以开源软件为主





服务器端软件



1.


Asterisk



Linux


系统下开源的


IPPBX


,功能强大稳定,主要用

< p>
c


语言开


发。配置稍麻烦。



2.


Vocal



Linux


系统下开源的


SIP

服务器端。可以作为


IPPBX


也可以作为


运营系统。


很多


voip


虚拟 运营商都用这个作为自己的运营系统。


提供


BS


结构的


管理界面。



3. Y ATE


:跨平台


(Linux



Windows)


的开源


SIP


服务器端。在


windows


下安

< br>装非常简单。其他方面没有进行过测试。



4.


SER



Linux


平台下重量级的


SIP


服务器断。


功能 比较丰富,


也是很多


voip


虚拟运营 商的系统选择。不过据说配置比较麻烦,具体没有试过。



5. sipX



Linux


平台下的


SIP


服务器。这个好像不能作为客户端再次注册

到其他


SIP


服务器上。提供


BS


结构的管理界面。




SIP


客户端软件



1. Windows Messenger 5.1


:微软出的


SI P


客户端,操作方便。



2.


YATE


Client


:跨平台


(Linux



Windows)


的开源


SIP


客户端软件。安装方


便,功能简单。



3. xten

< br>:


windows


平台下的


SI P


软电话。功能齐全,使用方便。




SIP


协议栈



1. osip


:跨平台的开源


SIP


协议栈。用

< p>
c


语言实现,体积小。



2.


exosip


:对


osip


进行封装,使其方便


SIP


客户端软件开发。同样开源跨


平台。



3. sipXtackLib


:由


S IPfoundry


提供的开源跨平台的


SIP


协议栈,功能齐


全。


C++


开 发,已经被用于开发数个商业


SIP


终端。



RTP




1. JRTPLIB:


开源的跨平台


rtp


栈,用

< p>
C++


语言开发,使用方便。





抓包测试工具



1.


Wireshark



非常有名的开源跨平台网络抓包 工具,


以前叫做


Ethereal


。< /p>



内容:



SI P


是一个会话协议,很多大企业都在用,通信行业的一个标准


(


不过从个


人角度不喜欢这个协议格式,罗嗦

).


其业务逻辑比较,简单地来说如下:



User Agent Server ------------------REGISTER----------->


<----------401(407) Unauthorized--


----------REG(


带上用户口令


) ----------->


---------------200 OK 1 Bindings---


双方交互几次,注册成功。



因为


Sip


通信一般采用

< p>
UDP



所以有个保活的问题,

< br>一般每隔两三分钟再向


server


注册一下。


server


也可能每隔一两分钟向客户发


Un authorized


,让客户


再刷新一下登录。



登录成功后,某个客户端向另一个客户端发起呼叫,通过服务器中转命令。


简单来讲,这个和


IM


的原理是一样的 。对方同意接收呼叫后,把媒体端口通知




server


及对方。


到了这里,< /p>



IM


开发经验的人,

< br>自然就知道下一步怎么做


了:如果想


P2P


直连的话,就先穿透


NAT


打洞,否则就通过


Server


中转。



很明显,


SIP


会话和现有的


IM< /p>


类似,但效率或效果上来讲差的很多,比如


登录保活,

< p>


还是同名用户同时登录等等,都处理的不够好。不过

SIP


是电信协


议,


最初是用在< /p>


VOIP


和可视电话上,


环境比


IM


简单地多,


所以这个协议足够用

< p>
了,估计名字中的


S


也是因为这个原因。



sip


呼叫成功,建立连接之后,媒体传输< /p>


(


音视频


)


是通 过


RTP


协议进行的。


简单地说,


采集到声音和视频,


先按指定编码方面编码,


比如音频编码成


g711



视频编 码成


h263,


然后根据


RFC


相关协议加上包头用


UDP


向指定发送出去。


对方


收到后先解包,再解码,然后播放。



如果想了解


SIP


的详细工作流程 ,可以这样:



1


找一个外网的


sip


server


(


如果有经验,可以用


yate2


,或


Trixbox


等自

< br>己搭建


)


2


安装


x-lite (


很不错的


sip


软电话客户端


,

如果安装


eyeBeam


更好,带


视频


) 3


安装


ethereal< /p>



WinPcap (


抓包工具


)


然后,用


x-lite


拨打其他的客户端或


SIP

< p>
话机,用抓包工具抓出相关的数


据包,先看流程,然后再看包结构。



后面附上一个介绍


SIP

< br>的


PPT


,写的非常好,可能是台湾方面出品,以前收< /p>


集的。是个


.rar


文件,因为这里只能 上传图片,所以改名为


.jpg


再上传,下载

< br>后把


.jpg


去掉解压就可以了。



PPT


写的非常好,用心看,很快就能了解


SIP


的工作流程。



下一步,就是自己动手实现


SIP VOIP


系统了。



如果商用的话,


server


采用< /p>


Trixbox,


也可以仔细研究一下


Asterisk


。客


户端就用


x-l ite


好了。



做为程序员,


第一反应就是怎么样自己动手写一个客户端,


甚至服务器。



在开源产品众多,写一个并不难。



经过几天的调试,发现几个协议栈做的不错


:


1 SIP


协议栈:



a osip+exosip (


建立客户端及通信非常简单, 质量也好


)




b reSIProcate (


全面,有

server


端例子,综合调试方便


)



c


其他的还用过一个


pjsip


,不过它与音视频结合成一个库之后,


音频质


量不好。但是比较小巧,



听说台湾很



多嵌入设备采用。



2 RTP


协议栈


:


a


Linphone


采用的是


oRTP,


音视频部分采用的是


MediaStreamer2


b


JRtpLib



结合


emiplib


的音视频处理。

< br>


c ffmpeg,ffmpeg


本来是专门处理音视 频编解码的,不过也提供了



rtp,rtsp,


最近好象也增加了


rtmp


协议的支持。顺便一提,


MS2



emiplib

< p>
底层也采用了


ffmpeg


。只要和音视频打交道 ,并且质量很不错的产品,都离不


开它,比如


mplayer, ffdshow


。顺便


BS


一下


kmplayer


,上了


ffmpeg


黑名单。



这里面着重提到的是

< p>
jrtplib


,之前误解为它只是按


RTP


传输数据包,以前


写过的几个文章,


都是在


RTP


包之后,


自己再封装了一下,< /p>


当然,


做为自己用



音视频聊天程序,这样是没问题的。但用在


SIP


及其他


VOIP


产品上,要考虑互

< p>
通,就要严格搂


RTP


协议来执行了。

< p>


了解了几个开源的东西,下面自己动手建一个简单的

SIP


环境:



1



Linux


比较熟的人,




CentOS


上安装


Asterisk



客户端采用


Linphone



自己研究吧。



2


象我这样只要在


Linux


下用点


g++


的,如果想针对


VOIP


快速学习的话,


服务器安装

< br>yate2


,客户端随便拿哪个都行。



3


如果自己想定制


sip


server



干脆一步到位,


下载


reSIProcate




vc2005


编译,一次通过。运行时提示缺少几个


dll,google


一下很快都找到了,然后运


repro


,做为


server


先临时用着,反正是学习。



客户端呢 ,网上流行一个很不错的,名字叫


Youtoo,


下载,简单编 译后可以


做为一个语音的客户端使用。



然后,


PC


上安装几个虚拟机,一个运行

server


,一个运行


x-lite(

< br>做为一


个参考的标准


)



主要上运行我们自己写的客户端进行测试。


如果要调试


server



就是主机上运行


repro,


虚拟上分别运行两个


x-lite




环境搭建立好了,


下一 步


就开始调试。



根据这几天的实践,找出了一个最优的配置:



1 sip server


采用


Tri xbox


,如果对


Linux


很熟建议 直接用


Asterisk.


2


客户端如果直接使用,建议


ekiga.


顺便说一下几个客户端使用的感受:



1 linphone:


好象名气不小,不过,最新版


3.1.2


安装后启动就崩溃。我安


装的是普通 的


XP-SP3


,电脑公司特别版。一般软件运行没问题。如果 在这个平


台上都崩溃,真不知道说什么好。


< br>后来再试


3.1.1


,这个可以启动,运行能看到视频图 像。不过奇怪的是,与


视频电话连接上视频窗口反而隐藏起来。


结束通话,


又显示出来。


搞不懂它的视


频功能是做什么用的。另外显示本地视频只支持


QCIF




2


eyeBeam

< br>:名气更大,使用起来也不错,这个不错不包含视频功能。如果


启动了视频的话, 只显示第一帧图,摄像头怎么转它也不动。另外,主动连视频


电话时,

< br>不能启动视频功能。


视频电话呼叫它才能启动。


启动后,



Video


点一下又灰住,完全不能用 。



3


Wengo

< br>不错,


现在改名叫


Quate


了 ,


连接摄像头非常快,


本地预览也正常。


不过,解码有问题,看



到的是一堆绿色图块,不知道是它解 不了码,还是弄几


个颜色块在那边骗人玩。



4 yate


好象不支持视频,不过声音倒是不错。



5


回头再说


ekiga


,边续试用了上面几个软件,以为我用的视频电话硬件有


问题,但用


ekiga


连接后,双方的视频都正常。



上面是从视频效果角度出发来


评测的,如果不使用视频的话都差不多 。



搭建好环境,


测试通过,


熟悉协议之后,



就是自己做一个这样的平台了。



服< /p>


务器想都不用想,直接用


Tixbox


, 重头写不现实。



至于客户端,一般的程序架构应该如下:





协议部分:



主要处理


sip


的注册,呼叫,接收,挂机等功能,所有的协议都差不多,随

< p>
便选一个就行。





媒体传输,这部分比较复杂





1


音视频采集



2


音视频编码



3


音视频编码后组


RTP


4 RTP/RTCP


发送



5 RTP/RTCP


接收



6



RTP


解包还原成编码后的音视频

< p>


7


音视频解码



8


音视频播放


一般如果分配任务,


快速做一个客户端,


首先想到的就是找 一个开源,


编译


出来再修改。



不过,试了几个,极度痛苦,分别说一下。


1 Linphone:


这个产品只能算一般,不过用到的


lib


非常不错,


exosip+osip



sip


命令




务,


ortp+mediastreamer2


为流媒体服务。


不过,


编译真是麻烦,


别的不说,




medias treamer2


就用到了


ffmpeg,gsm,ortp,srtp,openssl,speex,


the ora


等,


稀里湖涂足足花了大半天时间把所有这些都编译好,


然后编译



时提


示几个链接出错。因为我看到网上几个文章说明是用


vc2005

轻松编译出来的,


我也用的


vc2005

< br>。估计用


mingw


会简单一些。不过,已经耗了近一天 的时间,


感觉不爽,


放弃。


估计是


linphone


估计搞的复杂,


好让< /p>


antisip


卖钱。


2


ekiga


这个需要


ptlib,< /p>


第一感觉这东西很麻烦,


不过编译时出奇的顺利

< br>(


关键是官


方提供的资料详


< /p>


细,网友写的文章也详细


)


。然后编译< /p>


opal


,也很顺利。


(


只是


占用机器比较厉害,


P4 2.6


的占


CPU


极严重。不过,用的机器是联想的超薄机< /p>


箱那种,不排除官方弄个很烂的


CPU


冒 充。因为换到另一个


P4


3G


,速度 快上两


三倍


)




其实,编译好


opal


,基本就可 以了,它带了很不错的例子,拨打电话


接听都不错。


-


-


-


-


-


-


-


-



本文更新与2021-02-17 11:17,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/661745.html

基于SIP协议的音视频的软件开发的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文