一种流媒体文件实时切片系统及方法
【技术领域】
[0001]本发明涉及流媒体播放领域,尤其涉及一种流媒体文件实时切片系统及方法。
【背景技术】
[0002]随着网络技术的快速发展,各种视频网站层出不穷,无论是网络视频直播、点播还是时移,对流媒体播放的流畅性和实时性要求越来越高,相应的对流媒体切片的精准度和实时性要求也越来越高。因此,快速、准确的对流媒体进行切片和传输就成为了对视频网站的基本要求。
[0003]但是现有视频网站的网络视频服务器普遍存在如下问题:
[0004]1、并发性差。现有的网络视频服务器都是基于windows软件平台,播放流媒体文件时,每套节目都需要一个独立的线程进行处理,但是由于处理器(CPU)的限制,使得接收线程是一般是顺序进行,即使考虑到处理器可以支持多线程并发工作,能够并发工作的线程的数量也是有限制的。
[0005]2、延时和丢包严重。由于通过软件接收节目数据对于CPU来讲是顺序执行的,因此CPU只能在接收完一套节目之后才能接收其他的节目,当有上百套节目需要接收时,所有节目都接收一遍至少需要上百毫秒的时间,会导致直播节目播放延迟,以及节目数据包丢失冋题。
[0006]3、系统资源占用大。节目接收时,会在内存中缓存一定长度的节目数据(或者节目切片),一般来讲,标清节目的带宽一般为6-8Mbps,如果缓存2s时长的节目数据,则每套节目需要的缓存空间约为1.5MBytes (6Mbps*2s/8) - 2MBytes (8Mbps*2s/8),那么100套节目需要的缓存空间则为150MB-200MB,占用服务器大量的内存空间。另外,通过软件实现节目数据接收,需要一直占用大量的CPU资源,对CPU要求也是很高的。
【发明内容】
[0007]本发明的目的就是为了解决上述问题,提供一种流媒体文件实时切片系统及方法,它具有并发性好、处理切片响应快速、稳定性高等优点。
[0008]为了实现上述目的,本发明采用如下技术方案:
[0009]—种流媒体文件实时切片系统,包括:
[0010]内容服务器,通过网络与网络视频服务器进行连接,接收网络视频服务器发来的配置信息,根据配置信息进行相应的配置,使得输出的节目数据与网络端口号port —一对应;同时接收输入信号,对输入信号进行处理,并将处理得到的节目数据发送给PCIe板卡;
[0011]PCIe板卡,通过网络与所述内容服务器连接,接收内容服务器发来的节目数据,对接收到的节目数据进行实时切片,并将得到的节目切片数据存储在PCIe板卡的内存芯片中;
[0012]网络视频服务器,设有磁盘阵列,向内容服务器发送相应的配置信息,并通过PCIe板卡的PCIe接口从PCIe板卡中读取节目切片数据,判断节目切片数据是否有效,若有效,则存储节目切片数据到磁盘阵列,否则,不存储。
[0013]所述PCIe板卡包括FPGA芯片,FPGA芯片分别与FLASH芯片、内存芯片、网络接口和PCIe接口双向连接;其中,FPGA芯片对接收到节目数据进行实时切片,并将得到的切片数据存储在内存芯片中。
[0014]所述内存芯片是DRR3。
[0015]所述FPGA芯片内部设有PCIe缓存,用于缓存从内存芯片中读取的切片数据。
[0016]—种流媒体文件实时切片方法,包括如下步骤:
[0017]S1:网络视频服务器发送节目配置信息给内容服务器;
[0018]S2:内容服务器接收节目配置信息并根据节目配置信息进行配置,接收输入信号;
[0019]S3:内容服务器对输入信号进行解析,获得每套节目数据,将每套节目数据分别封装成网络数据包,并将每套节目的网络数据包分别通过不同的网络端口发送给PCIe板卡;
[0020]S4:PCIe板卡接收内容服务器发来的网络数据包并解析,获得每套节目数据;
[0021]S5:PCIe板卡对每套节目数据进行切片,并将节目切片数据保存在PCIe板卡的内存芯片中;
[0022]S6:网络视频服务器从PCIe板卡中读取节目的节目切片数据并存放到磁盘阵列中。
[0023]所述网络数据包是UDP数据包。
[0024]所述PCIe板卡使用FPGA芯片的系统时钟并行地对每套节目数据进行实时切片。
[0025]所述步骤S4之前还包括:
[0026]S4-0 =PCIe板卡从所述网络视频服务器或者PCIe板卡的FLASH芯片中获取切片配置信息,并根据切片配置信息进行相应配置。
[0027]所述步骤S6进一步为:
[0028]S6-1:网络视频服务器发送读数据命令给PCIe板卡;
[0029]S6-2 =PCIe板卡的FPGA芯片从内存芯片中读取节目切片数据,并存放到PCIe缓存中;
[0030]S6-3:网络视频服务器从PCIe板卡的PCIe缓存中读取节目切片数据,并判断节目切片数据是否为有效数据;若为有效数据,则执行步骤S6-4 ;否则,若不是有效数据,则提示错误信息;
[0031]S6-4:将节目切片数据存储到磁盘阵列中,转到步骤S6-2继续执行。
[0032]所述步骤S6进一步还包括:网络视频服务器判断是否接收到暂停切片命令,若收到暂停切片命令,则向PCIe板卡发送停止切片命令,PCIe板卡停止切片。
[0033]本发明的有益效果:
[0034]本发明采用PCIe板卡硬件,基于PCIe板卡的系统时钟,对多套单节目流进行并发的接收和切片,既解决了现有技术并发性差的缺点,也弥补了延时和丢包严重的缺陷。另夕卜,由于切片工作是通过PCIe板卡硬件实现,不需要网络视频服务器参与,释放网络视频服务器大量的内存空间和CPU资源,大大减少了网络视频服务器压力。
【附图说明】
[0035]图1为本发明所述流媒体文件实时切片系统结构示意图;
[0036]图2为本发明所述PCIe板卡结构示意图;
[0037]图3为本发明所述流媒体文件实时切片方法流程示意图;
[0038]图4为本发明网络视频服务器从PCIe板卡读取节目切片数据流程图;
[0039]图5为本发明节目切片数据在内存芯片中的存放示意图。
【具体实施方式】
[0040]下面结合附图与实施例对本发明作进一步说明。
[0041]如图1所示,一种流媒体文件实时切片系统,包括:
[0042]内容服务器,通过网络与网络视频服务器进行连接,接收网络视频服务器发来的配置信息,根据配置信息进行相应的配置,使得输出的单节目流与网络端口号(port) —一对应;同时接收输入信号,对输入信号进行处理,并将处理得到的单节目流发送给PCIe板卡;
[0043]PCIe板卡,通过网络与所述内容服务器连接,接收内容服务器发来的节目数据,对接收到的节目数据进行实时切片,并将得到的切片数据存储在内存芯片中;
[0044]网络视频服务器,设有磁盘阵列,向内容服务器发送相应的配置信息,并通过PCIe接口从PCIe板卡中读取节目切片数据,判断切片数据是否有效,若有效,则存储切片数据到磁盘阵列,否则,不存储。
[0045]所述内容服务器为具有ASI (Asynchronous Serial Interface,异步串行接口)接口的设备,接收ASI输入信号,对输入信号进行解复用,获得节目数据,并将节目数据封装成网络数据包,然后通过设定的网络端口号发送给PCIe板卡。
[0046]所述内容服务器为个人电脑,从内部磁盘读取节目数据,然后将节目数据封装成网络数据包,然后通过设定的网络端口号发送给PCIe板卡。所述内部磁盘中的节目数据是个人电脑从外部输入信号获取并预先存储在磁盘中的。
[0047]如图2所示,PCIe板卡包括FPGA芯片,FPGA芯片分别于FLASH芯片、内存芯片、网络接口和PCIe接口双向连接;其中,FPGA芯片对接收到节目数据进行实时切片,并将得到的切片数据存储在内存芯片中。
[0048]所述内存芯片是DRR3,用于存储节目切片数据。内存芯片是PCIe板卡的重要部件,采用DDR3,主要是因为DDR3读写速度非常快。DDR3芯片目前主要有DDR3-800、DDR3-1066、DDR3-1333、DDR3-1600等型号,以最小频率的DDR3-800为例,其