一种地铁列车LCD屏的视频传输方法与流程

文档序号:11779054阅读:802来源:国知局
一种地铁列车LCD屏的视频传输方法与流程

本发明属于嵌入式计算机领域,涉及一种地铁列车lcd屏的视频传输方法。



背景技术:

随着城市的不断发展和人口数量持续增多,地铁作为缓解地面交通压力的最佳方式,运营模式逐渐由以车辆为中心转向以乘客为中心。pis(乘客信息系统)的出现正满足了这种新型运营模式的需求,它依靠现代科技成熟可靠的网络技术、多媒体技术和显示技术进行信息多样化的显示。通过在地铁空间里建立起动态乘客信息显示,让乘客即便身处地下空间,仍然能够时刻保持与外部世界的信息交流。pis为乘客提供了丰富的信息资源,已经成为地铁列车不可分割的一部分。

lcd屏作为pis的重要组成部分,可为乘客提供列车运行状态、站点信息以及媒体视频信息。目前,地铁列车lcd屏的显示方案多基于差分vga技术,依靠vga模拟信号进行视频传输,但是该方法不能满足高清要求,并且在长距离传输过程中抗干扰能力差。随着视频技术的发展以及乘客对信息需求的提高,对车载lcd屏显示效果的要求也越来越高,该方法已经不能满足要求。

随着网络技术的发展,流媒体技术作为基于以太网数字媒体技术显示方案的一种,在嵌入式领域逐步应用起来。地铁列车上采用流媒体方案,一般基于udp组播方式对所有lcd屏进行视频传输。地铁列车司机室车厢的结构如图1所示,由一个机箱、一个媒体控制器和一个触摸屏组成,机箱内含有视频服务器、语音报站控制器和交换机等三个设备。媒体控制器是一个具有数字显示输出功能的设备,触摸屏用于查看列车实时监控信息。地铁列车客室车厢结构如图2所示,由交换机a和交换机b组成,均连接了五个lcd屏和两个摄像头,交换机a还连接有一个dvr(硬盘录像机)。为提高客室车厢交换机的端口使用率,5个lcd屏通过以太网线级联悬挂在交换机的同一个端口上,根据lcd屏上拨码开关的数值进行区分。例如lcda1拨码开关数值为1,lcda2拨码开关数值为2,以此类推。各个车厢内的交换机互相连接构成一个局域环网,地铁列车整体的网络拓扑图如图3所示。

在一列地铁中,lcd屏、摄像头、dvr等设备数量都较多,使用时会占用一部分通信带宽,当在司机室需要通过触摸屏查看列车上的实时监控时,所有客室车厢内的摄像头都会向网络上发送数据。同时,视频服务器也在传送给lcd屏1080p高清视频数据,这些带宽消耗都会加重列车网络的负荷,容易造成网络瞬时拥塞而引发数据丢失。由于lcd屏采用级联的方式连接,当列车网络上发生数据丢失的现象时,如果最靠近交换机端口的lcd屏没有收到数据,则后面级联的屏也不会收到该数据。而流媒体技术采用的服务模型具有尽力而为的特点,并不能保证数据的可靠传输,不能进行网络拥塞控制,也不能重传丢失的数据,这会造成lcd屏出现马赛克和卡顿的问题,影响lcd屏的显示效果,降低乘客对地铁的乘坐体验。针对这种现状,本文提出一种新的lcd屏视频传输方法。

如图4所示,地铁列车视频服务器采用基于arm架构的数字媒体处理器,并且连接一个dvi-d接口、两片ddr3缓存、一块视频信号采集芯片以及一个百兆网交换机。

地铁列车内的所有交换机与各个节点设备共同构成一个环形局域网。交换机采用基于arm+fpga架构的处理器,如图5所示,连接两块以太网交换机处理芯片和一个硬件看门狗。节点设备通过交换机面板和背板上的网口连接到以太网交换机处理芯片。

地铁列车lcd屏作为视频客户端,通过lcd屏控制器来控制,如图6所示。lcd屏控制器采用基于arm架构的多核处理器作为控制核心,并且连接一片norflash存储器、一片ddr3缓存、一个视频解码器、一个百兆网交换机、一个拨码开关以及一个lcd液晶屏。

视频服务器通过dvi-d接口与列车司机室的媒体控制器连接。当地铁列车运行时,视频服务器通过dvi-d接口采集数字视频信号,在内部按照h264格式编码。视频数据发送前,按照rtp(实时传输协议)格式打包,组播方式发送到以太网。车厢内的交换机对视频数据进行分组转发,凡是加入到指定组播组里的lcd屏全都可以接收到视频数据。lcd屏与视频服务器建立rtsp(实时流传输协议)连接,创建缓冲区,将接收到的视频数据存放至缓冲区,之后将视频数据送入视频管道进行解码播放。



技术实现要素:

本发明要解决的技术问题是一种地铁列车lcd屏的视频传输方法,改善地铁列车lcd屏播放媒体视频信息时的显示效果,提高乘客的感官质量。

本发明的技术方案:

地铁列车lcd屏的视频传输方法,包括视频服务器模块、交换网络模块和视频客户端模块,如图7所示。

视频服务器模块分为三个线程:网络状态获取线程、原始视频数据处理线程和错误恢复线程。网络状态获取线程创建一个定时器,如果到达定时时间,则向交换网络模块请求获取网络丢包数以及端口流量,否则继续计时。根据交换网络模块反馈的具体数值,分析网络状态,动态调整视频流发送码率,以缓解网络压力,之后继续等待定时时间的到达。原始视频数据处理线程会创建一个用于发送原始视频数据的组播组1,通过dvi-d接口实时采集视频信号并编码。编码后检测帧数据大小是否超过以太网的mtu(最大传输单元),如果超过,则先进行拆包操作,然后进行rtp封包,如果没有超过,则直接进行rtp封包。封包结束后,将数据存放至本地缓存。根据帧的大小动态调整发包间隔,减缓对网络的瞬时冲击,按照发包间隔组播发送至以太网,然后继续采集视频信号。错误恢复线程会创建一个用于接收nak(没有应答)和错误重传的组播组2,nak内包含视频客户端请求重传数据的序列号。如果没有收到来自客户端的nak,则继续等待,如果收到,则解析出待重传的数据包序列号,在本地缓存中查找是否存在该序列号的数据。如果存在,则将该数据组播重传给所有视频客户端,之后继续等待接收nak,如果不存在,则返回继续等待下一个新的nak。

交换网络模块分为两个线程:数据分组转发线程、网络状态反馈线程。数据分组转发线程首先打开交换机处理芯片的所有端口,初始化端口状态、寄存器状态和mdio(管理数据输入输出)总线。之后等待数据进入交换网络模块,如果没有数据进入,则继续等待,如果有,交换机处理芯片根据mac地址表进行数据的分组转发,之后继续等待数据进入。网络状态反馈线程创建udp套接字,绑定端口号,等待来自视频服务器模块获取网络丢包数以及端口流量的请求。如果没有收到请求信息,则继续等待,如果收到,则读取寄存器获得当前的丢包数和端口流量,获取本地时间。按照网络状态报文的格式封装打包,将丢包数、端口流量、时间三个信息一起反馈给视频服务器模块,之后继续等待来自视频服务器模块的请求。网络状态报文的格式定义如下:前两个字节表示报文的包头;从第三个字节开始的两个字节表示报文的长度;从第五个字节开始的四个字节是时间戳,表示获取到丢包数和端口流量的时间,以毫秒为单位;从第九个字节开始的四个字节表示丢包数,从第十三个字节开始的四个字节表示端口流量,从第十七个字节开始的两个字节表示报文的包尾。

视频客户端模块分为两个线程:原始视频数据接收线程、错误反馈和恢复线程。原始视频数据接收线程启动后,读取拨码开关的数值,构建视频管道,开辟用于存放视频数据的缓冲区,创建udp套接字加入到组播组1中,与视频服务器模块建立rtsp连接,等待视频数据到达。接收到数据后,判断是否是视频数据,如果不是则继续等待,如果是视频数据,将其放置到缓冲区,并检测前后两次数据包序列号是否连续,如果不连续,则判定发生丢包,触发错误反馈和恢复线程进行相应操作,之后继续等待视频数据,如果连续,则直接将数据送入视频管道进行解码播放,之后继续等待视频数据。错误反馈和恢复线程启动后,创建udp套接字加入到组播组2中,并创建一个丢失队列用来记录丢失数据包的序列号,之后一直等待丢包事件的发生,如果没有丢包事件发生,则继续等待,如果被丢包事件触发,将最新丢失数据包的序列号更新至丢包序列中,并根据拨码开关的数值判断是否需要发送nak。如果需要,则向组播组2中发送nak,数据重新到达后按照序列号插入到缓冲区中,并删除丢失队列里对应的序列号,之后返回继续等待丢包事件;如果不需要,则直接等待重传数据的到达即可。

本发明的有益效果在于交换机可以向视频服务器反馈当前网络状态,使得视频服务器可及时控制视频数据发送的大小和速率,减缓网络压力,降低丢包现象。视频客户端检测到丢包发生后,每个交换机上只选取一个lcd屏进行nak反馈,减少列车主干网流量,视频服务器收到nak反馈后对数据进行重传恢复。交换机、视频服务器和视频客户端互相配合完成列车网络的拥塞控制和视频数据的错误恢复,从而为地铁列车lcd屏提供可靠的视频数据传输,改善屏幕的播放效果,提高乘客感官体验。

附图说明

图1是本发明地铁列车司机室车厢的结构图。

图2是本发明地铁列车客室车厢的结构图。

图3是本发明地铁列车的网络拓扑图。

图4是本发明视频服务器控制器硬件结构图。

图5是本发明交换机控制器硬件结构图。

图6是本发明lcd屏控制器硬件结构图。

图7是本发明的设计方法流程图。

图8是本发明视频服务器模块流程图。

图9是本发明交换网络模块流程图。

图10是本发明视频客户端模块流程图。

图11是本发明视频客户端模块的视频管道结构图。

具体实施方式

以下结合技术方案和附图,详细说明本发明的具体实施方式。

本发明共包含三个模块,视频服务器模块、交换网络模块以及视频客户端模块。视频服务器模块负责视频信号采集和编码输出,并具有错误恢复以及拥塞控制的功能;交换网络模块负责数据转发、监测流量和丢包信息,并向视频服务器模块反馈网络状态信息;视频客户端模块负责解码播放,当检测到数据的丢失后,根据网络拓扑决策是否发送nak,待重传数据到达后重新组帧,待收到一个完整帧之后解码播放。

(1)视频服务器模块

本模块分为三个线程:网络状态获取线程、原始视频数据处理线程和错误恢复线程,如图8所示。网络状态获取线程首先创建一个定时器,如果定时时间未到,继续计时,如果定时时间已到,向交换网络模块发出获取网络丢包数以及端口流量的请求,等待交换网络模块反馈网络状态报文。如果没有接收到该报文,则继续等待,如果接收到该报文,则对报文进行解析,获取当前的丢包数量,并根据前后两次报文中时间戳的差值和端口流量的差值,计算传输速率。如果检测到网络上存在丢包或者网络负荷过大的情况时,降低编码复杂度和发送码率,以缓解网络压力和丢包的发生,如果没有发生丢包或网络负荷过大的现象,说明当前网络状态正常,则将编码复杂度和发送码率恢复至正常水平。调整编码复杂度和发送码率后重置定时器,开始新一轮的定时。

原始视频数据处理线程会创建一个用于发送原始视频数据的组播组1,通过dvi-d接口实时采集视频信号,并按照h264格式编码。判断编码后帧数据的大小,如果超过了以太网的最大传输单元mtu,则需要计算拆包个数,执行拆包操作,之后进行rtp封包,如果没有超过,则可直接进行rtp封包。按照rtp格式封包时,会将数据包序列号,时间戳等信息封装进去,第一个数据包的序列号随机生成,之后序列号依次累加,封包结束后将数据存放至本地缓存。考虑到待发送的帧数据过大时,拆包个数必然增加,导致以太网流量会突然增大,可能会造成网络瞬时拥塞,所以视频服务器模块在将数据发送到以太网前,会根据拆包个数动态调整发包间隔,减缓对网络的瞬时冲击。将rtp格式的数据包按照发包间隔发送至组播组1,之后继续采集视频信号。

错误恢复线程会创建一个用于接收nak和错误重传的组播组2,设置用于接收数据的超时时间,检测时间是否超时。如果时间超时,则重置超时时间,继续检测时间是否超时,如果没有超时,则判断是否接收到数据;如果没有接收到任何数据,则继续判断时间是否超时,如果接收到数据,则判断数据是否是来自视频客户端的nak;如果不是,则重置定时器,继续检测时间是否超时,如果是,则解析nak数据包中包含的数据包序列号,在本地缓存中查找是否存在待重传序列号的数据;如果存在,说明该数据可恢复,按照组播的方式重传给所有的视频客户端,重置超时时间,继续检测时间是否超时,如果不存在,说明数据已经不能被恢复,则重置超时时间,继续检测时间是否超时。

(2)交换网络模块

如图9所示,交换网络模块分为两个线程:数据分组转发线程、网络状态反馈线程。数据分组转发线程首先打开两块以太网交换机处理芯片的所有端口,初始化端口状态和寄存器状态,打开mac地址学习功能,加载驱动,初始化mdio总线。如果没有数据进入交换网络模块,则继续等待,如果有数据进入交换网络模块需要转发时,交换机处理芯片解析该数据,记录数据的源mac地址和目的mac地址。进行mac地址学习,之后根据目的mac地址查询mac地址表。如果能在表中找到目的mac地址与出口的映射关系,则按照对应出口分组转发,之后继续等待数据进入,如果在mac地址表中没有找到对应出口,则通过除入口之外的所有其他端口进行转发,之后继续等待数据进入交换网络模块。

网络状态反馈线程创建udp套接字,绑定端口号,等待来自视频服务器模块的请求。如果没有来自视频服务器模块获取网络丢包数以及端口流量的请求,则继续等待,如果有,则使用smi(系统管理中断)接口往流量统计操作寄存器写入获取端口流量的命令,再读取流量统计操作寄存器的第一个字节获得32位数据流量的低16位,读取流量统计操作寄存器的第二个字节获得32位数据流量的高16位,通过计算获得端口流量。再使用smi接口直接从低位丢包计数器中读取32位丢包数的低16位,从高位丢包计数器中读取高16位,计算获得丢包数。获取交换机的本地时间,以微秒为单位进行转换,再按照网络状态报文的格式打包发送给视频服务器模块,之后继续等待来自视频服务器模块获取网络丢包数以及端口流量的请求。

(3)视频客户端模块

本模块分为两个线程:原始视频数据接收线程、错误反馈和恢复线程,如图10所示。原始视频数据接收线程与视频服务器模块建立rtsp连接,并加入到用于发送原始视频数据的组播组1中。读取设备拨码开关的数值并保存。开辟25个2m的缓冲区存放视频数据,防止因存放空间不够造成的数据丢失。基于gstreamer框架搭建视频管道,视频管道结构框图如图11所示,由apprsrc、h264parse、imxvpudec、imxg2dvideosink四个插件通过srcpad(输入衬垫)和sinkpad(输出衬垫)连接组成。appsrc作为源插件,用来接收完整的帧数据,之后将数据推送到h264parse插件,按照h264格式对数据进行解析,再通过imxvpudec插件解码,所得码流将色彩空间转换成rgb,以适应imxg2dvideosink播放插件的媒体能力,最终通过imxg2dvideosink插件将传输的视频流显示到lcd屏上。视频管道搭建成功后,等待接收来自组播组1的数据,当收到数据后,判断是否是视频数据,如果不是则继续等待接收数据,如果是则将其放置到缓冲区,并检测前后两次数据包的序列号是否连续。如果连续说明没有丢包,则继续判断是否已经收到了一帧完整数据,如果是则从缓冲区中取出该帧数据送入视频管道进行解码播放,之后继续等待接收数据,如果没有收到一帧完整数据,则返回继续等待接收数据;如果数据包序列号不连续,则判定发生丢包,触发错误反馈和恢复线程进行相应操作,之后继续等待接收数据。

错误反馈和恢复线程创建udp套接字,并加入用于接收nak和错误重传的组播组2。创建一个丢失队列,用于记录丢失数据包的序列号,之后一直等待丢包事件的触发。如果没有丢包事件发生,则继续等待,如果被丢包事件触发,则将最新丢失的数据包序列号更新至丢包序列中。根据拨码开关的数值判断是否是网络拓扑中最靠近交换机端口的lcd屏。如果是则将带有丢包序列号的nak反馈给视频服务器模块,然后等待重传数据的到达,如果不是则不需要发送nak反馈,直接等待重传数据到达即可。如果接收到重传数据,按照数据包的序列号将其插入到缓冲区中合适的位置上,并更新丢失队列,删除丢失队列中已经恢复的数据包的序列号,之后继续等待丢包事件的发生;如果没有接收到,则继续等待重传数据的到达。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1