面向并发服务的流媒体访问控制技术研究
UDP层检查其目的端口(如果其UDP套接口已连接,也可能检查源端口),将数据报放到相应套接口的接收队列。如果需要,就唤醒线程,由线程读取这个新接收的数据报。
3.2 线程的调度控制
线程间通过互斥锁,实现循环控制,即在线程处理视频数据前通过互斥变量、信号灯加锁,主要代码如下:
sem_wait();
pthread_mutex_lock();
……
thread_next_flag=true;//设置下一个可执行线程标志
pthread_mutex_unlock();
sem_post();
为了实现有效的服务,需要保证视频数据流的传输具有相对的数据完整性。接收端常根据数据的到达情况通过RTP/RTCP协议的信息反馈,为服务器提供数据包接收情况的质量统计反馈信息和QoS检测的资料;对于接收端而言,数据的存放需要占用一定数量的缓存,以承受网络带宽波动,并在传输中增加一定冗余信息来重建丢失或受损的数据,减少数据重传。
按照上述策略,在Linux 9.0系统下编程实现了数据的传输,服务器的配置赛扬为2.0GHz,网卡为10/100M自适应。接收端为赛扬1.0GHz,网卡同样为10/100M,通过交换机互联。服务器预创建5个传输服务线程,图中为两个接收端的数据接收延迟情况,均传送2000个数据包,从统计的结果图来看,除了起始端出现较大的延迟外,延迟抖动均没有过大的变化。但在没有使用本文提出的调度控制的情况下,常常出现时延的急剧变化,即某一数据流出现了较大时延。
因此,本文的并发传输调度达到了使用要求,效果比较令人满意。
图1 多线程数据传送调度控制测试结果
4 结论
由于视频数据传输需要较大的数据吞吐量,容易出现网络丢包和延迟较大的情况,以致造成接收端视频抖动和明显滞后。视频数据传输时出现频繁抖动,最终影响视频的服务质量。
本文基于流媒体技术和并发调度方式,提出了视频传输的综合方案,利用多线程技术实现多点视频数据并发传输;利用调度控制技术实现以延迟抖动最小的服务。此外结合其它多路复用技术,分布式结构以及组播等方式可支持更多的连接,减少不必要的重叠发送,减轻系统和网络的负担,提高服务器CPU资源和网络带宽的利用率,对改善视频数据传输的实时性、并发性,实现网络视频的多点实时传输、网络多点实时监控等方面具有特别重要的实际意义。
参 考 文 献
[1] 胡道元.《计算机网络(高级)》. 北京:清华大学出版社,1999.8 P107。
[2] 张斌 高波等编着《Linux网络编程》北京:清华大学出版社,2000.1.1 P2-8。
[3] 钟玉琢.向哲.沈洪《流媒体和视频服务器》.清华大学出版社.2003.6.1
[4] RFC 1889,RTP: A Transport Protocol for Real-Time Applications, 1996.1
[5] http://www-900.cn.ibm.com/developerworks/cn/linux/sdk/rt/part7/indexeng.htm
[6] RunTime: Synchronizing processes and threads http://www-900.ibm.com/developerWorks/cn/linux/sdk/rt/part5/index_eng.shtml
[7] http://www.douzhe.com/linux/13code/13067.htm
更多计算机与外设信息请关注:21ic计算机与外设频道
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码