一种高效流媒体电影服务器的设计
为了改善上述设计的缺点,需重新设计服务器的服务程序结构。根据服务器在流媒体传输中所要完成的功能,可以看出,服务器在客户有连接请求时,解析连接请求和关闭连接请求是很短的过程,服务器的大部分时间都用于给每个客户发送RTP数据流包。发送RTP数据流包包括服务器把相应的媒体文件调入内存,打包发送,以及获得RTCP包的反馈。因此,可以设计一个单独的处理线程,专门用于给客户发送RTP的数据流包。
改进的流媒体服务器设计如图5所示,完成主要的功能通过两个线程来实现。
事件线程负责检测客户连接,以及客户发的RTCP包的到来。事件线程通过对TCP端口的检测,在有连接请求时建立可维护客户信息的RTSP会话,在每一个客户的RTSP会话的存活期内,事件线程不断的把向客户发送RTP包这一任务放入处理线程的队列,直到RTSP会话终止,事件线程再把关闭连接的任务放入队列。
事件线程把对不同客户的服务(发送RTP数据包)以任务的形式放入队列后,处理线程对对列中的任务依次进行处理,也就是说,处理线程根据客户的不同,不断的把相应的流媒体文件形成RTP包,依次发出,直到视频服务的终止。
可以看的出来,处理线程虽然对所有的客户提供服务,但是执行的任务始终是发送RTP数据流包,同时,该线程所访问的媒体文件被调入内存后,可以被同一线程的其它任务重复调用,这样的设计,不但减少了随着客户数增加而造成的系统频繁切换的资源损失,也减少了访问硬盘数据的次数,缩短了访问时间,也发挥了指令局部性效率提高的优点。设图5 改进后的处理流程计中,解析客户的连接请求也放入处理线程的队列中,在处理线程中进行处理,虽然解析连接的任务不同于大部分发送RTP包的任务,但是该任务消耗时间少,所以对对系统性能的影响并不大。
采用图5的设计方法,服务器还可以根据客户端反馈的RTCP包得知客户端的网络状况,采取一定的策略针对不同的客户网络质量进行RTP包发送任务的调度,对于带宽质量好的客户,事件线程可以多放一些RTP包到队列中;对于由于网络质量造成的即将超时的客户连接,服务器也可以通过任务调度的方式进行特殊处理,最大限度的提供不同质量的客户连接服务。
- 上一篇:代理服务器是如何工作的
- 下一篇:“无法浏览网页” 十招解决疑难杂症
- 京东不带https的页面被qutaobi劫持
现在京东网站大多数页面都是自动打开https,安全链接,比较好。但有的时候也会打开不...
- 微信使用知识介绍 微信段子分享
一起过帮大家整理了有关微信的相关知识,一起了解下吧!...
- 天猫积分有效期及用处介绍
经常网购的朋友们应该很清楚啦,天猫积分的获得一般是你在天猫商城里面购物的时候,等...
- 微信公众号怎么申请 流程方法介绍
虽说微信公众号已成为企业、商家必不可少的一项营销手段,但很多人对于如何创建公众号...
- 限时玩玩烧脑游戏有益大脑提高脑力
限时玩玩烧脑游戏有益大脑提高脑力 电子游戏的本质之一是“主动学习”,它...
- 做微商有没有技巧?朋友圈营销心得
做微商首先要学会玩朋友圈,熟识你的人多了,才能慢慢推广业务。一般搞笑类说说浏览量...