《网络视频流乱序分段解码方法.pdf》由会员分享,可在线阅读,更多相关《网络视频流乱序分段解码方法.pdf(8页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104202659A43申请公布日20141210CN104202659A21申请号201410471628X22申请日20140916H04N21/44201101H04N21/443201101H04N19/43620140171申请人国家计算机网络与信息安全管理中心地址100029北京市朝阳区裕民路甲3号申请人北京赛思信安技术有限公司72发明人包秀国周游袁庆升谢铭童晓民周康成唐剑琪邹学强74专利代理机构北京永创新实专利事务所11121代理人祗志洁54发明名称网络视频流乱序分段解码方法57摘要本发明提供了一种网络视频流乱序分段解码方法,涉及视频流处理技术领域。本方法首先从。
2、网络中捕获传输来的视频数据包,并为每个视频流建立一个缓存,将数据包按序存在对应的位置,当连续数据包达到指定大小时,进行视频解码。采用FFMPEG技术进行数据块解码,解码时修改相应的上下文,通过伪装的方式让FFMPEG继续解码工作。此外本发明采用具有多个加速单元的独立板卡进行解码,加速单元采用FFMPEG技术实现,从而可实现并行解码。无论网络视频流以何种顺序接收,本发明方法均能以数据块为单位将视频流拼接并进行最大程度解码,并可支持多数据流并发解码;本发明方法提高了视频流有效帧数的接收率和解码率。51INTCL权利要求书1页说明书4页附图2页19中华人民共和国国家知识产权局12发明专利申请权利要求。
3、书1页说明书4页附图2页10申请公布号CN104202659ACN104202659A1/1页21一种网络视频流乱序分段解码方法,其特征在于,包括两大步骤第一步,捕获网络传输来的视频数据包,包括如下过程步骤11捕获网络传输来的数据包,当数据包为视频数据时,执行步骤12,否则继续捕获数据包;步骤12判断该数据包是否属于一个新的SESSION的视频流数据,若是,为该新的SESSION建立缓存,并进入步骤13执行;否则,直接执行步骤13;步骤13根据数据包的位置信息将数据包存储到对应的缓存中;第二步,遍历视频缓存,当存在达到指定大小的数据块时,采用FFMPEG技术对该数据块进行解码;数据块为连续的数。
4、据包;采用FFMPEG技术对数据块进行解码时,根据数据块在视频流中所处的位置,找到相应的上下文并更新,之后继续解码。2根据权利要求1所述的网络视频流乱序分段解码方法,其特征在于,第二步中所述的采用FFMPEG技术对数据块进行解码,通过设置在独立板卡上加速单元实现;所述的板卡上设置有两个以上的加速单元,每个加速单元采用FFMPEG技术实现,用于音视频处理;板卡的外部接口为PCIE,插在支持PCIE插槽的计算机上;计算机与板卡之间实现DMA方式的数据传输,从计算机的缓存中读取待解码的数据块通过DMA方式传输给板卡上的加速单元,加速单元将解码后的结果数据通过DMA方式传回计算机。3根据权利要求2所述。
5、的网络视频流乱序分段解码方法,其特征在于,第二步中所述的板卡,其实现数据解码的方法是1在主机操作系统的用户态下设置有API库和管理工具,在主机操作系统的核心态下设置主机侧硬件驱动;在板卡系统的核心态下设置板卡侧硬件驱动,在板卡系统的用户态下设置板卡控制单元和加速单元;API库提供API函数,以控制板卡启停音视频加速处理;主机侧硬件驱动与板卡侧硬件驱动用于实现DMA数据传输方式;2上层应用程序调用API库提供的API函数,管理工具根据所调用的API函数向板卡控制单元发送音视频处理的命令,板卡控制单元接收到音视频处理的命令后,控制加速单元对音视频数据进行解码处理;要处理的音视频数据通过主机侧硬件驱。
6、动从主机缓存中读取,然后传送给板卡侧硬件驱动,板卡侧硬件驱动将要处理的音视频数据传送给加速单元,加速单元在将解码后的结果数据传送给板卡侧硬件驱动,板卡侧硬件驱动再传送给主机侧硬件驱动,最后由主机侧硬件驱动将处理后的结果数据写回内存。权利要求书CN104202659A1/4页3网络视频流乱序分段解码方法技术领域0001本发明涉及视频流处理技术领域,具体是一种基于网络视频流的无序分段解码方法。背景技术0002在网络视频流处理领域,传统的处理方案一般为根据视频流按序处理。实际运用中,由于P2P、分段下载以及UDP协议的特性,使得乱序的视频流存在。目前已有的处理方法只能跳过乱序的视频流,导致解码不完整。
7、,不能还原整个视频流。发明内容0003本发明的目的是为了最大程度地正确处理乱序的视频流,提出了一种网络视频流乱序分段解码方法。0004本发明提供的网络视频流乱序分段解码方法,包括两大步骤0005第一步,捕获网络传输来的视频数据包,具体包括如下子步骤0006步骤11捕获网络传输来的数据包,当数据包为视频数据时,执行步骤12,否则继续捕获数据包;0007步骤12判断该数据包是否属于一个新的SESSION的视频流数据,若是,为该新的SESSION建立缓存,并进入步骤13执行;否则,直接执行步骤13;0008步骤13根据数据包的位置信息将数据包存储到对应的缓存中;0009第二步,遍历视频缓存,当存在达。
8、到指定大小的数据块时,采用FFMPEG技术对该数据块进行解码。数据块是指连续的数据包。采用FFMPEG技术对数据块进行解码时,根据数据块在视频流中所处的位置,找到相应的上下文并更新,之后继续解码。0010本发明还实现对数据块的并行解码,提供了一种实现方式通过设置在独立板卡上加速单元对数据块进行解码;所述的板卡上设置有两个以上的加速单元,每个加速单元采用FFMPEG技术实现,用于音视频处理;板卡的外部接口为PCIE,插在支持PCIE插槽的计算机上;计算机与板卡之间实现DMA方式的数据传输,从计算机的缓存中读取待解码的数据块通过DMA方式传输给板卡上的加速单元,加速单元将解码后的结果数据通过DMA。
9、方式传回计算机。0011所述的板卡使用方法是00121在主机操作系统的用户态下设置有API库和管理工具,在主机操作系统的核心态下设置主机侧硬件驱动。在板卡系统的核心态下设置板卡侧硬件驱动,在板卡系统的用户态下设置板卡控制单元和加速单元。API库提供API函数,以控制板卡启停音视频加速处理。主机侧硬件驱动与板卡侧硬件驱动用于实现DMA数据传输方式。00132上层应用程序调用API库提供的API函数,管理工具根据所调用的API函数向板卡控制单元发送音视频处理的命令,板卡控制单元接收到音视频处理的命令后,控制加速单元对音视频数据进行解码处理。所述的要处理的音视频数据是通过主机侧硬件驱动从说明书CN1。
10、04202659A2/4页4主机缓存中读取,然后传送给板卡侧硬件驱动,板卡侧硬件驱动将要处理的音视频数据传送给加速单元,加速单元在将解码后的结果数据传送给板卡侧硬件驱动,板卡侧硬件驱动再传送给主机侧硬件驱动,最后由主机侧硬件驱动将处理后的结果数据写回内存。0014本发明的优点与积极效果在于无论网络视频流以何种顺序接收,本发明方法均能以数据块为单位将视频流拼接并进行最大程度解码;数据块大小可根据实际应用调整,并可支持多数据流并发解码;本发明方法提高了视频流有效帧数的接收率和解码率。附图说明0015图1是本发明的网络视频流乱序分段解码方法的步骤流程图;0016图2是本发明通过FFMPEG技术实现并。
11、发解码的结构示意图。具体实施方式0017下面将结合附图和实施例对本发明作进一步的详细说明。0018本发明提出的网络视频流乱序分段解码方法,是一种基于网络视频流的无序分段解码方法,通过本地缓存、分段处理等,最大程度地正确处理乱序的视频流。0019如图1所示,为本发明的无序分段解码方法的整体流程示意图,具体包括以下步骤0020步骤一、捕获网络传输来的视频数据包,并保存到缓存中。具体步骤一包括如下步骤11步骤13。0021步骤11、捕获网络传输来的数据包,对数据包进行分析,如该数据包为视频数据,则执行步骤12,否则继续捕获数据包。0022步骤12、分析该数据包,如该数据包属于一个新SESSION会话。
12、的视频流数据,则为该SESSION建立缓存空间,然后执行步骤13;否则,直接执行步骤13。0023步骤13、根据该数据包中包含的位置信息,将数据包保存至对应的缓存中。具体可根据数据包中偏移量OFFSET来确定数据包的位置。0024步骤二、采用FFMPEG技术对达到指定大小的连续数据包进行解码。0025遍历视频缓存中已保存的所有数据包,判断是否存在达到指定大小的数据块,数据块由连续数据包组成,若存在,则对该数据块进行解码处理;否则转步骤一继续捕获数据包。0026数据块的大小可以根据实际应用调整。0027对达到指定大小的数据块进行解码,解码采用FFMPEG技术实现。所述的FFMPEG是一个开源免费。
13、跨平台的视频和音频流方案,它包含了非常先进的音频/视频编解码库LIBAVCODEC,FFMPEG是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案,支持MPEG、DIVX、MPEG4、AC3、DV、FLV等40多种编码格式,AVI、MPEG、OGG、MATROSKA、ASF等90多种解码格式参考文献HTTP/WWWFFMPEGORG。本发明的解码处理由开源的FFMPEG移植而成,可实现目前所有FFMPEG所自带的音视频处理,并可随时升级。0028FFMPEG中解码支持流方式,数据是以块大小不定为单位依次送入解码引擎解码。视频流中的当前块,在解码过程中可能会参照到之前的数据,即参。
14、考帧。解码引擎记录当前流的信息,包括码流的当前位置,当前参考帧数据等等上下文环境。有数据块送入时,说明书CN104202659A3/4页5解码引擎根据上下文计算出数据块在码流中所处的位置,更新上下文后再进行解码。因此FFMPEG中必须按照顺序送入数据才能进行正确的解码,否则系统将引起异常。0029本发明实现对缓冲的乱序数据进行解码,并最大可能的还原该视频流。在原有FFMPEG基础上,在投入数据块至解码引擎前,根据该数据块在视频流中所处的位置,找到相应的上下文并更新,之后解码引擎再继续解码。对于每一块数据块,都需要修改FFMPEG中相应的上下文内容,通过伪装的方式让FFMPEG继续解码工作。让解。
15、码引擎认为该码流已经到了该位置,从而能顺利进行解码。对于一些特定的封装,例如FLV还需要通过特殊处理FLV头尾数据来解封装真正的数据内容。0030另外由于分段乱序式的解码,极有可能参考帧还没有进内存或已被刷新,因此专门设立了缓冲区存放被刷新出来的参考帧,在需要的时候切换进内存供参考。由于数据的不完整性,FFMPEG非常容易崩溃,本发明中针对常见格式的流数据经过大量测试,还加入了大量的检查及容错机制,最大程度上了保持了FFMPEG解码的鲁棒性。0031本发明采用加速单元对数据块进行解码。每个加速单元采用FFMPEG技术实现,用于音视频处理。因此,利用本发明方法可同时对多个数据块进行解码处理。00。
16、32所述的加速单元设置在独立的板卡上,加速单元有多个,以实现并行音频解码处理。板卡的外部接口为PCIE,可插在支持PCIE插槽的计算机上,板卡通过PCIE总线与计算机通讯。0033如图2所示,在计算机主机操作系统的用户态下设置有APIAPPLICATIONPROGRAMMINGINTERFACE,应用程序编程接口库1和管理工具2;在主机操作系统的核心态下设置DMADIRECTMEMORYACCESS,直接内存访问方式的主机侧硬件驱动3。在板卡系统的核心态下设置DMA方式的板卡侧硬件驱动4;在板卡系统的用户态下设置板卡控制单元5和加速单元6。加速单元6可以有多个,如图2所示的实施例中为3个。00。
17、34API库1用于提供API函数,实现板卡控制功能、状态检测功能、数据统计以及日志功能。板卡控制是指控制板卡进行音视频加速处理的启动或暂停或关闭。状态检测功能是指板卡的工作状态查询。数据统计是指通过板卡所完成的音视频处理的数据量,数据量是指音视频编解码流数及字节数。0035管理工具2根据所调用的API函数控制板卡完成音视频数据的处理。管理工具2向板卡控制单元5发送音视频处理的命令以及待处理音视频数据的地址信息,并从板卡控制单元5接受数据处理状态以及数据统计的信息。管理工具2与板卡控制单元5之间通过PCIE总线进行通讯。0036主机侧硬件驱动3与板卡侧硬件驱动4用于实现DMA数据传输方式。003。
18、7板卡控制单元5用于实现如下功能控制板卡、数据传输、加速单元控制以及数据统计等。控制板卡用于响应主机操作系统中管理工具2对板卡的控制,如启动板卡进行音视频加速处理或暂停板块音视频加速处理或关闭板块对音视频的加速处理。加速单元控制是指加载用于音视频编解码处理的加速单元6。数据统计是指各加速单元在进行音视频处理后统计自身处理的数据量音视频编解码流数及字节数,然后合并统计后返回给主机操作系统。0038主机的上层应用程序7调用API库1提供的API函数,管理工具2根据所调用的API函数控制板卡完成音视频数据的处理。管理工具2向板卡控制单元5发送音视频处理说明书CN104202659A4/4页6的命令,。
19、板卡控制单元5接收到该命令后,控制加速单元6对所要处理的音视频数据进行音视频解码处理。要处理的音视频数据是通过主机侧硬件驱动3从主机缓存中读取,然后通过DMA方式传送给板卡侧硬件驱动4,板卡侧硬件驱动4将要处理的音视频数据传送给加速单元6,加速单元6在将要处理的数据处理完毕后将处理后的结果数据传送给板卡侧硬件驱动4,板卡侧硬件驱动4再传送给主机侧硬件驱动3,最后由主机侧硬件驱动3将处理后的结果数据写回内存。0039本发明方法中由计算机主机负责数据采集及传输,板卡负责视频解码处理,从而大大提高了普通计算机的视频解码能力。并且板卡和主机之间采用DMA方式传输数据,整个音视频处理过程不占用CPU资源。
20、。板卡可采用多核处理器,例如64核的多核处理器,以提高多数据流并发解码的效率。0040采用本发明方法进行网络视频数据乱序分段解码,与背景技术中的现有的传统处理方案的对比效果如表1所示。对比采用了INTELXEON27G千兆网卡,在局域网内使用快车从同一个流媒体服务器中,分5段下载6个相同的视频流,每个视频流下载5次,解码后的帧数取平均值表示。0041表1本发明的网络视频数据乱序分段解码与传统处理方案的对比表0042视频1视频2视频3视频4视频5视频6实际帧数176517450245898438842345传统方案采集帧数245159015843283154传统方案解码率1396996本发明方案采集帧数145015468198709757162087本发明方案解码率8288817881890043从表1中可以看出,利用本发明方法,相比传统方案,对同一个视频,所采集的帧数远远大于传统方法,解码率也大大提高。说明书CN104202659A1/2页7图1说明书附图CN104202659A2/2页8图2说明书附图CN104202659A。