本发明涉及数据传输技术,特别是涉及一种视频处理方法和装置。
背景技术:
在线视频播放对视频流的实时性要求较高,如果在视频数据流传输过程中网络波动,会导致部分视频帧数据丢失,而采用重新等待该丢失部分数据重传的方式,会影响用户对在线视频观看的实时性和观看质量。
目前,针对数据传输过程中数据丢失的处理方式包括针对音频通话voip(voiceoverinternetprotocol)的丢帧补偿方案,其是多次获取丢失的音频帧后重新传输通过进行二次编解码计算来进行补偿,然而音频码率较低且编解码对处理器的开销较小,因此对负载增加较少。而视频的码率和编解码计算复杂度很高,通常64核的服务器只能编码2路h265视频、16路h264视频,而在线视频播放频道数往往超过数万,通过二次编解码来进行补偿会导致服务器巨大的处理器开销。因此通常的处理方式是将该部分视频帧数据直接丢掉,直接丢失数据通常会带来以下两方面的问题。
第一,由于部分视频帧的丢失,会直接导致用户观看画面出现花屏;
第二,因为部分视频帧的丢失,用户端视频的播放速度比实际视频的播放进度要快,缓存的数据会提前播放完,因此用户端会卡顿并二次加载,造成二次缓冲甚至出错。
相关技术中,对于上述问题,尚无有效解决方案。
技术实现要素:
基于此,有必要提供一种减少视频帧丢失、提高视频显示效果的视频处理方法和装置。
一种视频处理方法,包括:
获取各视频帧分别对应进行编号的视频帧队列;
将所述视频帧队列进行传输,并检测所述视频帧队列是否存在丢帧;
若是,通过插入补偿帧对所述丢帧进行补偿;
将补偿后的所述视频帧队列发送到播放端。
一种视频处理装置,包括:
视频帧获取模块用于获取各视频帧分别对应进行编号的视频帧队列;
检测模块用于将所述视频帧队列进行传输,并检测所述视频帧队列是否存在丢帧;
补偿模块当所述视频帧队列存在丢帧时,通过插入补偿帧对所述丢帧进行补偿;
发送模块用于将补偿后的所述视频帧队列发送到播放端。
上述视频处理方法和装置,通过对各视频帧分别对应编号后进行传输,在将视频帧队列进行传输的过程中实现丢帧检测和补偿,从而实现在数据层检测丢帧和补偿,因此不用进行额外的编解码计算,丢帧补偿过程中不会增加服务器的负载;通过检测丢帧后插入补偿帧对丢帧进行补偿,保障了视频帧的总数不变,避免出现视频帧数量减少而在播放端播放时卡顿,保证播放端能够顺利观看。
附图说明
图1为一实施例中视频处理方法的系统架构图;
图2为一实施例中直播视频的架构图;
图3为一个实施例中服务器的内部示意图;
图4为一实施例所提供的视频处理方法的流程图;
图5为另一个实施例中所提供的视频处理方法的流程图;
图6为一个实施例中获得补偿帧的流程图;
图7为再一个实施例中所提供的视频处理方法的流程图;
图8为一个实施例中的视频处理装置的结构示意图;
图9为另一个实施例中的视频处理装置的结构示意图;
图10为一个实施例中补偿模块的结构示意图;
图11为再一个实施例中的视频处理装置的结构示意图;
图12和图13为一实施例中视频帧补偿前后在播放端播放的效果对比图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
本发明实施例所提供的视频处理方法可应用于图1所示的系统中,如图1所示,服务器200通过网络与终端100进行通信,终端100上安装并运行各种视频播放应用,终端100通过视频播放应用生成在线播放视频的关联请求并通过网络发送给服务器200。其中,终端100包括但不限于智能手机、平板电脑、个人数字助理(pda)、膝上型便携计算机以及台式电脑。服务器200响应终端100的播放请求,获取视频采集装置所采集的视频文件进行编码后传输给终端100。
服务器200可以是独立的物理服务器或者物理服务器集群。以直播视频为例,如图2所示,典型的直播视频的架构包括现场拍摄、视频编码、视频传输加速、播放端接入观看四个环节。通过拍摄装置300拍摄视频文件,视频文件经编码形成符合传输协议的视频帧。视频传输加速的内部网络节点包括一级缓存、二级缓存、oc(opticalcarrier)机房,一级缓存是指离编码端最近的idc(internetdataceter)机房,进行直播视频的第一级代理传输,二级缓存是指各大区域主要城市的dc(datacenter)或者大型的oc机房,oc机房是指离播放端最近的节点,进行达到播放端之前的lastkilometer(最后一公里加速)。图1所示系统的服务器200包括该视频直播架构中的一级缓存、二级缓存和oc机 房所包含服务器的其中之一或者其任意组合。
在一个实施例中,图1中的服务器200的内部结构如图3所示,服务器200包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,该服务器200的存储介质存储有操作系统、数据库和一种视频处理装置,数据库用于存储数据,如存储视频帧队列等。该服务器200的处理器用于提供计算和控制能力,支撑整个接入服务器200的运行。该服务器200的内存为存储介质中的视频处理装置的运行提供环境。该服务器200的网络接口用于与终端100通过网络连接通信,比如接收终端100发送的在线视频播放请求。
如图4所示,在一个实施例中,提供一种视频处理方法,该方法可应用于如图2所示的服务器200中,包括如下步骤:
步骤101,获取各视频帧分别对应进行编号的视频帧队列。各视频帧分别对应进行编号的视频帧队列,是指根据终端的在线视频播放请求而对相应采集视频进行编码,通过编码过程中进行协议扩展对各视频帧分别进行编号所得到的视频帧所组成的队列。对视频帧分别对应进行编号是指将编号与视频帧有序的关联对应,形成设定的规律,如根据视频帧产生的先后顺序通过数字序列号对每一视频帧进行编号,使得数字序列号与视频帧队列中的每一视频帧对应;或者如根据视频帧的先后顺序通过字母对每一视频帧进行编号,使得各字母分别与视频帧队列中的每一视频帧对应。
步骤103,将所述视频帧队列进行传输,并检测视频帧队列中是否存在丢帧。
由于视频帧队列中各视频帧是通过分别独立对应编号,可以在将视频帧队列进行传输的过程中,检测各帧的编号是否符合编码后视频帧队列中各视频帧的编号所设定的对应关系而判断视频帧是否存在丢帧。如根据视频帧的先后顺序通过数字序列号对每一视频帧进行编号得到的视频帧队列,可以通过判断数字序列号是否连续来判断是否存在丢帧,如根据视频帧的先后顺序通过字母对每一视频帧进行编号得到的视频帧队列,可以通过判断字母的排布是否仍保持原设定的规律来判断是否存在丢帧。
步骤105,若是,通过插入补偿帧对丢帧进行补偿。
用于替代视频帧队列中的丢帧的视频帧为补偿帧。当判断存在丢帧时,通 过将与丢帧数量相同的补偿帧插入到丢帧所在位置进行补偿,经补偿之后的视频帧队列与原视频帧队列将保持相同的长度,且未发生丢帧的其它视频帧在视频帧队列中的顺序不会发生改变。
步骤107,将补偿后的视频帧队列发送到播放端。
通过插入补偿帧在丢帧的位置,可以保障视频帧队列中视频帧的总数量不会改变,且不影响未丢失部分的视频帧的顺序,将经过补偿后的视频帧队列发送到播放端,播放时长不会改变。
本实施例所提供的视频处理方法,通过编码对视频帧单独对应进行编号后进行传输,在数据传输过程中对视频帧检测是否存在丢帧并补偿,从而在数据层即可实现丢帧检测和补偿,不用进行额外的编解码计算,不会增加服务器的负载,其次,通过检测丢帧后插入补偿帧对丢帧进行补偿,保障了视频帧的总数不变,避免出现视频帧数量减少而卡顿,播放端的播放速度超过在线视频产生的速度导致播放失败,保证播放端能够顺利观看和保证播放画面的质量。该视频处理方法适用于大量用户通过终端的各种视频播放应用请求观看在线视频中的丢帧处理,尤其是针对在线观看直播视频的应用,能够减少卡顿和二次加载,且不会增加服务器的负载。
在另一个实施例中,如图5所示,步骤101,获取各视频帧分别对应进行编号的视频帧队列的步骤包括:
步骤1012,获取根据视频帧产生的先后顺序对视频的每帧分别对应进行编号的视频帧所形成的视频帧队列;
步骤103,将所述视频帧队列进行传输,并检测视频帧队列是否存在丢帧的步骤包括:
步骤1031,将所述视频帧队列进行传输的过程中,检测视频帧的编号是否缺失或者错位;
步骤1032,若是,则确定缺失或者错位的编号所对应的视频帧为丢帧。
通过网络观看的在线播放视频通常是将拍摄形成的视频文件以流媒体数据(flv)通过网络进行传输。将视频文件转换成流媒体数据可通过编码器或者安 装有编码软件的计算机实现,编码是指用于创建、捕捉和编辑音视频多媒体数据以形成便于网络传输的流媒体格式的视频帧。按照flv传输协议通过对视频文件进行编码,在编码过程中通过协议扩展对每一视频帧增加视频协议头部,编码后每一视频帧包括视频协议头部(head)和标签(tag),标签为视频内容,视频协议头部以预设的规则分别进行编号形成标识,从而形成可以识别到每一个帧的视频帧队列。根据视频帧产生的先后顺序对视频的每帧分别对应进行编号是通过编码将需要传输的视频文件转换成可独立识别到各帧的视频帧队列以进行传输。
通过对视频帧的每一帧增加视频协议头部进行编号标识,可以通过检测每一帧的视频协议头部的编号以识别出每一帧在队列中是否缺失或者错位的情况。以根据视频帧的先后顺序对各视频帧通过数字序列号连续递增进行编号得到的视频帧队列为例,当数字序列号不连续或者某处不符合递增规律,则可以确定相应位置为丢帧部位并确认丢帧部位所对应的编号。如,进行编码后的视频帧队列中各帧头部正常情况的编号为“1、2、3、4、5...29、30...”,在视频帧传输过程中进行检测得到的视频帧队列的编号为“1、2、3、5...29、30...”,第4片帧缺失,因此可以确定存在丢帧,并确定第4片帧为丢帧。又如,进行编码后的视频帧队列中各帧头部正常情况的编号为“1、2、3、4、5...29、30...”,在视频帧传输过程中进行检测得到的视频帧队列的编号为“1、2、3、5...29、4、30...”,第4片帧错位,当播放端播放该视频帧队列时,播放到第29帧时第4帧才到达,第4帧不能继续使用,第4帧所在位置不符合预设的递增规律,可以确定存在丢帧,并确定第4片帧为丢帧。
进一步的,步骤105,通过插入补偿帧对丢帧进行补偿的步骤包括:
步骤1051,获取与丢帧相邻的视频帧作为补偿帧;
步骤1059,将补偿帧插入丢帧所在位置。
将与丢帧相邻的视频帧作为补偿帧,并将补偿帧插入到原丢帧所在位置形成补偿后的视频帧队列,可以保持原视频帧队列的长度。通常来说,相邻视频帧之间的信息差异较小,通过获取相邻视频帧作为补偿帧,将补偿帧插入相应 丢帧所在位置,生成补偿后的视频帧队列,并将所述补偿后的视频帧队列发送到播放端后,在播放时,按照视频帧的先后顺序播放到丢帧所在位置时相当于是将同一帧画面的播放时间延续一个视频帧播放的时间,因此观看时画面整体连贯流畅,不需要再等待重传而影响观看体验。
请参阅图6,提供了如何获取补偿帧一优选实施例,步骤1051,获取与丢帧相邻的视频帧作为补偿帧的步骤包括:
步骤1052,判断丢帧是否包括多个连续的视频帧;
步骤1053,当丢帧为一个或者多个分离的视频帧时,复制位于丢帧的前面且与丢帧相邻的视频帧作为补偿帧;
步骤1054,当丢帧包括两个或两个以上连续的视频帧时,分别复制与丢帧相邻且与丢帧数量相同的视频帧作为补偿帧。
当丢帧为一个或者多个分离的视频帧时,复制与丢帧相邻的视频帧作为补偿帧满足在前优先原则,即优先选取位于丢帧的前面且与丢帧相邻的视频帧进行复制作为补偿帧。分离的视频帧是指丢帧之间相互不连续。仍以根据视频帧的先后顺序通过数字序列号连续递增进行编号得到的视频帧队列为例,如,在视频帧传输过程中进行检测得到的视频帧队列的编号为“1、2、3、5...29、30...”,确定第4片帧为丢帧,根据在前优先原则复制与第4片帧相邻的且位于第4片帧前方的第3片帧并插入至第4片帧所在位置进行补偿,得到补偿后的视频帧队列为“1、2、3、3、5...29、30...”;再如,在视频帧传输过程中进行检测得到的视频帧队列的编号为“1、3、5...29、30...”,第2片帧和第4片帧缺失,确定第2片帧和第4片帧为丢帧,根据在前优先原则分别复制第1片帧和第3片帧分别插入第2片帧和第4片帧所在位置进行丢帧补偿,得到补偿后的视频帧队列为“1、1、3、3、5...29、30...”。
当丢帧包括两个或者两个以上连续的视频帧时,分别复制与丢帧相邻且与所述丢帧数量相同的视频帧作为补偿帧,其中选择与丢帧相邻的视频帧满足就近原则和在前优先原则,即优先选取分别位于丢帧前方和后方的相同数量的相邻视频帧进行复制作为补偿帧,如此,可确保复制与丢帧相邻的视频帧插入丢帧所在位置后所形成的补偿后的视频帧队列中,相同的视频帧最多连续出现两 次。如,在视频帧传输过程中进行检测得到的视频帧队列中各视频帧的编号依次为“1、2、3、6...29、30...”,确定第4片帧和第5片帧为丢帧,根据在前优先及就近原则分别复制在第4片帧前方的第3片帧,以及在第5片帧后方的第6片帧并分别插入第4片帧和第5片帧所在位置进行补偿,得到补偿后的视频帧队列为“1、2、3、3、6、6...29、30...”。再如,在视频帧传输过程中进行检测得到的视频帧队列中各视频帧的编号为“1、2、3、7、8...29、30...”,确定第4片帧、第5片帧及第6片帧为丢帧,根据在前优先及就近原则分别复制第2片帧、第3片帧、第7片帧作为补偿帧,得到补偿后的视频帧队列为“1、2、2、3、3、7、7、8...29、30...”。
通过判断丢帧的数量以及是否连续的情况,确定复制相邻视频帧作为补偿帧,能够最大程度上保证补偿后的视频帧队列发送到播放端播放时画面保持连续和流畅,视频内容播放时不会产生明显的跳跃性。
在再一个实施例中,请参阅图7,步骤101,获取视频编码后各视频帧分别对应进行编号的视频帧队列之前,还包括:
步骤1011,对视频的每帧分别加入对应的视频协议头部并对所述视频协议头部进行编号,生成视频帧队列。
可通过音视频数据接口获取音视频数据后进行编码,通过对视频进行编码将每帧分别加入对应的视频协议头部。优选的,该音视频数据为直播视频。其中,直播视频可以通过摄像装置在现场采集得到。
步骤107,将补偿后的视频帧队列发送到播放端之前,还包括:
步骤106,去掉视频帧队列中各帧的视频协议头部。
在将视频帧队列发送给播放端之前,通过去除掉视频协议头部便可得到原生的视频格式,播放端无需进行任何修改,用户也无需升级便能保证播放端的正常播放。
该视频处理方法可以结合其它减少丢帧的方法使用,如通过网络协议栈的优化,在丢包时仍然能够保障传输速度;以及智能路由探测技术,选择最优的 路由来避开丢包多的路径,通过在自定义协议层面区分视频帧,并在视频帧层面直接进行补偿,从而在通过其它减少丢帧的方法无法杜绝轻量级丢帧的情况下进一步进行丢帧补偿。在数据层进行补偿,不用进行额外的编解码,不会增加服务器的负载;通过复制相邻视频帧对丢帧进行插帧补偿,补偿后的视频帧队列发送到播放端播放时视频画面视觉和听觉相对直接丢帧都更加优化;丢帧补偿保障了视频帧的总数不变,保障了播放端的视频播放速度,对于在线网络视频,尤其是直播视频,由于直接丢帧出现视频帧数量减少会导致播放端的播放速度超过直播信号产生的速度而导致播放直接失败,通过以上视频处理方法可以保障直播视频的正常流畅播放。
如图8所示,在一个实施例中,提供了一种视频处理装置,包括视频帧获取模块20、检测模块22、补偿模块24及发送模块26。视频帧获取模块20用于获取各视频帧分别对应进行编号的视频帧队列。检测模块22用于将视频帧队列进行传输,并检测视频帧队列是否存在丢帧。补偿模块24用于当视频帧队列存在丢帧时,通过插入补偿帧对丢帧进行补偿。发送模块26用于将补偿后的视频帧队列发送到播放端。
在另一个实施例中,如图9所示,该视频帧获取模块20具体用于获取根据视频帧产生的先后顺序对视频的每帧分别对应进行编号的视频帧所形成的视频帧队列。检测模块22具体包括检测单元221和丢帧确定单元223。其中检测单元221用于将视频帧队列进行传输的过程中,检测视频帧的编号是否缺失或者错位;丢帧确定单元223用于当检测视频帧存在缺失或者错位时,确定缺失或者错位的编号所对应的视频帧为丢帧。
进一步的,补偿模块24包括补偿帧生成单元242和插帧单元248。补偿帧生成单元242用于获取与丢帧相邻的视频帧作为补偿帧,插帧单元248用于将补偿帧插入丢帧所在位置。
请参阅图10,在一个实施例中,该补偿帧生成单元242具体包括判断装置243、第一补偿帧生成装置244第二补偿帧生成装置245。判断装置243用于判断丢帧是否包括多个连续的视频帧。第一补偿帧生成装置244用于当丢帧为一个或者多个分离的视频帧时,复制位于丢帧的前面且与丢帧相邻的视频帧作为补偿帧。第二补偿帧生成装置245用于当丢帧包括两个或两个以上连续的视频帧时,分别复制与丢帧相邻且与丢帧数量相同的视频帧作为补偿帧。
再一个实施例中,请参阅图11,该视频处理装置还包括编码模块23和头部去除模块29。编码模块23用于对视频的每帧分别加入对应的视频协议头部并对视频协议头部进行编号,生成视频帧队列。头部去除模块29用于在将补偿后的视频帧队列发送到播放端之前去掉所述视频帧队列中各帧的视频协议头部。
该视频处理装置通过形成视频帧分别对应进行编号的视频帧队列,在自定义协议层面区分视频帧,并在将视频帧传输的数据层直接进行丢帧检测和补偿,从而在其它减少丢帧的方法无法杜绝丢帧的情况下实现完全的丢帧补偿。该视频处理装置运行于视频播放架构的视频传输加速节点中的服务器,在数据层进行补偿,不用进行额外的编解码,不会增加服务器的负载;通过复制相邻视频帧作为补偿帧对丢帧进行间隔插帧补偿,播放端的视觉和听觉相对直接丢帧更加优化,如图12和图13所示,分别为采用直接丢帧在播放端得到是视频播放画面及采用该视频处理方法进行丢帧补偿后在播放端得到的视频播放画面的对比图;丢帧补偿保障了视频帧的总数不变,保障播放端的视频播放速度,对于在线网络视频,尤其是直播视频,由于直接丢帧出现视频帧数量减少会导致播放端的播放速度超过直播信号产生的速度而导致播放直接失败,通过视频处理装置可以保障直播视频的正常流畅播放。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。 其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。