《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 基于SCTP的嵌入式远程视频自适应传输系统

基于SCTP的嵌入式远程视频自适应传输系统

2008-07-18
作者:高群凯,黄 仁

    摘 要: 一种基于嵌入式Linux和S3C2410平台设计的远程视频自适应传输系统" title="传输系统">传输系统,该系统对视频的编码压缩和传输作了改进设计。通过对改进设计的模拟实验,证明了改进的设计能够在网络可用带宽不稳定的情况下保持视频接收端缓存数据的持续高占有率,有效地减少了视频播放的抖动。
    关键词: SCTP  嵌入式Linux  视频采集  自适应  NS2

 

    同TCP一样,流控制传输协议SCTP(Stream Control Transmission Protocol)[1]是一种可靠的、提供面向连接的、点到点数据传输协议,它继承了TCP强大的拥塞控制、数据包丢失发现等功能。但是,SCTP具有的一些独特的性质[2],如多宿(Multi-homing)、多流(Multi-streaming)、部分有序(Partial Ordering)和块(chunk)绑定等,因此比TCP更适合在WWW、MPEG4等业务中使用。在一般的视频采集系统中,由于不能根据传输网络的拥塞状况实时地调整编码压缩参数和发送速率,导致接收端的视频回放、缓冲数据停滞播放等,给用户带来不好的视觉感受。针对这个问题,本嵌入式远程视频采集传输系统采用SCTP传输协议[3],并且采取一些改进的设计策略,使得该系统可以根据网络拥塞状况自适应地实现编码压缩和传输,减少丢失包,从而达到客户端视频播放流畅的满意效果。
1 硬件平台和软件环境
    本嵌入式远程视频采集传输系统硬件平台选用北京恒丰锐科科技有限公司的HFRK2410开发板。该开发板是基于SAMSUNG S3C2410X高性能ARM处理器的嵌入式开发平台,稳定工作频率为202MHz, 带有64MB SDRAM 64和64 NAND FLASH存储器,一个USB主机接口,一个USB设备接口,CS8900以太网控制器以及其他设备和模块。
    SCTP是Linux 2.6 Kernel中新增加的一个传输层协议,因而必须使用2.6以后版本的Linux Kernel,同时在编译Linux Kernel时,要加入对SCTP模块的支持。
    Networking ---> Networking options ---> SCTP Configuration (EXPERIMENTAL) --->
    The SCTP Protocol (EXPERIMENTAL)
    [*] SCTP:Debug messages
    [*] SCTP:Debug object counts
    该系统采用USB摄像头获取实时视频,所以把USB 模块和Video4Linux模块的支持全部加入进来。
    Device Drivers ---> Multimedia devices ---> <*> Video For Linux
    Video For Linux ---> [*] V4L information in proc filesystem
    Device Drivers ---> USB support ---> USB support ---> <*> USB OV511 Camera support
    有了以上基本设置,就可以在此编译的内核中进行系统平台的开发和运行了。
2 系统自适应设计和实现
    本系统在运行中需要实时获知网络的阻塞情况才能自适应地进行编码压缩和传输,所以需要在应用程序的视频发送子模块获得关于当前网络的阻塞情况并把这些信息反馈给视频编码" title="视频编码">视频编码压缩模块,让它们根据当前网络阻塞信息作相应的调整,从而达到设计本系统的最终目的。因而在应用层获知当前网络阻塞情况是本系统设计和实现的主要目标。
    传输层的SCTP把当前网络阻塞情况隔离在应用层之下,按照要求修改SCTP协议代码并重编译加载是不错的办法,但是本系统采取了另一种方法,那就是通过跟踪应用层视频发送子模块时发送数据缓冲的变化情况来探测网络阻塞状况。
2.1 自适应视频发送实现
    视频发送子模块以一定的速率发送视频数据" title="视频数据">视频数据。当网络阻塞加重时,发送数据缓冲的待发送视频数据占的比例会增大;相反,当网络阻塞减轻时,发送数据缓冲的待发送视频数据占的比例也会跟着减小。表1给出了缓冲区在tk时刻和tk+1时刻的变化状况。

                        
    缓冲状况的变化公式如下:
     

    当时刻tk和时刻tk+1间隔足够小时,式(1)可以写成:
   


    变化式(2):
   
   

     

(其中β为正常参数,且0≤β≤1)
     

则式(5)可简化并插入调整幅度参数A(A为正整数):
   

 分析式(7)知,当α为正,即缓冲占用比率增大时,表示由于网络阻塞加重,则减小,输入量将减少;当α为负,即缓冲占用比率减小时,表示由于网络阻塞减轻,则增大,输入量将增大。视频传输初始开始时, 视频发送子模块以设定的初始速率发送视频数据。其后视频发送子模块在固定的时间间隔内根据上面的算法进行网络负载判断,并计算相应的发送速率调整系数。当网络拥塞时,发送速率减小;当网络空闲时,发送速率增加。
2.2 自适应视频编码压缩实现
    Linux系统中的视频子系统Video4Linux为视频应用程序提供了一套统一的API,视频应用程序通过标准的系统调用即可操纵各种不同的视频捕获设备。Video4Linux向虚拟文件系统注册视频设备文件,应用程序通过操作视频设备文件实现对视频设备的访问。在视频采集模块中获取图像数据" title="图像数据">图像数据后,将对原始的图像数据进行压缩编码,以方便在网络中传输。XviD是一个开放源码的MPEG-4多媒体编码解码器,它是基于OpenDivX而编写的。XviD支持多种编码模式,具有量化(Quantization)方式和范围控制,运动侦测(Motion Search)和曲线平衡分配(Curve),动态关键帧距(I-frame interval),心理视觉亮度修正,演职员表选项,外部自定义控制,运动向量加速(Hinted Me)编码,画面优化解码等众多编码技术,对用户来说功能十分强大。在本系统视频编码压缩模块中,采用XviD编码解码器对原始图像数据进行MPEG-4视频编码。
    在评价远程视频系统时,人的主观视觉感受往往是最关键的。当观看实时传输视频图像时,最不可忍受的是视频停滞缓冲或回放,它会使观看效果非常糟糕。本系统中采用降低图像画面质量的代价来换取图像的流畅播放的设计。当网络阻塞严重时,如果仍然用保持不变的图像画面质量的编码率对原始图像数据进行MPEG-4视频编码,势必会导致相同播放时间的图像数据不能及时正确地传送到视频接收子模块,从而使客户端播放断断续续,给人以极差的主观感受。本系统的视频编码压缩模块将根据从视频发送子模块传来的当前网络的阻塞情况信息,实时调整编码率。当网络阻塞减轻时,适当提高编码率;当网络阻塞加重时,则适当降低编码率。
    编码率计算公式如下:
     

 

其中:γ为正常参数且0≤γ≤1,B为调整幅度参数且为正整数,α由式(6)定义。
    在视频编码压缩模块开始编码时,以初始编码率E1进行编码,在以后的运行过程中,跟随网络阻塞状况进行调整。当网络拥塞加重时,降低编码率Ek+1,以便在相同的网络传输数据量包含更多的视频图像内容;当网络转为空闲时,又将增加编码率Ek+1,以提高图像画面质量。另外考虑到在不同的应用中,对视频图像编码率有各自特别的要求,因而可以设定一个最高编码率ψ和最低编码率ω,则Ek+1依次由如下两式计算后得到:
   

2.3 自适应调整算法
    根据前述分析,在视频传输初始阶段,视频编码压缩模块以初始编码率E1进行编码,视频发送子模块以设定的初始速率发送视频数据。其后,视频发送子模块在固定的时间间隔内(如5s),根据上面的算法进行网络负载判断,并计算相应的调整系数α,再根据α情况对视频发送速率和视频编码率作相应调整。具体算法描述如下:
    (1)传输开始时,视频编码压缩模块以初始编码率E1进行编码,视频发送子模块以设定的初始速率发送视频数据,即E=E1,Sin=
    (2)计算调整系数α:
     

    (3)根据调整系数α对视频发送速率和视频编码率作相应调整。为了防止视频发送速率和视频编码率的反复细微变化,只对大于等于一定程度的α做调整计算,否则不更新:
     

    (4)编码率界限限制计算:
   

2.4 自适应算法仿真及结果分析
    本系统在实际实施前需要对其中所涉及算法的正确性、参数的有效性进行分析和合理选择。选用开源免费的网络模拟仿真软件NS2[4][5]进行系统仿真分析。需要说明的是,在模拟实验中,只对算法进行模拟实验而不是对整个系统进行仿真,因此并没有真正的采集图片及编码,而是采用包头携带不同的信息来表示不同的编码数据。
     网络拓扑结构如图1所示,节点0、1、2代表发送端,5、6、7代表接收端,3和4为路由器。3的队列长度为80,使用FIFO调度和尾部丢弃策略,设置4的队列长度无限大。节点0、1、2和3以及节点4和5、6、7之间的传输速率" title="传输速率">传输速率都为1.2Mb/s,延迟为100ms;节点3和节点4之间的传输速率为2.5Mb/s,延迟为200ms。系统模拟开始时,在0s时由节点0产生发往节点5的1Mb/s的MPEG-SCTP数据[5],随后在3s时由节点1和节点2产生发往节点6和节点7的0.8Mb/s的FTP-TCP数据[6]和CBR-UDP数据。而分别在28s、20s和20s时,节点0、1和2停止发送数据,结束模拟。

                  
    在第一次实验中,选择采用恒定传输速率=1.0Mb/s和编码率E1=420kb/s,每隔0.1s记录一次节点5的接收数据缓冲占有百分比。图2为接收节点缓冲数据占有率随时间变化分布图。
                         

    在第二次实验中,采用自适应传输速率和编码率,相关初始参数取值如下:
      


    每隔0.1s就对网络负载判断并根据情况进行自适应调整。在实验中每隔0.1s就记录一次节点0端编码率(由于视频发送速率和编码率按同一形式公式变化,所以记录一个就可以了)和节点5的接收数据缓冲占有百分比,如图3所示。

                        
    从图3中可以看到,在3s之前,由于网络存在足够可用带宽,负载小,编码率持续增大,直到设定的最高编码率450kb/s并保持了一段时间。在3s~20s的时间段,由于网络传输延时和另外两个节点开始发送数据,导致网络负载加大,MPEG-SCTP数据流与另外两条数据流进行带宽争用,MPEG的编码率上下波动并且整体趋势为逐步下降,直到达到设定的最低编码率350kb/s。在20s后,另外两条数据流关闭,网络负载减小,MPEG的编码率又持续上升,直到450kb/s,并保持。
    另外,对比两次实验中的接收节点5的缓冲数据占有率随时间变化分布图(图4)可以看到,恒定传输速率和编码率的实验中,节点5的缓冲数据占有率变化完全按照MPEG-SCTP数据流与另外两条数据流进行带宽争用的结果变化,这种情况很容易导致视频播放的不流畅。而在自适应传输速率和编码率的实验中,接收节点缓冲数据占有率除了与MPEG-SCTP数据流与另外两条数据流进行带宽争用的结果有关,还与节点0的编码率有关,其结果是虽然网络负载加大,分给MPEG-SCTP数据流的可用带宽减少,但是接收节点5的缓冲数据占有率反而有上升的趋势。这种情况会导致视频质量下降,但是不会出现播放的缓冲、停滞,相对而言,更能保证实时播放的可视效果。
                              

3 系统实现
    把按照本文第1节所述设置编译的新 Linux 2.6内核烧录到HFRK2410开发板中,安装好网眼3000数码摄像头,并确定其正常驱动后,就可以开始利用Linux系统中的视频子系统Video4Linux为视频程序应用提供一套统一的API,实现视频采集模块。获取图像数据后,在视频编码模块使用XviD库对原始图像数据进行压缩编码。另外从 http://sourceforge.net/上的开源工程中下载SCTP的最新开源代码KLSCTP,编译加载模块后就可以利用其提供的SCTP API接口实现系统的发送视频模块和视频接收模块。
    系统硬件平台框架图和模块划分见图5和图6。

                              
    基于SCTP的视频采集传输系统的设计及实现,基本利用的是免费和开源的资源,具有稳定可靠、开发容易、修改定制方便、成本低廉等特点,可扩展应用在远程监控系统、可视电话、工业控制等领域。同时,相对于传统的类似系统,本系统采用改良了的采集、编码、传输设计策略,能较好地适应带宽多变的网络,提高实时视频的视觉感受质量。但是另一方面,由于其采用的技术都是基于Linux或是开源代码,因而系统具体实现比较复杂,其中改进的算法也会产生相应的计算开销。但是随着Linux技术的普及和计算机运算速度的加快,这个问题将会解决。
参考文献
[1] STEWART R,XIE Q.RFC 2960:Stream control transmission protocol[S],2000.
[2] TIMOTHY A,GRIFFIN G,VIEIRA D.A comparison between two maintenance session protocols.Proceedings of the advanced industrial conference on telecommunications/Service assurance with partial and intermittent resources conference/ELearning on telecommunications workshop,2006.
[3] AHMED ABD EL AL,TAREK SAADAWI,MYUNG LEE.Supporting real-time video in sctp networks.10.1109/MIL-
COM,2006,302104.
[4] The Network Simulator-ns-2[EB/OL].http://www.isi.edu/nsnam/ns/.

[5] ADAMI D,CALLEGARI C,CECCARELLI D et al.Design,development and validation of an ns2 module for dynamic lsp rerouting.10.1109/CAMAD,2006.
[6] GOEL A,KRASIC C,LI K et al.Supporting low latency tcp-based media streams.In Proceedings of International Workshop on Quality of Service(IWQoS 2002),Florida,2002,5.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。