拼帧方法及设备与流程

文档序号:11215746阅读:920来源:国知局
拼帧方法及设备与流程

本发明涉及计算机领域,尤其涉及一种拼帧方法及设备。



背景技术:

目前市场上的帧分析库,只支持包含各自私有包头的h264码流的帧分析,不支持或部分支持不包含私有包头的h264国标(gb28181)码流的拼帧;不支持分块编码的老的摄像头的帧分析。现有的帧分析库利用厂商添加的私有头来解析数据包拼帧,这样的库只适用于各自厂商封装处理的码流,无法兼容并包。



技术实现要素:

本发明的一个目的是提供一种拼帧方法及设备,能够解决现有h264国标码流的拼帧方案无法兼容的问题。

根据本发明的一个方面,提供了一种拼帧方法,该方法包括:

接收基于h264国标打包的原始数据包;

判断所述原始数据包中是否有rtp头,

若有,去除所述原始数据包中的rtp头得到第一数据包,扫描所述第一数据包中的ps包头,去除所述第一数据包中的ps包头得到第二数据包,从所述第二数据包中取出es包头,根据所述es包头解析出帧长度、节目类型和帧类型;

去除所述第二数据包的h264帧头中的es包头得到第三数据包,根据第三数据包中的h264帧头记录帧数据的起始位置;

根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧。

进一步的,上述拼帧方法中,判断所述原始数据包中是否有rtp头之后,还包括:

若无,扫描所述原始数据包中的ps包头,去除所述原始数据包中的ps包头得到第四数据包,从所述第四数据包中取出es包头,根据所述es包头解析出帧长度、节目类型和帧类型;

去除所述第四数据包的h264帧头中的es包头得到第五数据包,根据第五数据包中的h264帧头记录帧数据的起始位置;

根据所述出帧长度、节目类型、帧类型和帧数据的起始位置,基于第五数据包拼凑出完整数据帧。

进一步的,上述拼帧方法中,所述节目类型包括音频和视频。

进一步的,上述拼帧方法中,所述帧类型包括i型和p型帧。

进一步的,上述拼帧方法中,根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧,包括:

判断第三数据包中的数据是否足够解析出节目数据的总长度,

若是,将解析出的节目数据的总长度记录为等待数据长度,判断第三数据包中的节目数据的长度是否大于所述等待数据长度,

若是,根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧。

根据本发明的另一方面,还提供了一种拼帧设备,该设备包括:

接收装置,用于接收基于h264国标打包的原始数据包;

判断装置,用于判断所述原始数据包中是否有rtp头,若有,去除所述原始数据包中的rtp头得到第一数据包,扫描所述第一数据包中的ps包头,去除所述第一数据包中的ps包头得到第二数据包,从所述第二数据包中取出es包头,根据所述es包头解析出帧长度、节目类型和帧类型;去除所述第二数据包的h264帧头中的es包头得到第三数据包,根据第三数据包中的h264帧头记录帧数据的起始位置;根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧。

进一步的,上述拼帧设备中,所述判断装置,还用于判断所述原始数据包中是否有rtp头之后,若无,扫描所述原始数据包中的ps包头,去除所述原始数据包中的ps包头得到第四数据包,从所述第四数据包中取出es包头,根据所述es包头解析出帧长度、节目类型和帧类型;去除所述第四数据包的h264帧头中的es包头得到第五数据包,根据第五数据包中的h264帧头记录帧数据的起始位置;根据所述出帧长度、节目类型、帧类型和帧数据的起始位置,基于第五数据包拼凑出完整数据帧。

进一步的,上述拼帧设备中,所述节目类型包括音频和视频。

进一步的,上述拼帧设备中,所述帧类型包括i型和p型帧。

进一步的,上述拼帧设备中,所述判断装置,还用于判断第三数据包中的数据是否足够解析出节目数据的总长度,若是,将解析出的节目数据的总长度记录为等待数据长度,判断第三数据包中的节目数据的长度是否大于所述等待数据长度,若是,根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧。

根据本发明的另一面,还提供一种基于计算的设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

接收基于h264国标打包的原始数据包;

判断所述原始数据包中是否有rtp头,

若有,去除所述原始数据包中的rtp头得到第一数据包,扫描所述第一数据包中的ps包头

若有,去除所述第一数据包中的ps包头得到第二数据包,从所述第二数据包中取出es包头,根据所述es包头解析出帧长度、节目类型和帧类型;

去除所述第二数据包的h264帧头中的es包头得到第三数据包,根据第三数据包中的h264帧头记录帧数据的起始位置;

根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧。

与现有技术相比,本发明直接忽略这些私有头,完全按照国标h264的打包标准去逆向分析码流,以实现分析处理所有遵循国标h264标准的摄像头码流数据包的拼帧。本发明可应用于分布式显像系统与基于h264国标的安防监控平台的对接项目,应用本发明可兼容处理处置各个不同厂商的网络摄像机码流,实现对含有不同厂商私有包头的h264国标码流数据包的拼帧,包括rtp流数据包的拼帧、ps流数据包的拼帧、es流数据包的拼帧、比较老摄像机分块编码摄像机的拼帧和音视频混合传输的上述码流的的拼帧。在此,比较老摄像机分块编码摄像机的拼帧是指老一代摄像机分块编码后传输的码流拼帧处理。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1示出本发明一实施例的拼帧方法的流程图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本发明作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

本发明提供一种拼帧方法,该方法包括:

步骤s1,接收基于h264国标打包的原始数据包;

步骤s2,判断所述原始数据包中是否有rtp头,

若有,步骤s3,去除所述原始数据包中的rtp头得到第一数据包,扫描所述第一数据包中的ps包头,在此,接收原始数据包去除rtp头,扫描ps包头信息将有用数据缓存;

步骤s4,去除所述第一数据包中的ps包头得到第二数据包,从所述第二数据包中取出es包头,根据所述es包头解析出帧长度、节目类型和帧类型;在此,取缓存的数据扫描es包头解析出帧长度,并剔除掉无用数据,记录节目类型和帧类型;

步骤s5,去除所述第二数据包的h264帧头中的es包头得到第三数据包,根据第三数据包中的h264帧头记录帧数据的起始位置;在此,扫描h264帧头,剔除es包头和无用数据,记录帧数据的起始位置;

步骤s6,根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧。在此,可以根据所述帧长度、节目类型、帧类型和帧数据的起始位置、第三数据的相关信息拼凑出完整的帧并拷贝后清除这一帧相关的缓存。

h264,同时也是mpeg-4第十部分,是由itu-t视频编码专家组(vceg)和iso/iec动态图像专家组(mpeg)联合组成的联合视频组(jvt,jointvideoteam)提出的高度压缩数字视频编解码器标准。

在此,本发明直接忽略这些私有头,完全按照国标h264的打包标准去逆向分析码流,以实现分析处理所有遵循国标h264标准的摄像头码流数据包的拼帧。本发明可应用于分布式显像系统与基于h264国标的安防监控平台的对接项目,应用本发明可兼容处理处置各个不同厂商的网络摄像机码流,实现对含有不同厂商私有包头的h264国标码流数据包的拼帧,包括rtp流数据包的拼帧、ps流数据包的拼帧、es流数据包的拼帧、比较老摄像机分块编码摄像机的拼帧和音视频混合传输的上述码流的的拼帧。在此,比较老摄像机分块编码摄像机的拼帧是指老一代摄像机分块编码后传输的码流拼帧处理。

本发明一实施例的拼帧方法中,步骤s2,判断所述原始数据包中是否有rtp头之后,还包括:

若无,步骤s7,扫描所述原始数据包中的ps包头,

步骤s8,去除所述原始数据包中的ps包头得到第四数据包,从所述第四数据包中取出es包头,根据所述es包头解析出帧长度、节目类型和帧类型;

步骤s9,去除所述第四数据包的h264帧头中的es包头得到第五数据包,根据第五数据包中的h264帧头记录帧数据的起始位置;

步骤s10,根据所述出帧长度、节目类型、帧类型和帧数据的起始位置,基于第五数据包拼凑出完整数据帧。

在此,本实施例可以实现ps流数据包的拼帧。

本发明一实施例的拼帧方法中,所述节目类型包括音频和视频。

本发明一实施例的拼帧方法中,所述帧类型包括i型和p型帧。在此,i型帧表示关键帧,可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)。p型帧表示的是这一帧跟之前的一个关键帧(或p帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,p帧没有完整画面数据,只有与前一帧的画面差别的数据)。

本发明一实施例的拼帧方法中,步骤s6,根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧,包括:

判断第三数据包中的数据是否足够解析出节目数据的总长度,

若是,将解析出的节目数据的总长度记录为等待数据长度,判断第三数据包中的节目数据的长度是否大于所述等待数据长度,

若是,根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧。

在此,本实施例可以精确地实现拼帧。

如图1所示,本发明一具体的应用实施例中包括如下步骤:

判断线程是否是启动状态,

若是,接收码流包拼包去rtp头得到纯ps流的处理流程;

读取ps缓存区有效码流数据;

记录是否等待数据,

若否,判断在ps缓存流中是否找到000001e(c)0,

若是,判断是否找到e0,

若找到,记录最近预输出帧为视频;若未找到,记录最近预输出帧为音频;

判断数据是否足够解析节目数据总长度,

若是,解析出该节目包的数据长度并记录为等待数据长度,解析有效帧数据长度;

判断ps数据长度是否大于等于记录的等待长度;

若是,从ps数据缓存区读取一帧数据(从记录的帧起始位置拷贝有效帧数据长度);

判断预输出帧是否为视频帧,

若是,输出视频帧,并记录预输出帧为未知;若否,输出音频帧(没有音频需求时跳到下一流程);

更改状态为非等待状态,等待长度改为0,有效帧数据长度记为0;

移掉ps数据缓存区的前面等待的有效数据长度的数据。

根据本发明的另一方面,还提供了一种拼帧设备,该设备包括:

接收装置,用于接收基于h264国标打包的原始数据包;

判断装置,用于判断所述原始数据包中是否有rtp头,若有,去除所述原始数据包中的rtp头得到第一数据包,扫描所述第一数据包中的ps包头,去除所述第一数据包中的ps包头得到第二数据包,从所述第二数据包中取出es包头,根据所述es包头解析出帧长度、节目类型和帧类型;去除所述第二数据包的h264帧头中的es包头得到第三数据包,根据第三数据包中的h264帧头记录帧数据的起始位置;根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧。

本发明一实施例的拼帧设备中,所述判断装置,还用于判断所述原始数据包中是否有rtp头之后,若无,扫描所述原始数据包中的ps包头,去除所述原始数据包中的ps包头得到第四数据包,从所述第四数据包中取出es包头,根据所述es包头解析出帧长度、节目类型和帧类型;去除所述第四数据包的h264帧头中的es包头得到第五数据包,根据第五数据包中的h264帧头记录帧数据的起始位置;根据所述出帧长度、节目类型、帧类型和帧数据的起始位置,基于第五数据包拼凑出完整数据帧。

本发明一实施例的拼帧设备中,所述节目类型包括音频和视频。

本发明一实施例的拼帧设备中,所述帧类型包括i型和p型帧。

本发明一实施例的拼帧设备中,所述判断装置,还用于判断第三数据包中的数据是否足够解析出节目数据的总长度,若是,将解析出的节目数据的总长度记录为等待数据长度,判断第三数据包中的节目数据的长度是否大于所述等待数据长度,若是,根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧。

根据本发明的另一面,还提供一种基于计算的设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

接收基于h264国标打包的原始数据包;

判断所述原始数据包中是否有rtp头,

若有,去除所述原始数据包中的rtp头得到第一数据包,扫描所述第一数据包中的ps包头

若有,去除所述第一数据包中的ps包头得到第二数据包,从所述第二数据包中取出es包头,根据所述es包头解析出帧长度、节目类型和帧类型;

去除所述第二数据包的h264帧头中的es包头得到第三数据包,根据第三数据包中的h264帧头记录帧数据的起始位置;

根据所述帧长度、节目类型、帧类型和帧数据的起始位置,基于所述第三数据包拼凑出完整数据帧。

本发明的拼帧设备和基于计算的设备各实施例的其它详细内容,具体可参见拼帧方法各实施例的对应部分,在此,不再赘述。

综上所述,本发明直接忽略这些私有头,完全按照国标h264的打包标准去逆向分析码流,以实现分析处理所有遵循国标h264标准的摄像头码流数据包的拼帧。本发明可应用于分布式显像系统与基于h264国标的安防监控平台的对接项目,应用本发明可兼容处理处置各个不同厂商的网络摄像机码流,实现对含有不同厂商私有包头的h264国标码流数据包的拼帧,包括rtp流数据包的拼帧、ps流数据包的拼帧、es流数据包的拼帧、比较老摄像机分块编码摄像机的拼帧和音视频混合传输的上述码流的的拼帧。在此,比较老摄像机分块编码摄像机的拼帧是指老一代摄像机分块编码后传输的码流拼帧处理。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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