CN109391585B - 视频数据处理方法、装置、终端及计算机可读存储介质 - Google Patents
视频数据处理方法、装置、终端及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109391585B CN109391585B CN201710656353.0A CN201710656353A CN109391585B CN 109391585 B CN109391585 B CN 109391585B CN 201710656353 A CN201710656353 A CN 201710656353A CN 109391585 B CN109391585 B CN 109391585B
- Authority
- CN
- China
- Prior art keywords
- video data
- frame
- terminal
- server
- browser
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000000605 extraction Methods 0.000 claims abstract description 193
- 238000012545 processing Methods 0.000 claims abstract description 118
- 238000009877 rendering Methods 0.000 claims abstract description 110
- 238000000034 method Methods 0.000 claims abstract description 68
- 230000009467 reduction Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/764—Media network packet handling at the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明实施例提供了一种视频数据处理方法、装置、终端及计算机可读存储介质。该方法用于终端,包括:利用浏览器获得来自服务器的视频数据;确定预设抽帧条件是否满足;若为否,将所获得的视频数据作为待播放视频数据;若为是,对所获得的视频数据进行抽帧处理,将经抽帧处理后的视频数据作为待播放视频数据;通过浏览器调用终端的解码渲染模块,对待播放视频数据进行解码渲染,解码渲染模块是采用浏览器能够识别的语言实现的;在浏览器对应的浏览器页面中播放经解码渲染后的待播放视频数据。可见,本申请采用无插件方案实现了视频数据的流畅播放,这样可以给用户带来较好的使用体验。
Description
技术领域
本发明涉及安防技术领域,特别是涉及一种视频数据处理方法、装置、终端及计算机可读存储介质。
背景技术
一般而言,当用户想要通过自身持有的终端播放特定时间对应的视频数据时,可以在终端的浏览器与服务器之间建立Socket长连接。之后,服务器可以通过该Socket长连接,将用户需要播放的视频数据发送至终端。容易理解的是,终端通过该Socket长连接获得的是经编码后的视频数据,终端的浏览器会调用利用C语言实现的解码库对获得的视频数据进行解码渲染,这样,终端能够流畅地播放经解码渲染后的视频数据。
需要指出的是,上述方式中,为了实现视频数据的流畅播放,终端的浏览器中需要安装NPAPI或ActiveX插件。但是,随着浏览器技术的迅速发展,多种浏览器中已经禁用NPAPI和ActiveX插件了。因此,如何采用无插件方案,实现视频数据的流畅播放对于本领域技术人员而言是一个亟待解决的问题。
发明内容
本发明实施例的目的在于提供一种视频数据处理方法、装置、终端及机器可读存储介质,以采用无插件方案实现视频数据的流畅播放。
第一方面,本发明实施例提供了一种视频数据处理方法,应用于终端,所述方法包括:
利用浏览器获得来自服务器的视频数据,其中,所述视频数据是通过所述浏览器与所述服务器间预先构建的连接通道传输的;
确定预设抽帧条件是否满足;
若为否,将所获得的视频数据作为待播放视频数据;若为是,对所获得的视频数据进行抽帧处理,将经抽帧处理后的视频数据作为待播放视频数据;
通过所述浏览器调用所述终端的解码渲染模块,对所述待播放视频数据进行解码渲染,所述解码渲染模块是采用所述浏览器能够识别的语言实现的;
在所述浏览器对应的浏览器页面中播放经解码渲染后的待播放视频数据。
第二方面,本发明实施例提供了一种视频数据处理装置,应用于终端,所述装置包括:
获得模块,用于利用浏览器获得来自服务器的视频数据,其中,所述视频数据是通过所述浏览器与所述服务器间预先构建的连接通道传输的;
确定模块,用于确定预设抽帧条件是否满足;
第一处理模块,用于在所述确定模块的确定结果为否的情况下,将所获得的视频数据作为待播放视频数据;在所述确定模块的确定结果为是的情况下,对所获得的视频数据进行抽帧处理,将经抽帧处理后的视频数据作为待播放视频数据;
解码渲染模块,用于通过所述浏览器调用所述终端的解码渲染模块,对所述待播放视频数据进行解码渲染,所述解码渲染模块是采用所述浏览器能够识别的语言实现的;
播放模块,用于在所述浏览器对应的浏览器页面中播放经解码渲染后的待播放视频数据。
第三方面,本发明实施例提供了一种终端,包括:
存储器,用于存放计算机程序;
处理器,用于执行所述存储器上所存放的程序时,实现上述方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述方法步骤。
本方案中,只需保证终端支持特定的协议,例如websocket协议,终端就能够通过该浏览器获得来自服务器的视频数据。接下来,终端根据预设抽帧条件是否满足确定相应的待播放视频数据。之后,终端直接通过浏览器调用自身的、由浏览器能够识别的语言实现的解码渲染模块,即可对待播放视频数据进行解码渲染,并在浏览器对应的浏览器页面中播放待播放视频数据。可以看出,本方案中无需安装NPAPI或ActiveX插件,终端直接利用浏览器即可实现视频数据的成功播放。
另外,由于在预设抽帧条件满足,即确定出解码渲染模块的解码渲染能力不足以保证所获得的视频数据的流畅播放时,终端会对所获得的视频数据进行抽帧处理,并将经抽帧处理后的视频数据作为待播放视频数据。这样,终端在通过浏览器调用解码渲染模块后,解码渲染模块仅需要对待播放视频数据进行解码渲染,而不需要对终端所获得的视频数据中的每帧视频数据均进行解码渲染,因此,解码渲染模块的解码渲染能力足以保证待播放视频数据的流畅播放。
可见,本申请采用无插件方案实现了视频数据的流畅播放,这样可以给用户带来较好的使用体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的一种视频数据处理方法的流程图;
图2为本发明实施例所提供的终端的工作原理图;
图3为本发明实施例所提供的终端的又一工作原理图;
图4为本发明实施例所提供的一种视频数据处理装置的结构框图;
图5为本发明实施例所提供的一种终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术存在的问题,本发明实施例提供了一种视频数据处理方法、装置、终端及计算机可读存储介质。
下面首先对本发明实施例所提供的一种视频数据处理方法进行说明。
需要说明的是,本发明实施例所提供的一种视频数据处理方法应用于终端。具体地,该终端既可以为手机、平板电脑等移动终端,也可以为固定终端。
参见图1,图中示出了本发明实施例所提供的一种视频数据处理方法的流程图。如图1所示,该方法可以包括如下步骤:
S101,利用浏览器获得来自服务器的视频数据,其中,视频数据是通过浏览器与服务器间预先构建的连接通道传输的。
对于用户而言,若其想要通过自身持有的终端播放所需的视频数据,其可以先在该终端的浏览器与服务器之间构建连接通道。具体地,该终端可以为支持websocket协议的终端,这样,如图2、图3所示,该连接通道可以为websocket长连接。在该websocket长连接成功构建后,用户可以在该浏览器中输入该服务器的IP地址,并执行点击等指定操作,以通过该websocket长连接,向该服务器发送针对自身所需视频数据的视频数据获取请求。在接收到该视频数据获取请求后,该服务器会通过该websocket长连接,将相应的视频数据发送至该浏览器。这样,该终端就能够利用该浏览器获得来自该服务器的视频数据了。
S102,确定预设抽帧条件是否满足;若为否,执行S103;若为是,执行S104。
S103,将所获得的视频数据作为待播放视频数据。
S104,对所获得的视频数据进行抽帧处理,将经抽帧处理后的视频数据作为待播放视频数据。
需要说明的是,在确定预设抽帧条件是否满足时,可以着重考虑终端的解码渲染能力(即后续提到的终端的解码渲染模块的解码渲染能力)。可以理解的是,终端的解码渲染能力存在着两种可能的情况。
第一种情况,终端的解码渲染能力足以保证终端流畅地(即无卡顿、无延迟地)播放S101中获得的视频数据。那么,终端可以确定预设抽帧条件不满足,此时,终端直接将S101中获得的视频数据均作为待播放视频数据。
第二种情况,终端的解码渲染能力不足以保证终端流畅地播放S101中获得的视频数据。那么,终端可以确定预设抽帧条件满足,此时,终端可以先对S101中获得的视频数据进行抽帧处理,然后再将经抽帧处理后的视频数据作为待播放视频数据。容易看出,与第一种情况相比,待播放视频数据的帧数明显减少。
无论终端的解码渲染能力为以上两种情况中的哪一种,在确定出待播放视频数据后,终端均会执行后续的S105。
S105,通过浏览器调用终端的解码渲染模块,对待播放视频数据进行解码渲染,解码渲染模块是采用浏览器能够识别的语言实现的。
S106,在浏览器对应的浏览器页面中播放经解码渲染后的待播放视频数据。
可以理解的是,终端在S101中获得的视频数据可以是经H.264或者MPEG4等主流的编码算法编码后的视频数据,相应地,终端在通过浏览器调用解码渲染模块对待播放视频数据进行解码时利用的是与H.264或者MPEG4等编码算法对应的解码算法。当然,编码算法和解码算法的类型并不局限于此,具体可以根据实际情况来确定,在此不再一一赘述。
需要说明的是,终端的解码渲染模块具体可以是采用Javascript语言实现的。这样,终端能够通过浏览器迅速调用该解码渲染模块,以通过该解码渲染模块成功实现对待播放视频数据的解码渲染。之后,终端就能在相应浏览器页面中成功播放经解码渲染后的视频数据了。
本方案中,只需保证终端支持特定的协议,例如websocket协议,终端就能够通过该浏览器获得来自服务器的视频数据。接下来,终端根据预设抽帧条件是否满足确定相应的待播放视频数据。之后,终端直接通过浏览器调用自身的、由浏览器能够识别的语言实现的解码渲染模块,即可对待播放视频数据进行解码渲染,并在浏览器对应的浏览器页面中播放待播放视频数据。可以看出,本方案中无需安装NPAPI或ActiveX插件,终端直接利用浏览器即可实现视频数据的成功播放。
另外,由于在预设抽帧条件满足,即确定出解码渲染模块的解码渲染能力不足以保证所获得的视频数据的流畅播放时,终端会对所获得的视频数据进行抽帧处理,并将经抽帧处理后的视频数据作为待播放视频数据。这样,终端在通过浏览器调用解码渲染模块后,解码渲染模块仅需要对待播放视频数据进行解码渲染,而不需要对终端所获得的视频数据中的每帧视频数据均进行解码渲染,因此,解码渲染模块的解码渲染能力足以保证待播放视频数据的流畅播放。
可见,本申请采用无插件方案实现了视频数据的流畅播放,这样可以给用户带来较好的使用体验。
可选地,利用浏览器获得来自服务器的视频数据,可以包括:
在当前周期内,利用浏览器获得来自服务器的视频数据。
其中,每个周期的时长可以1秒、2秒或者5秒,当然,每个周期的时长的取值并不局限于此,具体可以根据实际情况来确定,在此不再一一赘述。
确定预设抽帧条件是否满足,可以包括:
确定自身是否存储有当前周期对应的抽帧参数;若为是,表明预设抽帧条件满足;若为否,表明预设抽帧条件不满足。
对所获得的视频数据进行抽帧处理,可以包括:
根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理。
需要说明的是,终端根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理的具体实现形式多样,为了布局清楚,后续进行举例介绍。
本实施例中,终端的解码渲染能力是否足以保证终端流畅地播放当前周期所获得的视频数据具体可以通过终端是否存储有当前周期对应的抽帧参数来进行表征。如果未存储有,可以认为终端的解码渲染能力足以保证终端流畅地播放当前周期所获得的视频数据,那么,预设抽帧条件不满足,因此,终端不会执行抽帧处理操作。如果存储有,可以认为终端的解码渲染能力不足以保证终端流畅地播放当前周期所获得的视频数据,那么,预设抽帧条件满足,因此,终端接下来会根据当前周期对应的抽帧参数,执行抽帧处理操作,以保证视频数据的流畅播放。
可以看出,本实施例中,判断预设抽帧条件是否满足的操作较为简单,便于实施,并且,视频数据的流畅播放也得到了较好地保证。
可选地,该方法还可以包括:
在对待播放视频数据进行解码渲染的同时,记录待播放视频数据中的每帧视频数据进行解码渲染所需的时长。
根据所记录的各时长,计算单位时间内所能够解码渲染的视频数据的总帧数,并判断总帧数是否小于等于目标数据;其中,目标数据是基于终端当前使用的视频帧率确定的。
具体地,该单位时间可以为1秒。
若总帧数小于等于目标数据,基于总帧数和视频帧率,计算下一周期对应的抽帧参数,存储计算出的下一周期对应的抽帧参数。
可以理解的是,视频帧率是用于测量显示帧数的度量,其单位为每秒显示帧数。具体地,终端当前使用的视频帧率可以是15、25、30或者其他数值。
需要说明的是,目标数据可以是终端当前使用的视频帧率和播放倍数的乘积。其中,终端当前使用的播放倍数可以是1、1.5、2或者其他数值。这样,基于总帧数和视频帧率,计算下一周期对应的抽帧参数,可以包括:
基于总帧数、视频帧率和播放倍数,计算下一周期对应的抽帧参数。
下面以一个例子对计算该总帧数的过程进行简要说明。
假设终端在当前周期(1秒)内总共解码渲染了X帧视频数据,其中,终端解码渲染第一帧视频数据所需的时长为T1(单位为ms),终端解码渲染第二帧视频数据所需的时长为T2(单位为ms),……,终端解码渲染第X帧视频数据所需的时长为TX(单位为ms),那么,终端可以利用下面的公式(1)计算当前周期内解码渲染任一帧视频数据所需的平均时长T。
T=(T1+T2+……+TX)/X (1)
在计算出T之后,终端可以利用下面的公式(2)计算自身在单位时间,即1秒内所能够解码渲染的视频数据的总帧数N。
N=1000/T (2)
在计算出总帧数N之后,终端可以将总帧数N与目标数据(即终端当前使用的视频帧率和播放倍数的乘积)进行比较。可以理解的是,总帧数N可以用于表征终端在当前周期内的解码渲染能力,目标数据可以用于表征为了保证所获得的视频数据的流畅播放,终端在当前周期内必须解码渲染的视频数据的帧数。
因此,如果经过比较,终端确定出总帧数N大于目标数据,这说明终端在当前周期内的解码渲染能力能够保证所获得的视频数据的流畅播放,此时,预设抽帧条件不满足,终端无需计算计算并存储下一周期对应的抽帧参数。在下一周期,由于终端内未存储有相应的抽帧参数,终端不会对获得的视频数据进行抽帧处理,而是将所获得的视频数据均作为待播放视频数据,并对待播放视频数据进行解码渲染。最终,终端能够流畅地播放待播放视频数据。
如果经过比较,终端确定出总帧数N小于等于目标数据,这说明终端在当前周期内的解码渲染能力无法保证所获得的视频数据的流畅播放,这时,终端需要计算并存储下一周期对应的抽帧参数。在下一周期,由于终端内存储有相应的抽帧参数,终端会对所获得的视频数据进行抽帧处理,将经抽帧处理后的视频数据作为待播放视频数据,并对待播放视频数据进行解码渲染。最终,终端也能够流畅地播放待播放视频数据。
可以看出,本实施例中,终端能够计算出下一周期对应的抽帧参数,这样,终端在下一周期可以根据该抽帧参数执行抽帧处理操作,以保证视频视频数据的流畅播放。
可选地,抽帧参数可以包括抽帧间隔数量;其中,
根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理,包括:
从当前周期内获得的第一个非关键帧视频数据开始,对所获得的视频数据中的非关键帧视频数据进行抽帧处理,其中,终端抽取的相邻两个非关键帧视频数据之间间隔的非关键帧视频数据的帧数为当前周期对应的抽帧间隔数量。
基于总帧数、视频帧率和播放倍数,计算下一周期对应的抽帧参数,包括:
计算视频帧率和播放倍数的乘积与总帧数的差值;
计算乘积与差值的比值,并对比值进行去尾取整,以得到第一取整结果;
将第一取整结果确定为下一周期对应的抽帧间隔数量;
存储计算出的下一周期对应的抽帧参数,包括:
在第一取整结果大于1的情况下,存储确定出的下一周期对应的抽帧间隔数量。
下面以一个具体的例子对本实施例的具体实施过程进行说明。
假设终端当前使用的视频帧率P为25,播放倍数Q为1,终端计算得到的总帧数N为21,很明显,总帧数N小于视频帧率P和播放倍数Q的乘积,因此,终端利用下面的公式(3)计算差值S。
S=P*Q-N (3)
那么,S=25*1-21=4。
在计算出差值S之后,终端可以利用下面的公式(4)计算比值Y。
Y=P*Q/S (4)
那么,Y=25*1/4=6.25。
接下来,终端会对比值Y,即6.25进行去尾取整,以得到第一取整结果M。容易看出,M为6,故终端会将6确定为下一周期对应的抽帧间隔数量。
之后,终端会将第一取整结果M与1进行比较。很明显,M大于1,这说明视频帧率P和播放倍数Q的乘积与总帧数N的差异并不是非常大,即视频播放过程中的延迟和卡顿现象并不会特别明显,这时,终端可以将下一周期对应的抽帧间隔数量,即6存储起来。
对于终端而言,在下一周期,当其获得任一帧,例如第R帧视频数据时,其可以判断该第R帧视频数据是否为非关键帧,即I帧(又称内部画面,I帧通常是每个画面组GOP的第一个帧,其在经过了适度地压缩后被作为随机访问的参考点)。
如果第R帧视频数据为I帧,那么,终端不会对第R帧视频数据进行抽帧处理,而是继续判断第R+1帧视频数据是否为I帧。一般而言,当第R帧视频数据为I帧时,第R+1帧视频数据不会是I帧,这样,终端会对第R+1帧视频数据进行抽帧处理。如果第R帧视频数据不是I帧,例如是P帧(由在它前面的P帧或者I帧预测而来,它比较与自身前面的P帧或者I帧之间的相同信息或数据,也即考虑运动的特性进行帧间压缩)或者B帧,那么,终端会对该第R帧视频数据进行抽帧处理。后续抽帧过程与上述过程类型,在此不再赘述,只需保证终端从当前周期内获得的第一个非关键帧视频数据开始进行抽取,并且,任意相邻两个被抽取的非关键帧视频数据之间间隔的非关键帧视频数据的帧数为6即可。
容易看出,本实施例中,终端能够非常容易地确定出下一周期对应的抽帧间隔数量,并且,终端是采用每次间隔M帧非关键帧视频数据的方式来进行抽帧处理的,其不会抽取关键帧视频数据,这样可以有效地保证视频数据的正常播放和码流的平滑。
可选地,将第一取整结果确定为下一周期对应的抽帧间隔数量之后,该方法还可以包括:
在第一取整结果等于1的情况下,向服务器发送抽帧指令,以使得服务器依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据。
在本发明实施例的一种具体实施方式中,在第一取整结果等于1的情况下,向服务器发送抽帧指令,以使得服务器依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据,可以包括:
在第一取整结果等于1的情况下,对差值进行进一取整,以得到第二取整结果;
向服务器发送携带第二取整结果的抽帧指令,以使得图像设备依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据,其中,服务器抽取的非关键帧视频数据的帧数为第二取整结果。
需要指出的是,本实施例尤其适用于录像回放的使用场景。
下面结合图2,以一个例子对本实施例的具体实施过程进行说明。
如图2所示,本实施例提供了一种视频数据处理方法,包括:
S201,终端的浏览器与服务器间创建websocket长连接。
S202,检测是否创建成功;若为是,执行S203;若为否,当前周期的方法流程结束。
S203,在当前周期内,利用浏览器获得来自服务器的视频数据。
其中,服务器获得的视频数据具体是通过S201中创建的websocket长连接传输的。另外,每个周期的时长可以为1秒、2秒、5秒或者其他取值。
S204,确定待播放视频数据,对其进行解码渲染,播放经解码渲染后的待播放视频数据。
需要说明的是,在利用浏览器获得来自服务器的视频数据后,终端可以判断自身是否存储有当前周期对应的抽帧参数(例如抽帧间隔数量),并根据判断结果确定相应的待播放视频数据。
具体地,如果自身未存储有当前周期对应的抽帧间隔数量,这表示预设抽帧条件不满足。此时,终端可以将当前周期获得的视频数据均作为待播放视频数据。
如果自身存储有当前周期对应的抽帧间隔数量,这表示预设抽帧条件满足。此时,终端可以从当前周期获得的第一个非I帧视频数据开始,对所获得的视频数据中的非I帧视频数据进行抽帧处理;其中,终端抽帧的相邻两个非I帧视频数据之间间隔的非I帧视频数据的帧数为当前周期对应的抽帧间隔数量。之后,终端可以将经抽帧处理后的视频数据作为待播放视频数据。
无论自身是否存储有当前周期对应的抽帧参数,在确定出待播放视频数据之后,终端均会通过浏览器调用自身的解码渲染模块,以对待播放视频数据进行解码渲染。一般而言,在解码渲染模块被调用之后,解码渲染模块先对待播放视频数据进行解码,然后再对经解码后的待播放视频数据进行渲染。这样,终端能够播放经解码渲染后的待播放视频数据。
S205,记录每帧视频数据解码需要的时长。
S206,记录每帧视频数据渲染需要的时长。
S207,记录1秒内能够解码渲染的总帧数N。
对于终端而言,在对待播放视频数据进行解码渲染的同时,其可以记录待播放视频数据中的每帧视频数据解码需要的时长及渲染需要的时长,这两个时长的和值即为每帧视频数据进行解码渲染所需的时长。之后,终端可以根据所得到的每帧视频数据进行解码渲染所需的时长计算自身在单位时间,例如1秒内所能解码渲染的视频数据的总帧数N。具体地,终端可以先采用公式(1)计算当前周期内解码渲染任一帧视频数据所需的平均时长T。
T=(T1+T2+……+TX)/X (1)
其中,T1(单位为ms)为终端解码渲染第一帧视频数据(即待播放视频数据中的第一帧视频数据)所需的时长,T2(单位为ms)为终端解码渲染第二帧视频数据所需的时长,……,TX(单位为ms)为终端解码渲染第X帧视频数据(即待播放视频视频中的最后一帧视频数据)所需的时长。
在计算出T之后,终端可以利用公式(2)计算自身在1秒内所能够解码渲染的视频数据的总帧数N。
N=1000/T (2)
S208,获得视频帧率P和播放倍数为Q。
S209,判断N是否大于P*Q;若为是,执行S210,若为否,执行S211。
S210,视频播放正常。
S211,计算P*Q和N的差值S。
S212,计算P*Q和S的比值Y,去尾取整得到第一取整结果M,将M作为下一周期对应的抽帧间隔数量。
本实施例中,在获取到自身当前使用的视频帧率P和播放倍数为Q之后,终端会判断N是否大于P*Q。
如果N大于P*Q,这说明视频播放正常,当前周期的方法流程结束。
如果N不大于P*Q,这说明终端当前的解码渲染能力无法保证视频数据的流畅播放,因此,终端可以计算得到差值S,并利用计算得到的差值S计算比值Y。接下来,终端可以对比值Y进行去尾取整,以得到第一取整结果M,并将第一取整结果M确定为下一周期对应的抽帧间隔数量。
S213,判断M是否大于1;如果是,执行S214,若为否,执行S216。
S214,存储下一周期对应的抽帧间隔数量M。
S215,在下一周期,对非I帧进行抽帧处理,每隔M帧抽一帧。
S216,对差值S进一取整得到第二取整结果。
S217,发送携带第二取整结果的抽帧指令。
根据S213,在得到第一取整结果M并将M作为下一周期对应的抽帧间隔数量后,终端会将第一取整结果M与1进行比较。
参见上一实施例,当第一取整结果M大于1(即M为6)时,这说明视频帧率P和播放倍数Q的乘积(该乘积为25)与总帧数N(N为21)的差异并不是非常大,即视频播放过程中的延迟和卡顿现象并不会特别明显,这时,终端可以将下一周期对应的抽帧间隔数量M存储起来,在存储操作完成后,当前周期的整个方法流程结束。之后,在下一周期,由于自身存储有下一周期对应的抽帧间隔数量M,终端会对非I帧视频数据进行抽帧处理,具体地,终端为每隔M帧(例如6帧)非I帧视频数据抽取一帧。由于终端对下一周期获得的视频数据进行了抽帧处理,这样可以较好地保证终端在下一周期播放视频数据的流畅性。
当第一取整结果不大于1时,这说明视频帧率P和播放倍数Q的乘积与总帧数N的差异非常大,即视频播放过程中的延迟和卡顿现象特别明显。这时,终端可以对差值S进行进一取整,以得到第二取整结果。之后,终端可以向服务器发送携带第二取整结果的抽帧指令。
具体地,假设终端当前使用的视频帧率P为25,播放倍数Q为1,终端在当前周期计算得到的总帧数N为8,那么,经计算,差值S=25*1-8=17,比值Y=25*1/17=1.47,这样,第一取整结果M为1。可见,M不大于1,因此,终端可以对差值S进行进一取整,以得到第二取整结果17,终端可以向服务器发送携带17的抽帧指令。
这样,当服务器接收到该抽帧指令后,其会对下一周期待输出的25帧视频数据进行抽帧处理。具体而言,服务器会依据该抽帧指令,从该25帧视频数据中抽取17帧非关键帧视频数据,然后将剩下的8帧视频数据通过浏览器与服务器间预先构建的连接通道传输至终端。相应地,在下一周期内执行S203时,终端利用浏览器会获得来自服务器的8帧视频数据,那么,在下一周期,终端仅需要对8帧视频数据进行解码渲染,而无需对所有25帧视频数据进行解码渲染,即终端需要解码渲染的视频数据的帧数大大降低,因此,视频数据的播放过程出现延迟和卡顿现象的可能性会大大降低,视频数据的流畅播放得以保证。
需要指出的是,服务器内也可以预先存储一抽帧数目L(L可以为6、8、10或者其余数值)。这样,在第一取整结果等于1的情况下,终端可以不计算第二取整结果,而是直接向服务器发送抽帧指令(即该抽帧指令中并不包括第二取整结果)。当服务器接收到该抽帧指令后,其可以对下一周期待输出的25帧视频数据中的非关键帧视频数据进行抽帧处理。具体地,服务器可以从该25帧视频数据中抽取L帧非关键帧视频数据,然后将剩下的(25-L)帧视频数据通过浏览器与服务器间预先构建的连接通道传输至终端。相应地,终端在下一周期利用浏览器仅会获得来自服务器的(25-L)帧视频数据,那么,在下一周期,终端仅需要对(25-L)帧视频数据进行解码渲染,即终端需要解码渲染的视频数据的帧数也大大降低,因此,视频数据的播放过程出现延迟和卡顿现象的可能性也会大大降低,视频数据的流畅播放也得以保证。
容易看出,本实施例能够有效地保证视频数据的流畅播放。
可选地,在当前周期内,利用浏览器获得来自服务器的视频数据,包括:
在当前周期内,利用浏览器获得来自服务器的、所对应分辨率为第一分辨率的视频数据;
将第一取整结果确定为下一周期对应的抽帧间隔数量之后,该方法还可以包括:
在第一取整结果等于1的情况下,向服务器发送降分辨率指令,以使得服务器在接收到降分辨率指令后,在自身与终端间构建新的连接通道,并通过新的连接通道向终端传输所对应分辨率为第二分辨率的视频数据,其中,第二分辨率低于第一分辨率。
需要指出的是,本实施例不仅适用于录像回放的使用场景,也适用于实时预览的使用场景。
一般而言,服务器会将自身采集的视频数据存储两份,其中一份为主码流视频数据,另一份为子码流视频数据,主码流视频数据的分辨率为第一分辨率,子码流视频数据的分辨率为第二分辨率,第二分辨率低于第一分辨率。
下面结合图3,以一个例子对本实施例的具体实施过程进行说明。
如图3所示,本实施例提供了一种视频数据处理方法,包括:
S301,终端的浏览器与服务器间创建websocket长连接。
S302,检测是否创建成功;若为是,执行S303;若为否,当前周期的方法流程结束。
S303,在当前周期内,利用浏览器获得来自服务器的视频数据。
其中,服务器获得的视频数据具体是通过S301中创建的websocket长连接传输的,该视频数据具体为所对应分辨率为第一分辨率的主码流视频数据。另外,每个周期的时长可以为1秒、2秒、5秒或者其他取值。
S304,确定待播放视频数据,对其进行解码渲染,播放经解码渲染后的待播放视频数据。
需要说明的是,在利用浏览器获得来自服务器的视频数据后,终端可以判断自身是否存储有当前周期对应的抽帧参数(例如抽帧间隔数量),并根据判断结果确定相应的待播放视频数据。
具体地,如果自身未存储有当前周期对应的抽帧间隔数量,这表示预设抽帧条件不满足。此时,终端可以将当前周期获得的视频数据均作为待播放视频数据。
如果自身存储有当前周期对应的抽帧间隔数量,这表示预设抽帧条件满足。此时,终端可以从当前周期获得的第一个非I帧视频数据开始,对所获得的视频数据中的非I帧视频数据进行抽帧处理;其中,终端抽帧的相邻两个非I帧视频数据之间间隔的非I帧视频数据的帧数为当前周期对应的抽帧间隔数量。之后,终端可以将经抽帧处理后的视频数据作为待播放视频数据。
无论自身是否存储有当前周期对应的抽帧参数,在确定出待播放视频数据之后,终端均会通过浏览器调用自身的解码渲染模块,以对待播放视频数据进行解码渲染。一般而言,在解码渲染模块被调用之后,解码渲染模块先对待播放视频数据进行解码,然后再对经解码后的待播放视频数据进行渲染。这样,终端能够播放经解码渲染后的待播放视频数据。
S305,记录每帧视频数据解码需要的时长。
S306,记录每帧视频数据渲染需要的时长。
S307,记录1秒内能够解码渲染的总帧数N。
对于终端而言,在对待播放视频数据进行解码渲染的同时,其可以记录待播放视频数据中的每帧视频数据解码需要的时长及渲染需要的时长,这两个时长的和值即为每帧视频数据进行解码渲染所需的时长。之后,终端可以根据所得到的每帧视频数据进行解码渲染所需的时长计算自身在单位时间,例如1秒内所能解码渲染的视频数据的总帧数N。具体地,终端可以先采用公式(1)计算当前周期内解码渲染任一帧视频数据所需的平均时长T。
T=(T1+T2+……+TX)/X (1)
其中,T1(单位为ms)为终端解码渲染第一帧视频数据(即待播放视频数据中的第一帧视频数据)所需的时长,T2(单位为ms)为终端解码渲染第二帧视频数据所需的时长,……,TX(单位为ms)为终端解码渲染第X帧视频数据(即待播放视频视频中的最后一帧视频数据)所需的时长。
在计算出T之后,终端可以利用公式(2)计算自身在1秒内所能够解码渲染的视频数据的总帧数N。
N=1000/T (2)
S308,获得视频帧率P和播放倍数为Q。
S309,判断N是否大于P*Q;若为是,执行S310,若为否,执行S311。
S310,视频播放正常。
S311,计算P*Q和N的差值S。
S312,计算P*Q和S的比值Y,去尾取整得到第一取整结果M,将M作为下一周期对应的抽帧间隔数量。
本实施例中,在获取到自身当前使用的视频帧率P和播放倍数为Q之后,终端会判断N是否大于P*Q。
如果N大于P*Q,这说明视频播放正常,当前周期的方法流程结束。
如果N不大于P*Q,这说明终端当前的解码渲染能力无法保证视频数据的流畅播放,因此,终端可以计算得到差值S,并利用计算得到的差值S计算比值Y。接下来,终端可以对比值Y进行去尾取整,以得到第一取整结果M,并将第一取整结果M确定为下一周期对应的抽帧间隔数量。
S313,判断M是否大于1;如果是,执行S314,若为否,执行S316。
S314,存储下一周期对应的抽帧间隔数量M。
S315,在下一周期,对非I帧进行抽帧处理,每隔M帧抽一帧。
S316,发送降分辨率指令。
根据S313,在得到第一取整结果M并将M作为下一周期对应的抽帧间隔数量后,终端会将第一取整结果M与1进行比较。
参见上面的实施例,当第一取整结果M大于1(即M为6)时,这说明视频帧率P和播放倍数Q的乘积(该乘积为25)与总帧数N(N为21)的差异并不是非常大,即视频播放过程中的延迟和卡顿现象并不会特别明显,这时,终端可以将下一周期对应的抽帧间隔数量M存储起来,在存储操作完成后,当前周期的方法流程结束。之后,在下一周期,由于自身存储有下一周期对应的抽帧间隔数量M,终端会对非I帧视频数据进行抽帧处理,具体地,终端为每隔M帧(例如6帧)非I帧视频数据抽取一帧。由于终端对下一周期获得的视频数据进行了抽帧处理,这样可以较好地保证终端在下一周期播放视频数据的流畅性。
当第一取整结果不大于1时,这说明视频帧率P和播放倍数Q的乘积与总帧数N的差异非常大,即视频播放过程中的延迟和卡顿现象特别明显。这时,终端可以向服务器发送降分辨率指令。
具体地,假设终端当前使用的视频帧率P为25,播放倍数Q为1,终端在当前周期计算得到的总帧数N为8,那么,经计算,差值S=25*1-8=17,比值Y=25*1/17=1.47,这样,第一取整结果M为1。可见,M不大于1,因此,终端会向服务器发送降分辨率指令。
在服务器接收到该降分辨率指令后,S301会被触发而重新执行,即终端的浏览器与服务器间会重新构建一条websocket长连接。这样,服务器可以通过该重新构建的websocket长连接,向终端传输所对应分辨率为第二分辨率的子码流视频数据。由于终端通过浏览器接收到的视频数据的分辨率得到降低,因此,终端可以及时地对这些视频数据进行解码渲染,以利于视频数据的流畅播放。
可以看出,本实施例也能够有效地降低视频数据的播放过程中出现延迟和卡顿现象的可能性,从而保证视频数据的流畅播放。
综上,本实施例采用无插件方案,实现了视频数据的流畅播放。
下面对本发明实施例所提供的一种视频数据处理装置进行说明。
需要说明的是,本发明实施例所提供的一种视频数据处理装置应用于终端。
参见图4,图中示出了本发明实施例所提供的一种视频数据处理装置的结构框图。如图4所示,该装置可以包括:
获得模块41,用于利用浏览器获得来自服务器的视频数据,其中,视频数据是通过浏览器与服务器间预先构建的连接通道传输的;
确定模块42,用于确定预设抽帧条件是否满足;
第一处理模块43,用于在确定模块42的确定结果为否的情况下,将所获得的视频数据作为待播放视频数据;在确定模块42的确定结果为是的情况下,对所获得的视频数据进行抽帧处理,将经抽帧处理后的视频数据作为待播放视频数据;
解码渲染模块44,用于通过浏览器调用终端的解码渲染模块,对待播放视频数据进行解码渲染,解码渲染模块是采用浏览器能够识别的语言实现的;
播放模块45,用于在浏览器对应的浏览器页面中播放经解码渲染后的待播放视频数据。
本方案中,只需保证终端支持特定的协议,例如websocket协议,终端就能够通过该浏览器获得来自服务器的视频数据。接下来,终端根据预设抽帧条件是否满足确定相应的待播放视频数据。之后,终端直接通过浏览器调用自身的、由浏览器能够识别的语言实现的解码渲染模块,即可对待播放视频数据进行解码渲染,并在浏览器对应的浏览器页面中播放待播放视频数据。可以看出,本方案中无需安装NPAPI或ActiveX插件,终端直接利用浏览器即可实现视频数据的成功播放。
另外,由于在预设抽帧条件满足,即确定出解码渲染模块的解码渲染能力不足以保证所获得的视频数据的流畅播放时,终端会对所获得的视频数据进行抽帧处理,并将经抽帧处理后的视频数据作为待播放视频数据。这样,终端在通过浏览器调用解码渲染模块后,解码渲染模块仅需要对待播放视频数据进行解码渲染,而不需要对终端所获得的视频数据中的每帧视频数据均进行解码渲染,因此,解码渲染模块的解码渲染能力足以保证待播放视频数据的流畅播放。
可见,本申请采用无插件方案实现了视频数据的流畅播放,这样可以给用户带来较好的使用体验。
可选地,获得模块,具体用于在当前周期内,利用浏览器获得来自服务器的视频数据;
确定模块,具体用于确定自身是否存储有当前周期对应的抽帧参数;若为是,表明预设抽帧条件满足;若为否,表明预设抽帧条件不满足;
第一处理模块,具体用于根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理。
可选地,该装置还可以包括:
记录模块,用于在对待播放视频数据进行解码渲染的同时,记录待播放视频数据中的每帧视频数据进行解码渲染所需的时长;
第二处理模块,用于根据所记录的各时长,计算单位时间内所能够解码渲染的视频数据的总帧数,并判断总帧数是否小于等于目标数据;其中,目标数据是基于终端当前使用的视频帧率确定的;
第三处理模块,用于在总帧数小于等于目标数据的情况下,基于总帧数和视频帧率,计算下一周期对应的抽帧参数,存储计算出的下一周期对应的抽帧参数。
可选地,目标数据是终端当前使用的视频帧率和播放倍数的乘积;
第三处理模块,具体用于基于总帧数、视频帧率和播放倍数,计算下一周期对应的抽帧参数。
可选地,抽帧参数包括抽帧间隔数量;其中,
第一处理模块,具体用于从当前周期内获得的第一个非关键帧视频数据开始,对所获得的视频数据中的非关键帧视频数据进行抽帧处理,其中,终端抽取的相邻两个非关键帧视频数据之间间隔的非关键帧视频数据的帧数为当前周期对应的抽帧间隔数量;
第三处理模块,包括:
第一计算单元,用于计算视频帧率和播放倍数的乘积与总帧数的差值;
第二计算单元,用于计算乘积与差值的比值,并对比值进行去尾取整,以得到第一取整结果;
确定单元,用于将第一取整结果确定为下一周期对应的抽帧间隔数量;
存储单元,用于在第一取整结果大于1的情况下,存储确定出的下一周期对应的抽帧间隔数量。
可选地,该装置还可以包括:
第一发送模块,用于在将第一取整结果确定为下一周期对应的抽帧间隔数量之后,在第一取整结果等于1的情况下,向服务器发送抽帧指令,以使得服务器依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据。
可选地,第一发送模块,包括:
取整单元,用于在第一取整结果等于1的情况下,对差值进行进一取整,以得到第二取整结果;
发送单元,用于向服务器发送携带第二取整结果的抽帧指令,以使得图像设备依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据,其中,服务器抽取的非关键帧视频数据的帧数为第二取整结果。
可选地,获得模块,具体用于在当前周期内,利用浏览器获得来自服务器的、所对应分辨率为第一分辨率的视频数据;
该装置还可以包括:
第二发送模块,用于在将第一取整结果确定为下一周期对应的抽帧间隔数量之后,在第一取整结果等于1的情况下,向服务器发送降分辨率指令,以使得服务器在接收到降分辨率指令后,在自身与终端间构建新的连接通道,并通过新的连接通道向终端传输所对应分辨率为第二分辨率的视频数据,其中,第二分辨率低于第一分辨率。
综上,本实施例采用无插件方案,实现了视频数据的流畅播放。
下面对本发明实施例所提供的一种终端进行说明。
参见图5,图中示出了本发明实施例所提供的一种终端的结构示意图。如图5所示,该终端包括处理器51、通信接口52、存储器53和通信总线54,其中,处理器51,通信接口52,存储器53通过通信总线54完成相互间的通信;
存储器53,用于存放计算机程序;
处理器51,用于执行存储器53上所存放的程序时,实现上述方法步骤。
具体地,如图1所示,处理器51实现的方法步骤可以包括:
S101,利用浏览器获得来自服务器的视频数据,其中,视频数据是通过浏览器与服务器间预先构建的连接通道传输的。
S102,确定预设抽帧条件是否满足;若为否,执行S103;若为是,执行S104。
S103,将所获得的视频数据作为待播放视频数据。
S104,对所获得的视频数据进行抽帧处理,将经抽帧处理后的视频数据作为待播放视频数据。
S105,通过浏览器调用终端的解码渲染模块,对待播放视频数据进行解码渲染,解码渲染模块是采用浏览器能够识别的语言实现的。
S106,在浏览器对应的浏览器页面中播放经解码渲染后的待播放视频数据。
可选地,处理器51实现的方法步骤中,利用浏览器获得来自服务器的视频数据,包括:
在当前周期内,利用浏览器获得来自服务器的视频数据;
确定预设抽帧条件是否满足,包括:
确定自身是否存储有当前周期对应的抽帧参数;若为是,表明预设抽帧条件满足;若为否,表明预设抽帧条件不满足;
对所获得的视频数据进行抽帧处理,包括:
根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理。
可选地,处理器51实现的方法步骤还包括:
在对待播放视频数据进行解码渲染的同时,记录待播放视频数据中的每帧视频数据进行解码渲染所需的时长;
根据所记录的各时长,计算单位时间内所能够解码渲染的视频数据的总帧数,并判断总帧数是否小于等于目标数据;其中,目标数据是基于终端当前使用的视频帧率确定的;
若为是,基于总帧数和视频帧率,计算下一周期对应的抽帧参数,存储计算出的下一周期对应的抽帧参数。
可选地,处理器51实现的方法步骤中,目标数据是终端当前使用的视频帧率和播放倍数的乘积;
基于总帧数和视频帧率,计算下一周期对应的抽帧参数,包括:
基于总帧数、视频帧率和播放倍数,计算下一周期对应的抽帧参数。
可选地,处理器51实现的方法步骤中,抽帧参数包括抽帧间隔数量;其中,
根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理,包括:
从当前周期内获得的第一个非关键帧视频数据开始,对所获得的视频数据中的非关键帧视频数据进行抽帧处理,其中,终端抽取的相邻两个非关键帧视频数据之间间隔的非关键帧视频数据的帧数为当前周期对应的抽帧间隔数量;
基于总帧数、视频帧率和播放倍数,计算下一周期对应的抽帧参数,包括:
计算视频帧率和播放倍数的乘积与总帧数的差值;
计算乘积与差值的比值,并对比值进行去尾取整,以得到第一取整结果;
将第一取整结果确定为下一周期对应的抽帧间隔数量;
存储计算出的下一周期对应的抽帧参数,包括:
在第一取整结果大于1的情况下,存储确定出的下一周期对应的抽帧间隔数量。
可选地,将第一取整结果确定为下一周期对应的抽帧间隔数量之后,处理器51实现的方法步骤还包括:
在第一取整结果等于1的情况下,向服务器发送抽帧指令,以使得服务器依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据。
可选地,处理器51实现的方法步骤中,在第一取整结果等于1的情况下,向服务器发送抽帧指令,以使得服务器依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据,包括:
在第一取整结果等于1的情况下,对差值进行进一取整,以得到第二取整结果;
向服务器发送携带第二取整结果的抽帧指令,以使得图像设备依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据,其中,服务器抽取的非关键帧视频数据的帧数为第二取整结果。
可选地,处理器51实现的方法步骤中,在当前周期内,利用浏览器获得来自服务器的视频数据,包括:
在当前周期内,利用浏览器获得来自服务器的、所对应分辨率为第一分辨率的视频数据;
将第一取整结果确定为下一周期对应的抽帧间隔数量之后,处理器51实现的方法步骤还包括:
在第一取整结果等于1的情况下,向服务器发送降分辨率指令,以使得服务器在接收到降分辨率指令后,在自身与终端间构建新的连接通道,并通过新的连接通道向终端传输所对应分辨率为第二分辨率的视频数据,其中,第二分辨率低于第一分辨率。
上述终端提到的通信总线54可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线54可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口52用于上述终端与其他设备之间的通信。
存储器53可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器53还可以是至少一个位于远离前述处理器51的存储装置。
上述的处理器51可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
综上,本申请采用无插件方案实现了视频数据的流畅播放,这样可以给用户带来较好的使用体验。
下面对本发明实施例所提供的一种计算机可读存储介质进行说明。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述方法步骤。
具体地,如图1所示,处理器实现的方法步骤可以包括:
S101,利用浏览器获得来自服务器的视频数据,其中,视频数据是通过浏览器与服务器间预先构建的连接通道传输的。
S102,确定预设抽帧条件是否满足;若为否,执行S103;若为是,执行S104。
S103,将所获得的视频数据作为待播放视频数据。
S104,对所获得的视频数据进行抽帧处理,将经抽帧处理后的视频数据作为待播放视频数据。
S105,通过浏览器调用终端的解码渲染模块,对待播放视频数据进行解码渲染,解码渲染模块是采用浏览器能够识别的语言实现的。
S106,在浏览器对应的浏览器页面中播放经解码渲染后的待播放视频数据。
可选地,处理器实现的方法步骤中,利用浏览器获得来自服务器的视频数据,包括:
在当前周期内,利用浏览器获得来自服务器的视频数据;
确定预设抽帧条件是否满足,包括:
确定自身是否存储有当前周期对应的抽帧参数;若为是,表明预设抽帧条件满足;若为否,表明预设抽帧条件不满足;
对所获得的视频数据进行抽帧处理,包括:
根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理。
可选地,处理器实现的方法步骤还包括:
在对待播放视频数据进行解码渲染的同时,记录待播放视频数据中的每帧视频数据进行解码渲染所需的时长;
根据所记录的各时长,计算单位时间内所能够解码渲染的视频数据的总帧数,并判断总帧数是否小于等于目标数据;其中,目标数据是基于终端当前使用的视频帧率确定的;
若为是,基于总帧数和视频帧率,计算下一周期对应的抽帧参数,存储计算出的下一周期对应的抽帧参数。
可选地,处理器实现的方法步骤中,目标数据是终端当前使用的视频帧率和播放倍数的乘积;
基于总帧数和视频帧率,计算下一周期对应的抽帧参数,包括:
基于总帧数、视频帧率和播放倍数,计算下一周期对应的抽帧参数。
可选地,处理器实现的方法步骤中,抽帧参数包括抽帧间隔数量;其中,
根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理,包括:
从当前周期内获得的第一个非关键帧视频数据开始,对所获得的视频数据中的非关键帧视频数据进行抽帧处理,其中,终端抽取的相邻两个非关键帧视频数据之间间隔的非关键帧视频数据的帧数为当前周期对应的抽帧间隔数量;
基于总帧数、视频帧率和播放倍数,计算下一周期对应的抽帧参数,包括:
计算视频帧率和播放倍数的乘积与总帧数的差值;
计算乘积与差值的比值,并对比值进行去尾取整,以得到第一取整结果;
将第一取整结果确定为下一周期对应的抽帧间隔数量;
存储计算出的下一周期对应的抽帧参数,包括:
在第一取整结果大于1的情况下,存储确定出的下一周期对应的抽帧间隔数量。
可选地,将第一取整结果确定为下一周期对应的抽帧间隔数量之后,处理器实现的方法步骤还包括:
在第一取整结果等于1的情况下,向服务器发送抽帧指令,以使得服务器依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据。
可选地,处理器实现的方法步骤中,在第一取整结果等于1的情况下,向服务器发送抽帧指令,以使得服务器依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据,包括:
在第一取整结果等于1的情况下,对差值进行进一取整,以得到第二取整结果;
向服务器发送携带第二取整结果的抽帧指令,以使得图像设备依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过连接通道向终端传输经抽帧处理后的待输出视频数据,其中,服务器抽取的非关键帧视频数据的帧数为第二取整结果。
可选地,处理器实现的方法步骤中,在当前周期内,利用浏览器获得来自服务器的视频数据,包括:
在当前周期内,利用浏览器获得来自服务器的、所对应分辨率为第一分辨率的视频数据;
将第一取整结果确定为下一周期对应的抽帧间隔数量之后,处理器实现的方法步骤还包括:
在第一取整结果等于1的情况下,向服务器发送降分辨率指令,以使得服务器在接收到降分辨率指令后,在自身与终端间构建新的连接通道,并通过新的连接通道向终端传输所对应分辨率为第二分辨率的视频数据,其中,第二分辨率低于第一分辨率。
综上,本申请采用无插件方案实现了视频数据的流畅播放,这样可以给用户带来较好的使用体验。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于图4所示的视频数据处理装置实施例、图5所示的终端实施例及上述计算机可读存储介质实施例而言,由于其基本相似于图1至图3所示的视频数据处理方法实施例,所以描述的比较简单,相关之处参见图1至图3所示的视频数据处理方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种视频数据处理方法,其特征在于,应用于终端,所述方法包括:
在当前周期内,利用浏览器获得来自服务器的视频数据,其中,所述视频数据是通过所述浏览器与所述服务器间预先构建的连接通道传输的;
确定自身是否存储有当前周期对应的抽帧参数;若为是,表明预设抽帧条件满足;若为否,表明预设抽帧条件不满足;
若为否,将所获得的视频数据作为待播放视频数据;若为是,根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理,将经抽帧处理后的视频数据作为待播放视频数据;
通过所述浏览器调用所述终端的解码渲染模块,对所述待播放视频数据进行解码渲染,所述解码渲染模块是采用所述浏览器能够识别的语言实现的;
在所述浏览器对应的浏览器页面中播放经解码渲染后的待播放视频数据;
在对所述待播放视频数据进行解码渲染的同时,记录所述待播放视频数据中的每帧视频数据进行解码渲染所需的时长;根据所记录的各时长,计算单位时间内所能够解码渲染的视频数据的总帧数,并判断所述总帧数是否小于等于目标数据;其中,所述目标数据是基于所述终端当前使用的视频帧率确定的,所述目标数据是所述终端当前使用的视频帧率和播放倍数的乘积;若为是,基于所述总帧数、所述视频帧率和所述播放倍数,计算下一周期对应的抽帧参数,存储计算出的下一周期对应的抽帧参数。
2.根据权利要求1所述的方法,其特征在于,所述抽帧参数包括抽帧间隔数量;其中,
所述根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理,包括:
从当前周期内获得的第一个非关键帧视频数据开始,对所获得的视频数据中的非关键帧视频数据进行抽帧处理,其中,所述终端抽取的相邻两个非关键帧视频数据之间间隔的非关键帧视频数据的帧数为当前周期对应的抽帧间隔数量;
所述基于所述总帧数、所述视频帧率和所述播放倍数,计算下一周期对应的抽帧参数,包括:
计算所述视频帧率和所述播放倍数的乘积与所述总帧数的差值;
计算所述乘积与所述差值的比值,并对所述比值进行去尾取整,以得到第一取整结果;
将所述第一取整结果确定为下一周期对应的抽帧间隔数量;
所述存储计算出的下一周期对应的抽帧参数,包括:
在所述第一取整结果大于1的情况下,存储确定出的下一周期对应的抽帧间隔数量。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一取整结果确定为下一周期对应的抽帧间隔数量之后,所述方法还包括:
在所述第一取整结果等于1的情况下,向所述服务器发送抽帧指令,以使得所述服务器依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过所述连接通道向所述终端传输经抽帧处理后的待输出视频数据。
4.根据权利要求3所述的方法,其特征在于,所述在所述第一取整结果等于1的情况下,向所述服务器发送抽帧指令,以使得所述服务器依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过所述连接通道向所述终端传输经抽帧处理后的待输出视频数据,包括:
在所述第一取整结果等于1的情况下,对所述差值进行进一取整,以得到第二取整结果;
向所述服务器发送携带所述第二取整结果的抽帧指令,以使得所述图像设备依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过所述连接通道向所述终端传输经抽帧处理后的待输出视频数据,其中,所述服务器抽取的非关键帧视频数据的帧数为所述第二取整结果。
5.根据权利要求2所述的方法,其特征在于,所述在当前周期内,利用浏览器获得来自服务器的视频数据,包括:
在当前周期内,利用浏览器获得来自服务器的、所对应分辨率为第一分辨率的视频数据;
所述将所述第一取整结果确定为下一周期对应的抽帧间隔数量之后,所述方法还包括:
在所述第一取整结果等于1的情况下,向所述服务器发送降分辨率指令,以使得所述服务器在接收到所述降分辨率指令后,在自身与所述终端间构建新的连接通道,并通过新的连接通道向所述终端传输所对应分辨率为第二分辨率的视频数据,其中,所述第二分辨率低于所述第一分辨率。
6.一种视频数据处理装置,其特征在于,应用于终端,所述装置包括:
获得模块,用于在当前周期内,利用浏览器获得来自服务器的视频数据,其中,所述视频数据是通过所述浏览器与所述服务器间预先构建的连接通道传输的;
确定模块,用于确定自身是否存储有当前周期对应的抽帧参数;若为是,表明预设抽帧条件满足;若为否,表明预设抽帧条件不满足;
第一处理模块,用于在所述确定模块的确定结果为否的情况下,将所获得的视频数据作为待播放视频数据;在所述确定模块的确定结果为是的情况下,根据当前周期对应的抽帧参数,对所获得的视频数据进行抽帧处理,将经抽帧处理后的视频数据作为待播放视频数据;
解码渲染模块,用于通过所述浏览器调用所述终端的解码渲染模块,对所述待播放视频数据进行解码渲染,所述解码渲染模块是采用所述浏览器能够识别的语言实现的;
播放模块,用于在所述浏览器对应的浏览器页面中播放经解码渲染后的待播放视频数据;
记录模块,用于在对所述待播放视频数据进行解码渲染的同时,记录所述待播放视频数据中的每帧视频数据进行解码渲染所需的时长;
第二处理模块,用于根据所记录的各时长,计算单位时间内所能够解码渲染的视频数据的总帧数,并判断所述总帧数是否小于等于目标数据;其中,所述目标数据是基于所述终端当前使用的视频帧率确定的,所述目标数据是所述终端当前使用的视频帧率和播放倍数的乘积;
第三处理模块,用于在所述总帧数小于等于目标数据的情况下,基于所述总帧数、所述视频帧率和所述播放倍数,计算下一周期对应的抽帧参数,存储计算出的下一周期对应的抽帧参数。
7.根据权利要求6所述的装置,其特征在于,所述抽帧参数包括抽帧间隔数量;其中,
所述第一处理模块,具体用于从当前周期内获得的第一个非关键帧视频数据开始,对所获得的视频数据中的非关键帧视频数据进行抽帧处理,其中,所述终端抽取的相邻两个非关键帧视频数据之间间隔的非关键帧视频数据的帧数为当前周期对应的抽帧间隔数量;
所述第三处理模块,包括:
第一计算单元,用于计算所述视频帧率和所述播放倍数的乘积与所述总帧数的差值;
第二计算单元,用于计算所述乘积与所述差值的比值,并对所述比值进行去尾取整,以得到第一取整结果;
确定单元,用于将所述第一取整结果确定为下一周期对应的抽帧间隔数量;
存储单元,用于在所述第一取整结果大于1的情况下,存储确定出的下一周期对应的抽帧间隔数量。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第一发送模块,用于在将所述第一取整结果确定为下一周期对应的抽帧间隔数量之后,在所述第一取整结果等于1的情况下,向所述服务器发送抽帧指令,以使得所述服务器依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过所述连接通道向所述终端传输经抽帧处理后的待输出视频数据。
9.根据权利要求8所述的装置,其特征在于,所述第一发送模块,包括:
取整单元,用于在所述第一取整结果等于1的情况下,对所述差值进行进一取整,以得到第二取整结果;
发送单元,用于向所述服务器发送携带所述第二取整结果的抽帧指令,以使得所述图像设备依据所接收到的抽帧指令,在对下一周期的待输出视频数据中的非关键帧视频数据进行抽帧处理后,通过所述连接通道向所述终端传输经抽帧处理后的待输出视频数据,其中,所述服务器抽取的非关键帧视频数据的帧数为所述第二取整结果。
10.根据权利要求7所述的装置,其特征在于,
所述获得模块,具体用于在当前周期内,利用浏览器获得来自服务器的、所对应分辨率为第一分辨率的视频数据;
所述装置还包括:
第二发送模块,用于在将所述第一取整结果确定为下一周期对应的抽帧间隔数量之后,在所述第一取整结果等于1的情况下,向所述服务器发送降分辨率指令,以使得所述服务器在接收到所述降分辨率指令后,在自身与所述终端间构建新的连接通道,并通过新的连接通道向所述终端传输所对应分辨率为第二分辨率的视频数据,其中,所述第二分辨率低于所述第一分辨率。
11.一种终端,其特征在于,包括:
存储器,用于存放计算机程序;
处理器,用于执行所述存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710656353.0A CN109391585B (zh) | 2017-08-03 | 2017-08-03 | 视频数据处理方法、装置、终端及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710656353.0A CN109391585B (zh) | 2017-08-03 | 2017-08-03 | 视频数据处理方法、装置、终端及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109391585A CN109391585A (zh) | 2019-02-26 |
CN109391585B true CN109391585B (zh) | 2021-06-11 |
Family
ID=65412290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710656353.0A Active CN109391585B (zh) | 2017-08-03 | 2017-08-03 | 视频数据处理方法、装置、终端及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109391585B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110012315A (zh) * | 2019-03-15 | 2019-07-12 | 北京奇艺世纪科技有限公司 | 一种视频播放方法、装置及电子设备 |
CN110022452B (zh) * | 2019-05-16 | 2021-04-30 | 深圳市芯动电子科技有限公司 | 一种适于全息显示装置的视频抽帧方法及系统 |
CN110943997B (zh) * | 2019-12-03 | 2022-05-31 | 北京奇艺世纪科技有限公司 | 视频推送方法、装置、电子设备及计算机可读存储介质 |
CN112866799B (zh) * | 2020-12-31 | 2023-08-11 | 百果园技术(新加坡)有限公司 | 一种视频抽帧处理方法、装置、设备及介质 |
CN112866745B (zh) * | 2020-12-31 | 2023-04-25 | 南方电网大数据服务有限公司 | 流媒体视频数据处理方法、装置、计算机设备和存储介质 |
CN112804545B (zh) * | 2021-01-07 | 2022-08-09 | 中电福富信息科技有限公司 | 一种基于直播流抽帧算法构建慢直播处理方法和系统 |
CN116208842A (zh) * | 2021-11-30 | 2023-06-02 | 顺丰科技有限公司 | 视频处理方法、装置、设备和计算机可读存储介质 |
CN114339400B (zh) * | 2021-12-28 | 2024-02-02 | 上海众源网络有限公司 | 一种视频抽帧方法、装置、电子设备及存储介质 |
CN118138801B (zh) * | 2024-05-08 | 2024-07-19 | 鹏城实验室 | 视频数据处理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101448157A (zh) * | 2008-12-30 | 2009-06-03 | 杭州华三通信技术有限公司 | 一种视频编码方法和视频编码器 |
CN104822008A (zh) * | 2014-04-25 | 2015-08-05 | 腾讯科技(北京)有限公司 | 视频同步方法及装置 |
CN105869199A (zh) * | 2015-02-09 | 2016-08-17 | 三星电子株式会社 | 用于处理动画的装置和方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101562682A (zh) * | 2008-04-14 | 2009-10-21 | 鸿富锦精密工业(深圳)有限公司 | 视频图像处理系统及其服务器、用户端和视频图像处理方法 |
CN101588494B (zh) * | 2009-06-30 | 2011-09-21 | 华为技术有限公司 | 一种媒体流处理方法及通讯系统以及相关设备 |
CN102025956B (zh) * | 2009-09-23 | 2013-01-23 | 华为技术有限公司 | 网络流媒体快进快退播放的处理方法、装置和系统 |
CN102348117A (zh) * | 2010-08-03 | 2012-02-08 | 深圳Tcl新技术有限公司 | 低带宽传输数字高清信号的系统、方法及网络多媒体电视 |
CN102833585B (zh) * | 2012-08-24 | 2015-04-15 | 北京融智讯达科技有限公司 | 一种泛终端视频传输系统和方法 |
CN103051978A (zh) * | 2012-12-16 | 2013-04-17 | 华南理工大学 | 一种基于h264的实时移动视频服务控制方法 |
CN104602117B (zh) * | 2015-01-31 | 2018-03-16 | 华为技术有限公司 | 一种倍速播放视频的方法及装置 |
CN105578207A (zh) * | 2015-12-18 | 2016-05-11 | 无锡天脉聚源传媒科技有限公司 | 一种视频帧率转换方法及装置 |
CN106506525B (zh) * | 2016-11-29 | 2019-10-25 | 北京旷视科技有限公司 | 用于在浏览器上播放视频流的方法及装置 |
-
2017
- 2017-08-03 CN CN201710656353.0A patent/CN109391585B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101448157A (zh) * | 2008-12-30 | 2009-06-03 | 杭州华三通信技术有限公司 | 一种视频编码方法和视频编码器 |
CN104822008A (zh) * | 2014-04-25 | 2015-08-05 | 腾讯科技(北京)有限公司 | 视频同步方法及装置 |
CN105869199A (zh) * | 2015-02-09 | 2016-08-17 | 三星电子株式会社 | 用于处理动画的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109391585A (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109391585B (zh) | 视频数据处理方法、装置、终端及计算机可读存储介质 | |
CN110505522A (zh) | 视频数据的处理方法、装置、及电子设备 | |
CN110784718B (zh) | 视频数据编码方法、装置、设备和存储介质 | |
CN110753202B (zh) | 可视对讲系统的音视频同步方法、装置、设备及存储介质 | |
CN106791875B (zh) | 视频数据解码方法、编码方法以及相关设备 | |
CN112261377B (zh) | web版监控视频播放方法、电子设备及存储介质 | |
CN108924574B (zh) | 录播系统中的丢包处理方法、装置、设备及存储介质 | |
WO2017185609A1 (zh) | 一种视频处理方法及设备 | |
CN113225585B (zh) | 一种视频清晰度的切换方法、装置、电子设备以及存储介质 | |
CN115643449B (zh) | 云服务的视频显示方法、装置、设备、存储介质和系统 | |
CN113099272A (zh) | 视频处理方法及装置、电子设备和存储介质 | |
CN113709447B (zh) | 一种终端设备播放性能的检测方法和装置 | |
CN107493478B (zh) | 编码帧率设置方法及设备 | |
CN109525852B (zh) | 直播视频流处理方法、装置、系统及计算机可读存储介质 | |
CN103929682A (zh) | 一种在视频直播系统中设置关键帧的方法及装置 | |
CN117651187A (zh) | 视频存储方法、视频播放方法、装置及电子设备 | |
CN113645448A (zh) | 一种适用于指挥调度的视频解码方法和装置 | |
CN112543348A (zh) | 远程录屏方法、装置、设备及计算机可读存储介质 | |
WO2023024832A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110636332A (zh) | 一种视频处理方法、装置及计算机可读存储介质 | |
CN106254873B (zh) | 一种视频编码方法及视频编码装置 | |
CN112019878A (zh) | 一种视频解码和编辑的方法、装置、设备和存储介质 | |
CN110855619B (zh) | 播放音视频数据的处理方法、装置、存储介质及终端设备 | |
CN115550710A (zh) | 一种数据处理方法、装置、终端设备和存储介质 | |
CN105430527B (zh) | 一种流媒体提醒方法及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |