一种多路TS视频流传输方法及其系统与流程

文档序号:12621962阅读:633来源:国知局
一种多路TS视频流传输方法及其系统与流程

本发明涉及数据传输技术领域,特别是涉及一种多路TS视频流传输方法及其系统。



背景技术:

随着三网融合的推进,越来越多的计算机网络技术在广播电视行业中被广泛应用,TS over IP技术是网络技术在广播电视系统中应用的代表,它将压缩后的TS视频流以IP单播、组播形式发送至网络中进行传输。

目前传输TS视频流的方式采用的是单路传输,该种传输方式在TS视频流数量较多的情况时传输效率较低。

因此,如何提供一种传输效率高的多路TS视频流传输方法及其系统是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种多路TS视频流传输方法及其系统,通过采用轮询机制,能够同时管理多路TS视频流的网络传输操作,提高TS视频流的传输效率。

为解决上述技术问题,本发明提供了一种多路TS视频流传输方法,包括:

步骤s101:将待传输的多路TS视频流分别存储于第一缓存的多个通道内;

步骤s102:采用轮询机制判断所述第一缓存的通道内是否存储有TS视频流,如果有,进入步骤s103;否则,继续判断下一通道;

步骤s103:从所述通道内读取所述TS视频流,并采用预设网络协议对所述TS视频流进行封包操作得到协议数据包;

步骤s104:将所述协议数据包以单播或组播的方式发送至网络内,发送成功后,返回步骤s102。

优选地,所述从所述通道内读取所述TS视频流之后还包括:

依据所述TS视频流实时生成FEC校验包;

将所述FEC校验包与所述协议数据包一起发送至网络内。

优选地,所述依据所述TS视频流实时生成FEC校验包的过程具体为:

分别读取FEC行缓存和FEC列缓存内预先存有的、上次操作生成的行列数据,并将行数据写入行输入缓存,将列数据写入列输入缓存内;

将所述TS视频流复制为两份,分别与所述行数据以及所述列数据进行异或操作,得到FEC行数据包以及FEC列数据包并分别对应存入所述FEC行缓存和所述FEC列缓存内;所述FEC行数据包以及所述FEC列数据包即为所述FEC校验包。

优选地,所述FEC行缓存为片内RAM,所述FEC列缓存为片外DDR2。

优选地,所述步骤s101的过程具体为:

将所述待传输的多路TS视频流分别转换为预设大小的数据流;

当同步字节0x47锁定后,将各路所述数据流分别存储至所述第一缓存的各个通道内。

优选地,所述预设网络协议具体为UDP协议或RTP协议。

为解决上述技术问题,本发明还提供了一种多路TS视频流传输系统,包括:

数据缓存模块,用于将待传输的多路TS视频流分别存储于第一缓存的多个通道内;

轮询判断模块,用于采用轮询机制判断所述第一缓存的通道内是否存储有TS视频流,如果有,触发协议包生成模块;否则,继续判断下一通道;

所述协议包生成模块,用于从所述通道内读取所述TS视频流,并采用预设网络协议对所述TS视频流进行封包操作得到协议数据包;

网络发送模块,用于将所述协议数据包以单播或组播的方式发送至网络内,并触发所述轮询判断模块继续判断下一通道。

优选地,还包括:

FEC校验包生成模块,用于依据所述TS视频流实时生成FEC校验包;

所述网络发送模块还用于将所述FEC校验包与所述协议数据包一起发送至网络内。

本发明提供了一种多路TS视频流传输方法及其系统,能够将多路TS视频流分别存储于缓存的多个通道内,并由轮询机制轮流检查各个通道内是否存储了TS视频流,若有,则将该TS视频流进行封包操作,并将生成的协议数据包发送至网络中。可见,本发明通过采用轮询机制,实现了同时管理多路TS视频流的网络传输操作,大大提高了TS视频流的传输效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种多路TS视频流传输方法的过程的流程图;

图2为本发明提供的一种多路TS视频流传输系统的结构示意图。

具体实施方式

本发明的核心是提供一种多路TS视频流传输方法及其系统,通过采用轮询机制,能够同时管理多路TS视频流的网络传输操作,提高TS视频流的传输效率。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种多路TS视频流传输方法,参见图1所示,图1为本发明提供的一种多路TS视频流传输方法的过程的流程图;该方法包括:

步骤s101:将待传输的多路TS视频流分别存储于第一缓存的多个通道内;

其中,这里的第一缓存具体为片内RAM。另外,这里的多路具体为8路。当然,本发明对以上均不作特别限定。

步骤s102:采用轮询机制判断第一缓存的通道内是否存储有TS视频流,如果有,进入步骤s103;否则,继续判断下一通道;

这里的轮询机制为一种处理流程,由CPU定时发出询问,依序询问每一个通道是否存储有TS视频流,有即进行后续服务处理,服务结束后再问下一个通道,接着不断周而复始。

步骤s103:从通道内读取TS视频流,并采用预设网络协议对TS视频流进行封包操作得到协议数据包;

具体的,这里的预设网络协议具体为UDP(User Datagram Protocol,用户数据报协议)协议或RTP(Real-time Transport Protocol,实时传输协议)协议。UDP协议是一种无连接的网络传输协议,该协议没有拥塞控制,网络上出现的拥塞不会使源主机的发送速率降低,符合实时视频的网络传输要求,因此适用于某些需要实时性要求高、错误较少的环境。

步骤s104:将协议数据包以单播或组播的方式发送至网络内,发送成功后,返回步骤s102。

其中,单播指的是主机之间“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。组播是主机之间“一对一组”的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。

为方便对本发明方案的理解,下面就本发明中的轮询机制的工作过程做具体介绍:

MUX_ST_IDLE:判断ts_buf_ready=‘0’,然后轮询各通道是否有TS视频流,当判断到某一路有TS视频流时,跳转到MUX_ST_PROC_CH。

MUX_ST_PROC_CH:从该路通道内的TS视频流中读出(7x188+8)字节的数据,并写入ts_page_ram第一缓存中。返回MUX_ST_IDLE,并将ts_buf_ready置1,告知后面的逻辑,待后面的逻辑给出ack_ts_buf_ready_i=1时将ts_buf_ready清零。

作为优选地,从通道内读取TS视频流之后还包括:

依据TS视频流实时生成FEC(Forward Error Correction,前向纠错)校验包;

将FEC校验包与协议数据包一起发送至网络内。

具体的,依据TS视频流实时生成FEC校验包的过程具体为:

分别读取FEC行缓存和FEC列缓存内预先存有的、上次操作生成的行列数据,并将行数据写入行输入缓存,将列数据写入列输入缓存内;

将TS视频流复制为两份,分别与行数据以及列数据进行异或操作,得到FEC行数据包以及FEC列数据包并分别对应存入FEC行缓存和FEC列缓存内;FEC行数据包以及FEC列数据包即为FEC校验包。

可以理解的是,通过增加FEC校验操作,能够提高TS视频流传输的稳定性,减少传输故障的出现。

作为优选地,这里的FEC行缓存为片内RAM,FEC列缓存为片外DDR2。

其中,步骤s101的过程具体为:

将待传输的多路TS视频流分别转换为预设大小的数据流;

当同步字节0x47锁定后,将各路数据流分别存储至第一缓存的各个通道内。

这里的预设大小可以为25M,当然,本发明对此不作限定。

另外,步骤s101的操作可由FPGA内部的异步FIFO模块进行。

为方便对本发明方案的理解,下面就本发明中协议数据包以及FEC校验包的生成及传输过程做简单介绍:

TX_ST_IDLE:初始状态,判断是否接收到了ready_buffer_in和fec_in_ready信号(判断ready_buffer_in以及fec_in_ready是否为1,若是,则表明接收到的上述信号),其中ready_buffer_in信号表示ts_page_ram第二缓存(从通道内读取出来的TS视频流存储于ts_page_ram内)中有数据;Fec_in_ready信号表示上次操作生成的行列数据已经从FEC行缓存和FEC列缓存内读出,并分别将其写入row fec in ram行输入缓存和col fec in ram列输入缓存内;

TX_RTP_PKT:开始计数,从ts_page_ram中读出数据,同时读取row_fec_in_ram以及col_fec_in_ram中的数据,将从ts_page_ram中读取的TS视频流数据分三路,一路直接进入pro_mpeg_frm_gen模块产生相应的UDP包或RTP包,并存入frame_buf第三缓存中。另外两路分别与row_fec_in_ram以及col_fec_in_ram中的行列数据进行异或后得到FEC行数据包以及FEC列数据包并分别对应写入row_fec_out_ramFEC行缓存以及col_fec_out_ramFEC列缓存中。当计数到指定的数值时,进入下一状态。

其中,若需要进行FEC校验操作,则进行后续操作,否则,读取第三缓存内的UDP包或RTP包发送至网络。

CHECK_RFEC:判断是否有需要传输的FEC行数据包,如果没有,进入CHECK_CFEC;若有,则进入RFEC_WAIT_PKT_BUF。

RFEC_WAIT_PKT_BUF:判断后面的buffer缓冲区是否有空间,若有,进入RFEC_RTP_PKT。

RFEC_RTP_PKT:读取row_fec_out_ram中的FEC行数据包,并送入pro_mpeg_frm_gen模块,产生row FEC包,写入frame_buf中,由后续逻辑读取frame_buf中的row FEC包发送至网络。进入CHECK_CFEC。

CHECK_CFEC:判断是否有需要传输的FEC列数据包,如果没有,进入WAIT_PKT_BUF;若有,则进入CFEC_WAIT_PKT_BUF。

CFEC_WAIT_PKT_BUF:判断后面的buffer缓冲区是否有空间,若有,进入CFEC_RTP_PKT。

CFEC_RTP_PKT:读取col_fec_out_ram中的FEC列数据包,并送入pro_mpeg_frm_gen模块,产生col FEC包,写入frame_buf中,由后续逻辑读取frame_buf中的col FEC包发送至网络。进入WAIT_PKT_BUF。

WAIT_PKT_BUF:判断后面的buffer缓冲区是否有空间,若有,回到初始状态。

本发明提供了一种多路TS视频流传输方法,能够将多路TS视频流分别存储于缓存的多个通道内,并由轮询机制轮流检查各个通道内是否存储了TS视频流,若有,则将该TS视频流进行封包操作,并将生成的协议数据包发送至网络中。可见,本发明通过采用轮询机制,实现了同时管理多路TS视频流的网络传输操作,大大提高了TS视频流的传输效率。

本发明还提供了一种多路TS视频流传输系统,参见图2所示,图2为本发明提供的一种多路TS视频流传输系统的结构示意图。该系统包括:

数据缓存模块11,用于将待传输的多路TS视频流分别存储于第一缓存的多个通道内;

轮询判断模块12,用于采用轮询机制判断第一缓存的通道内是否存储有TS视频流,如果有,触发协议包生成模块13;否则,继续判断下一通道;

协议包生成模块13,用于从通道内读取TS视频流,并采用预设网络协议对TS视频流进行封包操作得到协议数据包;

网络发送模块14,用于将协议数据包以单播或组播的方式发送至网络内,并触发轮询判断模块12继续判断下一通道。

作为优选地,该系统还包括:

FEC校验包生成模块,用于依据TS视频流实时生成FEC校验包;

网络发送模块14还用于将FEC校验包与协议数据包一起发送至网络内。

本发明提供了一种多路TS视频流传输系统,能够将多路TS视频流分别存储于缓存的多个通道内,并由轮询机制轮流检查各个通道内是否存储了TS视频流,若有,则将该TS视频流进行封包操作,并将生成的协议数据包发送至网络中。可见,本发明通过采用轮询机制,实现了同时管理多路TS视频流的网络传输操作,大大提高了TS视频流的传输效率。

需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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