CN113347488B - 视频渲染方法、装置、设备及存储介质 - Google Patents
视频渲染方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113347488B CN113347488B CN202110893147.8A CN202110893147A CN113347488B CN 113347488 B CN113347488 B CN 113347488B CN 202110893147 A CN202110893147 A CN 202110893147A CN 113347488 B CN113347488 B CN 113347488B
- Authority
- CN
- China
- Prior art keywords
- rendering
- current image
- cache
- image
- target data
- 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
- 238000009877 rendering Methods 0.000 title claims abstract description 245
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000012545 processing Methods 0.000 claims abstract description 48
- 238000004590 computer program Methods 0.000 claims description 24
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 7
- 239000000872 buffer Substances 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44012—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请提供了一种视频渲染方法、装置、设备及存储介质,该方法包括:获取视频流,并对获取的视频流进行解码,得到当前图像;从预设的N个数据缓存中,确定缓存当前图像的目标数据缓存,N为正整数;在检查到目标数据缓存中存在未被渲染的图像时,使用当前图像覆盖目标数据缓存中未被渲染的图像;对目标数据缓存中的当前图像进行渲染。即本申请采用渲染跳过策略,跳过积压的帧数据,转而直接处理最新的帧数据,进而有效降低渲染延时,避免视频卡顿,提高视频的播放流畅性,提升用户体验。另外,为了应对网络抖动连续送来多帧,本申请使用多个数据缓存进行帧数据的缓存,进一步提高了视频的播放效果。
Description
技术领域
本申请实施例涉及图像处理技术领域,尤其涉及一种视频渲染方法、装置、设备及存储介质。
背景技术
随着图像处理技术的发展,实时视频播放技术应用而生,对于云游戏、视频直播、视频会议等实时视频播放应用场景,期望视频内容从服务器发出到本地播放时的延时低于用户可察觉的延时。但是由于网络等原因,视频在实时播放时会出现卡顿,而视频出现卡顿的主要原因在于视频渲染耗时过长。
目前,降低视频渲染耗时的方法是增加额外的渲染线程,使用该单独的渲染线程进行视频渲染。
但是,目前增加渲染线程的方法,无法有效改善视频出现卡顿的问题。
发明内容
本申请提供一种视频渲染方法、装置、设备及存储介质,提高实时视频流播放的流畅性。
第一方面,本申请提供一种视频渲染方法,包括:
获取视频流,并对获取的所述视频流进行解码,得到当前图像;
从预设的N个数据缓存中,确定目标数据缓存,所述N为正整数;
在检查到所述目标数据缓存中存在未被渲染的图像时,使用所述当前图像覆盖所述目标数据缓存中未被渲染的图像;
对所述目标数据缓存中的所述当前图像进行渲染。
第二方面,提供了一种视频渲染装置,包括:
获取单元,用于获取视频流,并对获取的所述视频流进行解码,得到当前图像;
确定单元,用于从预设的N个数据缓存中,确定缓存所述当前图像的目标数据缓存,所述N为正整数;
存储单元,用于在检查到所述目标数据缓存中存在未被渲染的图像时,使用所述当前图像覆盖所述目标数据缓存中未被渲染的图像;
渲染单元,用于对所述目标数据缓存中的所述当前图像进行渲染。
在一些实施例中,确定单元,具体用于根据预设的缓存循环访问次序,从所述N个数据缓存中,确定当前待访问的第一缓存;根据所述第一缓存,确定所述目标数据缓存。
在一些实施例中,确定单元,具体用于在检测到所述第一缓存未被加锁时,将所述第一缓存确定为所述目标数据缓存;或者,在检测到所述第一缓存被加锁时,按照所述缓存循环访问次序,将所述N个数据缓存中位于所述第一缓存之后的第一个未被加锁的数据缓存确定为所述目标数据缓存。
在一些实施例中,渲染单元,具体用于检查所述当前图像是否有效;在检查到所述当前图像有效时,对所述当前图像进行渲染。
在一些实施例中,渲染单元,具体用于在检查到所述当前图像包括第一标签,且所述当前图像的播放时间戳大于前一个被渲染图像的播放时间戳时,确定所述当前图像有效,其中所述第一标签用于指示所述当前图像有效,所述第一标签是在所述当前图像写入所述目标数据缓存时写入的;或者,
在检查到所述当前图像不包括第一标签,或者,所述当前图像的播放时间戳小于或等于所述前一个被渲染图像的播放时间戳时,确定所述当前图像无效。
在一些实施例中,渲染单元,还用于在检查到所述当前图像无效时,根据预设的缓存循环访问次序,确定所述N个数据缓存中位于所述目标数据缓存后的第一个未被加锁的第二缓存;对所述第二缓存中未被渲染的图像进行渲染。
在一些实施例中,渲染单元,还用于在检查到所述目标数据缓存被加锁时,根据预设的缓存循环访问次序,确定所述N个数据缓存中位于所述目标数据缓存后的第一个未被加锁的第二缓存,并对所述第二缓存中未被渲染的图像进行渲染;或者,
在检查到所述目标数据缓存被加锁时,等待所述目标数据缓存被解锁后,对所述目标数据缓存中的所述当前图像进行渲染。
在一些实施例中,确定单元,还用于在确定所述当前图像被渲染结束时,为所述当前图像写入第二标签,所述第二标签用于指示所述当前图像无效。
在一些实施例中,渲染单元,具体用于将所述当前图像从所述目标数据缓存复制到目标渲染缓存中;从所述目标渲染缓存中读取所述当前图像以进行渲染;其中,所述目标渲染缓存为N个渲染缓存中与所述目标数据缓存对应的渲染缓存,所述N个渲染缓存和所述N个数据缓存一一对应,且所述N个渲染缓存和所述N个数据缓存的缓存循环访问次序相同。
在一些实施例中,渲染单元,还用于获取所述当前图像的渲染结束时间和上一次图像渲染结束时间;确定所述当前图像的渲染结束时间和所述上一次图像渲染结束时间之间的时间间隔;在所述时间间隔小于第一时间间隔时,等待第二时间间隔后渲染下一帧图像,其中所述第一时间间隔与所述第二时间间隔之和小于或等于显示设备的垂直同步时间间隔,所述显示设备用于显示渲染后的当前图像。
在一些实施例中,渲染单元,还用于创建渲染线程;通过所述渲染线程对所述目标数据缓存中的所述当前图像进行渲染。
在一些实施例中,确定单元,还用于创建数据处理线程;通过所述数据处理线程对获取的所述视频流进行解码,得到当前图像;且在检查到所述目标数据缓存中存在未被渲染的图像时,通过所述数据处理线程使用所述当前图像覆盖所述目标数据缓存中未被渲染的图像。
第三方面,提供了一种计算设备,包括处理器和存储器。所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行上述第一方面或其各实现方式中的方法。
第四方面,提供了一种芯片,用于实现上述第一方面至第二方面中任一方面或其各实现方式中的方法。具体地,所述芯片包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如上述第一方面中任一方面或其各实现方式中的方法。
第五方面,提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序使得计算机执行上述第一方面中任一方面或其各实现方式中的方法。
第六方面,提供了一种计算机程序产品,包括计算机程序指令,所述计算机程序指令使得计算机执行上述第一方面中任一方面或其各实现方式中的方法。
第七方面,提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面中任一方面或其各实现方式中的方法。
综上,本申请通过获取视频流,并对获取的视频流进行解码,得到当前图像;从预设的N个数据缓存中,确定缓存当前图像的目标数据缓存,N为正整数;在检查到目标数据缓存中存在未被渲染的图像时,使用当前图像覆盖目标数据缓存中未被渲染的图像;对目标数据缓存中的当前图像进行渲染。即本申请实施例采用渲染跳过策略,当计算设备的渲染能力不足以及时处理解码出的帧数据时,会跳过处理积压的帧数据,转而直接处理最新的帧数据,进而有效降低渲染延时,避免视频卡顿,提高视频的播放流畅性,提升用户体验。另外,为了应对网络抖动连续送来多帧,本申请实施例使用多个数据缓存进行帧数据的缓存,相比于现有技术使用单缓存,本申请实施例能有效减少网络抖动导致的渲染跳过现象,进而提高了视频的播放效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的视频渲染系统的示意图;
图2为本申请一实施例提供的视频渲染方法的流程图;
图3为本申请实施例涉及的N个数据缓存的示意图;
图4为本申请实施例涉及的N个数据缓存和N个渲染缓存的示意图;
图5为本申请一实施例提供的视频渲染方法的流程示意图;
图6为本申请一实施例提供的视频渲染方法流程示意图;
图7为本申请实施例涉及的N个数据缓存的另一示意图;
图8是本申请实施例的视频渲染装置的示意性框图;
图9是本申请实施例提供的计算设备的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应理解,在本发明实施例中,“与A对应的B”表示B与A相关联。在一种实现方式中,可以根据A确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。
另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
为了便于理解本申请的实施例,首先对本申请实施例涉及到的相关概念进行如下简单介绍:
渲染:将存储设备中的视频数据显示到显示设备上的过程。
实时视频流播放应用:即视频帧数据的接收与数据的本地处理(解码、颜色转换等)和渲染同时进行,且要求视频帧内容从发送到本地渲染播放的延时用户难以察觉的一类应用,例如云游戏、视频通话、游戏直播等。
需要说明的是,本申请实施例提供的视频渲染方法可以应用于实时视频流播放应用场景,还可以应用于非实时视频流播放应用场景。
图1为本申请一实施例提供的视频渲染系统的示意图。该视频渲染系统可以包括:计算设备110以及服务器120,在一些实施例中,计算设备110可以理解为解码设备。
其中,计算设备110用于执行本申请实施例提供的视频渲染方法的步骤。
计算设备110将渲染后的视频数据发送给显示装置130,使得显示装置130进行显示。
可选的,显示装置130可与计算设备110整合或在计算设备110外部。显示装置130可包括多种显示装置,例如液晶显示器(LCD)、等离子体显示器、有机发光二极管(OLED)显示器或其它类型的显示装置。
在一些实施例中,该显示装置130还可以接收用户的操作指令,并根据用户的操作指令控制渲染后的视频图像进行播放、暂停、结束播放等。
其中,计算设备110包括但不限于智能手机、平板电脑、笔记本电脑、台式计算机、虚拟现实(Virtual Reality,VR)设备、车载设备、可穿戴设备,增强现实(augmentedreality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(selfdriving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smartgrid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smartcity)中的无线终端、智慧家庭(smart home)中的无线终端等。本申请实施例中不做具体限定。
在一些实施例中,服务器120可以用于存储生成视频流的各帧对应的图片素材,并对存储的图片素材进行编码,生成视频流,并将生成的视频流发送计算设备110。
以直播应用场景为例,视频采集设备实时采集视频图像,并将实时采集的视频图像发送给服务器120,服务器120对实时采集的视频图像进行编码,形成视频流,并将生成的视频流通过网络发送给计算设备110,以使计算设备110对视频流进行解码和渲染。
在一些实施例中,服务器120用于存储视频编码设备上传的视频流,并将视频流通过网络发送给计算设备110。
继续以直播应用场景为例,视频采集设备实时采集视频图像,并将实时采集的视频图像进行编码后发送给服务器120,服务器120将视频采集设备生成的视频流通过网络发送给计算设备110,以使计算设备110对视频流进行解码和渲染。
服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,计算设备110可以通过网络与服务器120进行数据传输。
可选的,上述网络可以是通信网络,可选的,通信网络是有线网络或无线网络。
可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是其他网络,例如包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(Extensible MarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet ProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。本申请在此不做限制。
在实时视频播放应用场景,期望视频内容从服务器发出到本地播放时的延时低于用户可察觉的延时。但是由于网络等原因,视频在实时播放时会出现卡顿,而视频出现卡顿的主要原因在于视频渲染耗时过长。
目前,降低视频渲染耗时的方法是增加额外的渲染线程,使用该单独的渲染线程进行视频渲染。即目前的技术方案,为异步渲染,是通过将渲染任务分离出来并行处理,以减少渲染等待时间,但是渲染线程依然会对接收到的所有数据进行渲染。对于实时视频播放应用场景,目前的技术方案,在计算设备的渲染性能不足时依然会出现延时不断累的问题。
为了解决上述技术问题,本申请实施例提供的视频渲染方法,采用渲染跳过策略,当计算设备的渲染能力不足以及时处理解码出的帧数据时,会跳过处理积压的帧数据,转而直接处理最新的帧数据,进而有效降低渲染延时,避免视频卡顿,提高视频的播放流畅性,提升用户体验。
进一步的,为了应对网络抖动连续送来多帧,本申请实施例使用多个数据缓存进行帧数据的缓存,相比于现有技术使用单缓存,本申请实施例可以能有效减少网络抖动导致的渲染跳过现象,进而提高了视频的播放效果。
下面结合具体的实施例,对本申请提供的视频渲染方法进行介绍。需要说明的是,下面各实施例之间可以互相结合。
图2为本申请一实施例提供的视频渲染方法的流程图。如图2所示,本实施例包括:
S201、获取视频流,并对获取的视频流进行解码,得到当前图像。
该方法的执行主体是具有视频渲染功能的装置,例如视频渲染装置,该视频渲染装置可以为上述图1中的计算设备,或者为计算设备中的一部分,例如为计算设备中的处理器。
下面以执行主体为计算设备为例进行说明。
例如图1所示,服务器120通过网络将视频流发送给计算设备,计算设备对接收到的视频流进行解码,得到当前图像。
在一些实施例中,上述视频流可以理解为对视频数据进行编码产生的码流。视频数据可包括一个或多个图像(picture)或图像序列(sequence of pictures)。码流以比特流的形式包含了图像或图像序列的编码信息。编码信息可以包含编码图像数据及相关联数据。相关联数据可包含序列参数集(sequence parameter set,简称SPS)、图像参数集(picture parameter set,简称PPS)及其它语法结构。SPS可含有应用于一个或多个序列的参数。PPS可含有应用于一个或多个图像的参数。语法结构是指码流中以指定次序排列的零个或多个语法元素的集合。
在一些实施例中,计算设备对视频流进行解码,得到当前图像的过程可以包括:计算设备解析视频流得到当前帧中的当前块的预测信息、量化系数矩阵等,基于预测信息对当前块使用帧内预测或帧间预测产生当前块的预测块。接着,使用从视频流中得到的量化系数矩阵,对量化系数矩阵进行反量化、反变换得到残差块。然后,将预测块和残差块相加得到重建块。对当前帧中的其他块进行相同的解码,得到当前帧中每个块的重建块,各重建块组成当前帧的重建图像,可选的,还可以基于图像或基于块对当前帧的重建图像进行环路滤波,得到解码图像,该解码图像记为当前图像。
在一些实施例中,上述当前图像可以是一帧图像。
本申请实施例以对当前图像的渲染过程为例进行说明,视频流中其他图像的渲染过程与当前图像的渲染过程相同,参照当前图像的渲染过程即可。
根据上述方式,解码得到当前图像后,执行以下步骤,对当前图像进行渲染。
S202、从预设的N个数据缓存中,确定缓存当前图像的目标数据缓存。
其中,N为正整数。
在一些实施例中,上述N为大于或等于2的正整数,也就是说,本申请实施例的计算设备包括多个数据缓存。
通常一个缓存中缓存一张图像的数据,在一些应用场景中,由于网络抖动等原因,计算设备在同一时刻可能接收到多张图像的数据,而计算设备在同一时刻无法对多张图像的数据同时进行处理,此时为了防止丢帧或数据卡顿,本申请实施例的计算设备设置N个数据缓存,可以将接收到的多张图像分别存储在这N个数据缓存中,使得计算设备对这N个数据缓存中的图像数据分别进行解码,进而有效缓解了由于网络抖动引起的视频丢帧和渲染跳过的问题,进而提高了视频的播放效果。
图3为本申请实施例涉及的N个数据缓存的示意图,其中图3中示出了N=5,但是本申请实施例的数据缓存的个数包括但不限于5个,例如为3个、4个、7个、8个等,本申请实施例对此不作限制。其中,N个数据缓存中,每一个数据缓存中可以存储一张图像。
本申请实施例对计算设备从图3所示的N个数据缓存中,确定缓存当前图像的目标数据缓存的方式不做限制。
在一种可能的实现方式中,计算设备将这N个数据缓存中的空缓存或者缓存中未存储未渲染的图像的缓存,确定为目标数据缓存。
在一些实施例中,如图3所示,本申请实施例中计算设备根据预设的缓存循环访问次序访问N个数据缓存,图3中的箭头方向为各数据缓存的循环访问次序。在此基础上,上述S202包括:
S202-A1、根据预设的缓存循环访问次序,从N个数据缓存中,确定当前待访问的第一缓存;
S202-A2、根据第一缓存,确定目标数据缓存。
继续参照图3所示,若计算设备在前一次数据处理时,将接收到的图像数据写入数据缓存D中,则根据缓存循环访问次序,计算设备当前待访问的第一缓存为位于数据缓存D后的数据缓存C,这样可以根据该数据缓存C确定目标数据缓存。
在一些实施例中,上述S202-A2中根据第一缓存,确定目标数据缓存的方式包括但不限于如下几种:
方式一,在检测到第一缓存未被加锁时,将该第一缓存确定为目标数据缓存。在实际应用过程中,当线程访问某缓存时,对该缓存进行加锁,待该线程访问结束后,对该缓存进行解锁。因此,本实施例的第一缓存未被加锁可以理解为该第一缓存没有被其他线程访问。
方式二,在检测到第一缓存被加锁时,按照缓存循环访问次序,将N个数据缓存中位于第一缓存之后的第一个未被加锁的数据缓存确定为目标数据缓存。
具体的,计算设备在检测到该第一缓存被其他线程访问时,计算设备无法再访问该第一缓存,此时,为了减少计算设备等待造成的延期,则根据缓存循环访问次序,将N个数据缓存中位于第一缓存之后的第一个未被加锁的数据缓存确定为目标数据缓存。例如,如图3所示,假设第一缓存为数据缓存C,当检查到第一缓存被加锁时,将在缓存循环访问次序上位于数据缓存C之后的第一个未被加锁的数据缓存为数据缓存B,则将数据缓存B确定为目标数据缓存。即本申请实施例,通过设置多个数据缓存,当检查到当前待访问的第一缓存被占用时,不进行不必要的等待,而是渲染其他缓存中的图像,进一步提高了渲染的效率,降低视频卡顿的情况。
根据上述方式,确定出存储当前图像的目标数据缓存后,执行如下步骤S203,将当前图像缓存在该目标数据缓存中。
S203、在检查到目标数据缓存中存在未被渲染的图像时,使用当前图像覆盖目标数据缓存中未被渲染的图像。
根据上述步骤,确定出缓存当前图像的目标数据缓存后,检查该目标数据缓存中是否存在未被渲染的图像,当检查到该目标数据缓存中不存在未被渲染的图像时,将当前图像缓存在该目标数据缓存中。
本步骤对检查目标数据缓存中存在未被渲染的图像的方式不做限制,例如,计算设备将图像渲染结束后,会为该图像写入一个指示渲染完成的标识,这样可以根据图像是否包括该标识来判断该图像是否渲染结束。
当检查到该目数据缓存中存在未被渲染的图像时,说明当前计算设备的数据处理速度比渲染速度快,可能会造成由于视频图像不能及时渲染而出现卡顿。为了解决该技术问题,本申请实施例的计算设备不需要等待目标数据缓存中未被渲染的图像渲染结束后,才将当前图像缓存到该目标数据缓存中,而是直接使用当前图像覆盖未被渲染的图像,使得计算设备跳过对目标数据缓存中未被渲染的图像的渲染,以及时对当前图像进行渲染,进而有效降低实时视频流应用场景中本地播放的延时情况,提升视频播放的流程性,提高用户体验。
S204、对目标数据缓存中的当前图像进行渲染。
在一些实施例中,本申请实施例还包括:在确定当前图像被渲染结束时,为当前图像写入第二标签,该第二标签用于指示当前图像无效,或者用于指示该当前图像已被渲染,防止对该当前图像进行重复渲染。
在一些实施例中,对目标数据缓存中的当前图像进行渲染之前,需要判断该当前图像是否有效。在检查到当前图像有效时,再对该当前图像进行渲染。具体的,上述S204包括:
S204-A1、检查当前图像是否有效;
S204-A2、在检查到当前图像有效时,对当前图像进行渲染。
本申请实施例对检查当前图像是否有效的方式不做限制,例如,检查当前图像是否完整。
在一些实施例中,计算设备从视频流中解码出该当前图像后,为该当前图像写入第一标签,该第一标签用于指示该当前图像有效,或者用于指定该当前图像未被渲染。该第一标签与该当前图像一起存储在目标数据缓存中。
同时,计算设备在解码当前图像时,可以得到当前图像的播放时间戳,该播放时间戳也存储在目标数据缓存中。
基于此,S204-A1中检查当前图像是否有效包括:检查当前图像的标签和当前图像的播放时间戳来判断当前图像是否有效。
在一种可能的实现方式中,在检查到当前图像不包括第一标签时,确定当前图像无效。例如,检查到当前图像包括第二标签,说明当前图像已被渲染,无需再渲染,则确定该当前图像无效。
在一种可能的实现方式中,在检查到当前图像的播放时间戳小于或等于前一个被渲染图像的播放时间戳时,确定当前图像无效。当前图像的播放时间戳小于或等于前一个被渲染图像的播放时间戳,说明当前图像为前一个被渲染图像的前一帧或几帧图像,为过时的视频帧,无需显示,因此,确定该当前图像无效。
在一种可能的实现方式中,在检查到当前图像包括第一标签,且当前图像的播放时间戳大于前一个被渲染图像的播放时间戳时,确定当前图像有效。当前图像的包括第一标签说明该当前图像为被渲染,当前图像的播放时间戳大于前一个被渲染图像的播放时间戳说明,当前图像为前一个被渲染图像的后一帧或后几帧图像,为未被显示的视频帧,需要显示,因此,在检查到当前图像满足上述两个条件时,确定该当前图像有效。
在一些实施例中,在检查到当前图像无效时,本申请实施例还包括:根据预设的缓存循环访问次序,确定N个数据缓存中位于目标数据缓存后的第一个未被加锁的第二缓存;对第二缓存中未被渲染的图像进行渲染。
举例说明,假设目标数据缓存为图3中的数据缓存C,在检查到数据缓存C中的当前图像无效时,计算设备访问数据缓存C的下一个未被加锁的缓存,假设在缓存循环访问次序中位于数据缓存C后的第一个未被加锁的第二缓存为图3中的数据缓存B,将该数据缓存B记为第二缓存,对该第二缓存中未被渲染的图像进行渲染。
需要说明的是,对第二缓存中未被渲染的图像进行渲染之前,需要判断该未被渲染的图像是否有效,判断该未被渲染的图像是否有效的过程与上述判断当前图像是否有效的过程相同。具体是,检查第二缓存中未被渲染的图像包括第一标签,以及检查该未被渲染的图像的播放时间戳大于前一个被渲染图像的播放时间戳,在检查到该未被渲染的图像包括第一标签,且该未被渲染的图像的播放时间戳大于前一个被渲染图像的播放时间戳时,确定该未被渲染的图像有效,在检查到该未被渲染的图像不包括第一标签,或者,该未被渲染的图像的播放时间戳小于或等于前一个被渲染图像的播放时间戳时,确定该未被渲染的图像无效。
在一些实施例中,本申请实施例的计算设备除了包括上述N个数据缓存外,还包括N个渲染缓存,如图4所示,N个数据缓存与N个渲染缓存一一对应,且N个渲染缓存和N个数据缓存的缓存循环访问次序相同,例如,数据缓存A与渲染缓存A对应,数据缓存A中的数据可以复制到渲染缓存A中,数据缓存B与渲染缓存B对应,数据缓存B中的数据可以复制到渲染缓存B中,数据缓存C与渲染缓存C对应,数据缓存C中的数据可以复制到渲染缓存C中,数据缓存D与渲染缓存D对应,数据缓存D中的数据可以复制到渲染缓存D中,数据缓存E与渲染缓存E对应,数据缓存E中的数据可以复制到渲染缓存E中。需要说明的是,图4以N=5为例,但是本申请实施例的渲染缓存和数据缓存的数量包括但不限于5个,例如可以为3个、4个、6个、8个等,本申请实施例对此不做限制。
基于图4所示,上述S204中对目标数据缓存中的当前图像进行渲染,包括如下步骤:
S204-B1、将当前图像从目标数据缓存复制到目标渲染缓存中;
S204-B2、从目标渲染缓存中读取当前图像以进行渲染。
其中,目标渲染缓存为与目标数据缓存对应的渲染缓存,例如图4所示,假设目标数据缓存为数据缓存C,则目标渲染缓存为渲染缓存C。
在一些实施例中,在将当前图像从目标数据缓存复制到目标渲染缓存中之前,检查当前图像是否有效,例如,检查当前图像是否包括第一标签,以及检查当前图像的播放时间戳是否大于前一个被渲染图像的播放时间戳,在检查到当前图像包括第一标签,且当前图像的播放时间戳大于前一个被渲染图像的播放时间戳时,确定当前图像有效。在确定当前图像有效后,将当前图像从目标数据缓存复制到目标渲染缓存中,并从目标渲染缓存中读取当前图像以进行渲染。
在一些实施例中,为了保证视频播放的平滑性,即防止渲染过快,本申请实施例的方法还包括如下步骤:
步骤1、获取当前图像的渲染结束时间和上一次图像渲染结束时间;
步骤2、确定当前图像的渲染结束时间和上一次图像渲染结束时间之间的时间间隔;
步骤3、在时间间隔小于第一时间间隔时,等待第二时间间隔后渲染下一帧图像。
具体是,计算设备在渲染结束当前图像后,获取当前图像的渲染结束时间和上一次图像渲染结束时间,根据当前图像的渲染结束时间和上一次图像渲染结束时间,确定当前图像的渲染结束时间和上一次图像渲染结束时间之间的时间间隔。
接着,将该时间间隔与预设的第一时间间隔进行比较,当该时间间隔小于第一时间间隔时,说明计算设备的渲染速度快与显示设备的垂直同步时间间隔,该垂直同步时间间隔可以理解为显示设备显示两帧图像之间的时间间隔。此时,为了计算设备渲染速度过快,使得显示设备来不及显示而造成显示丢帧的问题,本申请实施例的计算设备等待第二时间间隔后渲染下一帧图像。
可选的,第一时间间隔与第二时间间隔之和小于或等于显示设备的垂直同步时间间隔,显示设备用于显示渲染后的当前图像。例如,第一时间间隔为显示设备的垂直同步时间间隔的三分之二,第二时间间隔为显示设备的垂直同步时间间隔的三分之一,或者,第一时间间隔为显示设备的垂直同步时间间隔的五分之四,第二时间间隔为显示设备的垂直同步时间间隔的五分之一等。本申请实施例对第一时间间隔和第二时间间隔的具体取值不做限制。
本申请实施例提供的视频渲染方法,通过获取视频流,并对获取的视频流进行解码,得到当前图像;从预设的N个数据缓存中,确定缓存当前图像的目标数据缓存,N为正整数;在检查到目标数据缓存中存在未被渲染的图像时,使用当前图像覆盖目标数据缓存中未被渲染的图像;对目标数据缓存中的当前图像进行渲染。即本申请实施例采用渲染跳过策略,当计算设备的渲染能力不足以及时处理解码出的帧数据时,会跳过处理积压的帧数据,转而直接处理最新的帧数据,进而有效降低渲染延时,避免视频卡顿,提高视频的播放流畅性,提升用户体验。另外,为了应对网络抖动连续送来多帧,本申请实施例使用多个数据缓存进行帧数据的缓存,相比于现有技术使用单缓存,本申请实施例可以能有效减少网络抖动导致的渲染跳过现象,进而提高了视频的播放效果。
在一些实施例中,为了进一步提高视频图像的渲染效果,本申请实施例还创建了渲染线程,通过渲染线程对目标数据缓存中的当前图像进行渲染。
在一些实施例中,为了进一步提高视频图像的渲染效果,计算设备创建了数据处理线程,使用数据处理线程对视频流进行数据处理。
本申请实施例中,数据处理线程处理数据的过程与渲染线程渲染图像数据的过程为两个单独的线程。下面结合具体的实施例,对数据处理过程和图像渲染过程分别进行介绍。
首先,结合图5对数据处理线程向数据缓存中写数据的过程进行介绍。
图5为本申请一实施例提供的视频渲染方法的流程示意图,如图5所示,本申请实施例的方法包括:
S501、启动数据处理线程。例如计算设备在接收到视频流时,启动数据处理线程。
S502、通过数据处理线程对获取的视频流进行解码,得到当前图像。
S503、控制数据处理线程根据预设的缓存循环访问次序,从N个数据缓存中,确定当前待访问的第一缓存。
S504、对第一缓存进行加锁。
S505、判断第一缓存加锁是否成功,在判断第一缓存加锁成功时,说明该第一缓存没有被其他线程加锁,数据处理线程可以访问该第一缓存,此时执行如下S506,在判断第一缓存加锁失败时,说明该第一缓存被其他线程加锁,数据处理线程无法访问该第一缓存,此时执行如下S507。
S506、将第一缓存确定为目标数据缓存。
S507、按照缓存循环访问次序,将N个数据缓存中位于第一缓存之后的第一个数据缓存确定为新的第一数据缓存,返回执行S504。
S508、检查目标数据缓存中是否存在未被渲染的图像,在检查到目标数据缓存中存在未被渲染的图像时,执行S509,在检查到目标数据缓存中不存在未被渲染的图像时,执行S510。
S509、使用当前图像覆盖目标数据缓存中未被渲染的图像。
S510、将当前图像存储在目标数据缓存中。
可选的,还可以通过数据处理线程为当前图像写入第一标签,该第一标签用于指示该当前图像有效或指示该当前图像未被渲染。
S511、判断视频流中的图像数据是否处理结束,若否,则返回执行上述S507,若检查到视频流中的图像数据均处理结束,则执行如下S512。
S512、控制数据处理线程结束。
本申请实施例,通过数据处理线程来处理图像数据,以将图像数据的处理过程与图像的渲染过程分开,进一步提高图像的渲染效率。
上文对通过数据处理线程对图像数据处理过程进行介绍,下面对使用渲染线程对图像渲染过程进行介绍。
图6为本申请一实施例提供的视频渲染方法流程示意图,如图6所示,本申请实施例的方法包括:
S601、启动渲染线程。
在一些实施例中,计算设备可以在节点到视频流时,启动渲染线程。或者,在数据处理线程启示时,启动渲染线程。
S602、通过渲染线程对目标数据缓存进行加锁。
在一些实施例中,如图7所示,渲染缓存与数据缓存为同一缓存,即数据处理线程和渲染线程均访问数据缓存。
S603、判断目标数据缓存是否加锁成功,若渲染线程对目标数据缓存加锁成功,说明目标数据缓存没有被其他线程锁死,渲染线程可以访问该目标数据缓存,此时执行如下S605。若渲染线程对目标数据缓存加锁失败,说明目标数据缓存被其他线程锁死,渲染线程无法访问该目标数据缓存,此时执行如下S604。
S604、根据预设的缓存循环访问次序,将N个数据缓存中位于目标数据缓存后的第一个缓存确定为新的目标数据缓存,返回执行如上S602。
S605、判断目标数据缓存中的当前图像是否有效。若判断当前图像有效,则执行如下S606,若判断当前图像无效,则执行如下S604。
S606、通过渲染线程,对当前图像进行渲染。
可选的,通过渲染线程为当前图像写入第二标签,该第二标签用于指定该当前图像无效或用于指定该当前图像已渲染。
可选的,通过渲染线程,记录当前图像的渲染结束时间。
S607、确定当前图像的渲染结束时间和上一次图像渲染结束时间之间的时间间隔。
S608、判断该时间间隔是否小于第一时间间隔,在判断该时间间隔第一时间间隔时,执行如下S609,若判断该时间间隔第一时间间隔时,则执行如下S610。
S609、控制渲染线程等待第二时间间隔后渲染下一帧图像。
S610、控制渲染线程对目标渲染缓进行解锁。
S611、判断视频流中的图像数据是否渲染结束,若否,则返回执行上述S604,若检查到视频流中的图像数据渲染结束时,则执行如下S612。
S612、控制渲染处理线程结束。
本申请实施例以计算设备包括N个数据缓存为例,且数据处理线程和渲染线程均可以访问这N个数据缓存。
在一些实施例中,若计算设备包括N个数据缓存和N个渲染缓存时,数据处理线程访问N个数据缓存,渲染线程访问N个渲染缓存,N个渲染缓存和N个数据缓存一一对应,具体如图4所示,即将数据缓存中的数据复制到对应的渲染缓存中,渲染线程从渲染缓存中读取数据进行渲染,渲染过程与上述实施例的过程一致,仅增加了数据从数据存储复制到渲染缓存的过程。
本申请实施例,通过渲染处理线程来对图像进行渲染,使得图像的渲染与图像的其他处理过程分离,进一步提高图像的渲染效率。
以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。
还应理解,在本申请的各种方法实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文结合图1至图7,详细描述了本申请的方法实施例,下文结合图8至图9,详细描述本申请的装置实施例。
图8是本申请实施例的视频渲染装置的示意性框图。该装置10可以为图1中的计算设备或者为计算设备中的一部分。
如图8所示,视频渲染装置10可包括:
获取单元11,用于获取视频流,并对获取的所述视频流进行解码,得到当前图像;
确定单元12,用于从预设的N个数据缓存中,确定缓存所述当前图像的目标数据缓存,所述N为正整数;
存储单元13,用于在检查到所述目标数据缓存中存在未被渲染的图像时,使用所述当前图像覆盖所述目标数据缓存中未被渲染的图像;
渲染单元14,用于对所述目标数据缓存中的所述当前图像进行渲染。
在一些实施例中,确定单元12,具体用于根据预设的缓存循环访问次序,从所述N个数据缓存中,确定当前待访问的第一缓存;根据所述第一缓存,确定所述目标数据缓存。
在一些实施例中,确定单元12,具体用于在检测到所述第一缓存未被加锁时,将所述第一缓存确定为所述目标数据缓存;或者,在检测到所述第一缓存被加锁时,按照所述缓存循环访问次序,将所述N个数据缓存中位于所述第一缓存之后的第一个未被加锁的数据缓存确定为所述目标数据缓存。
在一些实施例中,渲染单元14,具体用于检查所述当前图像是否有效;在检查到所述当前图像有效时,对所述当前图像进行渲染。
在一些实施例中,渲染单元14,具体用于在检查到所述当前图像包括第一标签,且所述当前图像的播放时间戳大于前一个被渲染图像的播放时间戳时,确定所述当前图像有效,其中所述第一标签用于指示所述当前图像有效,所述第一标签是在所述当前图像写入所述目标数据缓存时写入的;或者,
在检查到所述当前图像不包括第一标签,或者,所述当前图像的播放时间戳小于或等于所述前一个被渲染图像的播放时间戳时,确定所述当前图像无效。
在一些实施例中,渲染单元14,还用于在检查到所述当前图像无效时,根据预设的缓存循环访问次序,确定所述N个数据缓存中位于所述目标数据缓存后的第一个未被加锁的第二缓存;对所述第二缓存中未被渲染的图像进行渲染。
在一些实施例中,渲染单元14,还用于在检查到所述目标数据缓存被加锁时,根据预设的缓存循环访问次序,确定所述N个数据缓存中位于所述目标数据缓存后的第一个未被加锁的第二缓存,并对所述第二缓存中未被渲染的图像进行渲染;或者,
在检查到所述目标数据缓存被加锁时,等待所述目标数据缓存被解锁后,对所述目标数据缓存中的所述当前图像进行渲染。
在一些实施例中,确定单元12,还用于在确定所述当前图像被渲染结束时,为所述当前图像写入第二标签,所述第二标签用于指示所述当前图像无效。
在一些实施例中,渲染单元14,具体用于将所述当前图像从所述目标数据缓存复制到目标渲染缓存中;从所述目标渲染缓存中读取所述当前图像以进行渲染;其中,所述目标渲染缓存为N个渲染缓存中与所述目标数据缓存对应的渲染缓存,所述N个渲染缓存和所述N个数据缓存一一对应,且所述N个渲染缓存和所述N个数据缓存的缓存循环访问次序相同。
在一些实施例中,渲染单元14,还用于获取所述当前图像的渲染结束时间和上一次图像渲染结束时间;确定所述当前图像的渲染结束时间和所述上一次图像渲染结束时间之间的时间间隔;在所述时间间隔小于第一时间间隔时,等待第二时间间隔后渲染下一帧图像,其中所述第一时间间隔与所述第二时间间隔之和小于或等于显示设备的垂直同步时间间隔,所述显示设备用于显示渲染后的当前图像。
在一些实施例中,渲染单元14,还用于创建渲染线程;通过所述渲染线程对所述目标数据缓存中的所述当前图像进行渲染。
在一些实施例中,确定单元12,还用于创建数据处理线程;通过所述数据处理线程对获取的所述视频流进行解码,得到当前图像;且在检查到所述目标数据缓存中存在未被渲染的图像时,通过所述数据处理线程使用所述当前图像覆盖所述目标数据缓存中未被渲染的图像。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图8所示的装置可以执行上述方法的实施例,并且装置中的各个模块的前述和其它操作和/或功能分别为了实现计算设备对应的方法实施例,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图9是本申请实施例提供的计算设备的示意性框图,图9的计算设备可以为上述图1所示的计算设备,用于执行上述方法实施例。
如图9所示,该计算设备30可包括:
存储器31和处理器32,该存储器31用于存储计算机程序33,并将该程序代码33传输给该处理器32。换言之,该处理器32可以从存储器31中调用并运行计算机程序33,以实现本申请实施例中的方法。
例如,该处理器32可用于根据该计算机程序33中的指令执行上述方法步骤。
在本申请的一些实施例中,该处理器32可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器31包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序33可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器31中,并由该处理器32执行,以完成本申请提供的录制页面的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序33在该计算设备中的执行过程。
如图9所示,该计算设备30还可包括:
收发器34,该收发器34可连接至该处理器32或存储器31。
其中,处理器32可以控制该收发器34与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器34可以包括发射机和接收机。收发器34还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该计算设备30中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
根据本申请的一个方面,提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
根据本申请的另一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算设备执行上述方法实施例的方法。
换言之,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。
Claims (14)
1.一种视频渲染方法,其特征在于,包括:
获取视频流,并对获取的所述视频流进行解码,得到当前图像;
从预设的N个数据缓存中,确定目标数据缓存,所述N为正整数;
在检查到所述目标数据缓存中存在未被渲染的图像时,使用所述当前图像覆盖所述目标数据缓存中未被渲染的图像;
对所述目标数据缓存中的所述当前图像进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述从预设的N个数据缓存中,确定目标数据缓存,包括:
根据预设的缓存循环访问次序,从所述N个数据缓存中,确定当前待访问的第一缓存;
根据所述第一缓存,确定所述目标数据缓存。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一缓存,确定所述目标数据缓存,包括:
在检测到所述第一缓存未被加锁时,将所述第一缓存确定为所述目标数据缓存;或者,
在检测到所述第一缓存被加锁时,按照所述缓存循环访问次序,将所述N个数据缓存中位于所述第一缓存之后的第一个未被加锁的数据缓存确定为所述目标数据缓存。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述对所述目标数据缓存中的所述当前图像进行渲染,包括:
检查所述当前图像是否有效;
在检查到所述当前图像有效时,对所述当前图像进行渲染。
5.根据权利要求4所述的方法,其特征在于,所述检查所述当前图像是否有效,包括:
在检查到所述当前图像包括第一标签,且所述当前图像的播放时间戳大于前一个被渲染图像的播放时间戳时,确定所述当前图像有效,其中所述第一标签用于指示所述当前图像有效,所述第一标签是在所述当前图像写入所述目标数据缓存时写入的;或者,
在检查到所述当前图像不包括第一标签,或者,所述当前图像的播放时间戳小于或等于所述前一个被渲染图像的播放时间戳时,确定所述当前图像无效。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在检查到所述当前图像无效时,根据预设的缓存循环访问次序,确定所述N个数据缓存中位于所述目标数据缓存后的第一个未被加锁的第二缓存;
对所述第二缓存中未被渲染的图像进行渲染。
7.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
在确定所述当前图像被渲染结束时,为所述当前图像写入第二标签,所述第二标签用于指示所述当前图像无效。
8.根据权利要求1-3任一项所述的方法,其特征在于,所述对所述目标数据缓存中的所述当前图像进行渲染,包括:
将所述当前图像从所述目标数据缓存复制到目标渲染缓存中;
从所述目标渲染缓存中读取所述当前图像以进行渲染;
其中,所述目标渲染缓存为N个渲染缓存中与所述目标数据缓存对应的渲染缓存,所述N个渲染缓存和所述N个数据缓存一一对应,且所述N个渲染缓存和所述N个数据缓存的缓存循环访问次序相同。
9.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
获取所述当前图像的渲染结束时间和上一次图像渲染结束时间;
确定所述当前图像的渲染结束时间和所述上一次图像渲染结束时间之间的时间间隔;
在所述时间间隔小于第一时间间隔时,等待第二时间间隔后渲染下一帧图像,其中所述第一时间间隔与所述第二时间间隔之和小于或等于显示设备的垂直同步时间间隔,所述显示设备用于显示渲染后的当前图像。
10.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
创建渲染线程;
所述对所述目标数据缓存中的所述当前图像进行渲染,包括:
通过所述渲染线程对所述目标数据缓存中的所述当前图像进行渲染。
11.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
创建数据处理线程;
所述对获取的所述视频流进行解码,得到当前图像,包括:通过所述数据处理线程对获取的所述视频流进行解码,得到当前图像;
所述在检查到所述目标数据缓存中存在未被渲染的图像时,使用所述当前图像覆盖所述目标数据缓存中未被渲染的图像,包括:在检查到所述目标数据缓存中存在未被渲染的图像时,通过所述数据处理线程使用所述当前图像覆盖所述目标数据缓存中未被渲染的图像。
12.一种视频渲染装置,其特征在于,包括:
获取单元,用于获取视频流,并对获取的所述视频流进行解码,得到当前图像;
确定单元,用于从预设的N个数据缓存中,确定缓存所述当前图像的目标数据缓存,所述N为正整数;
存储单元,用于在检查到所述目标数据缓存中存在未被渲染的图像时,使用所述当前图像覆盖所述目标数据缓存中未被渲染的图像;
渲染单元,用于对所述目标数据缓存中的所述当前图像进行渲染。
13.一种计算设备,其特征在于,包括处理器和存储器;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序以实现如上述权利要求1至11任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如上述权利要求1至11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110893147.8A CN113347488B (zh) | 2021-08-04 | 2021-08-04 | 视频渲染方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110893147.8A CN113347488B (zh) | 2021-08-04 | 2021-08-04 | 视频渲染方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113347488A CN113347488A (zh) | 2021-09-03 |
CN113347488B true CN113347488B (zh) | 2021-11-19 |
Family
ID=77480707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110893147.8A Active CN113347488B (zh) | 2021-08-04 | 2021-08-04 | 视频渲染方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113347488B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113506298A (zh) * | 2021-09-10 | 2021-10-15 | 北京市商汤科技开发有限公司 | 图像检测与渲染方法及装置、设备、存储介质 |
CN113965768B (zh) * | 2021-09-10 | 2024-01-02 | 北京达佳互联信息技术有限公司 | 直播间信息展示方法、装置、电子设备及服务器 |
CN115190347B (zh) * | 2022-05-31 | 2024-01-02 | 北京达佳互联信息技术有限公司 | 消息处理方法、消息处理装置、电子设备和存储介质 |
CN115209216A (zh) * | 2022-06-22 | 2022-10-18 | 浙江宇视科技有限公司 | 视频的播放方法、装置及电子设备 |
CN115550690B (zh) * | 2022-12-02 | 2023-04-14 | 腾讯科技(深圳)有限公司 | 帧率调整方法、装置、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140104493A1 (en) * | 2012-10-11 | 2014-04-17 | Tangome, Inc. | Proactive video frame dropping for hardware and network variance |
GB2509313A (en) * | 2012-12-27 | 2014-07-02 | Barco Nv | Managing a queue of video frames using the current queue fill level |
KR101668283B1 (ko) * | 2014-02-06 | 2016-10-24 | 엔트릭스 주식회사 | 레이턴시를 고려한 영상 출력 방법, 이를 수행하는 장치 및 클라우드 스트리밍 서비스 시스템 |
CN105163081B (zh) * | 2015-09-02 | 2018-06-15 | 广东建设职业技术学院 | 一种基于异步渲染的实物展示方法及系统 |
CN106131565B (zh) * | 2015-12-29 | 2020-05-01 | 苏州踪视通信息技术有限公司 | 使用联合抖动-帧缓冲区的视频解码及渲染 |
CN110740380A (zh) * | 2019-10-16 | 2020-01-31 | 腾讯科技(深圳)有限公司 | 视频处理方法和装置、存储介质及电子装置 |
CN111641858A (zh) * | 2020-04-29 | 2020-09-08 | 上海推乐信息技术服务有限公司 | 一种音视频同步方法及系统 |
-
2021
- 2021-08-04 CN CN202110893147.8A patent/CN113347488B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113347488A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113347488B (zh) | 视频渲染方法、装置、设备及存储介质 | |
US10979663B2 (en) | Methods and apparatuses for image processing to optimize image resolution and for optimizing video streaming bandwidth for VR videos | |
CN105830047B (zh) | 上传和转码媒体文件 | |
US11632580B2 (en) | Systems and methods for multi-video stream transmission | |
EP3267331B1 (en) | Method and apparatus for cloud streaming service | |
US20140333641A1 (en) | System and method for forwarding a graphics command stream | |
JP6399125B2 (ja) | 符号化装置及び符号化方法 | |
GB2560548A (en) | Video data processing system | |
EP2798845B1 (en) | Dynamic insertion of synchronization predicted video frames | |
US20140333640A1 (en) | System and method for forwarding a graphics command stream | |
US20190089966A1 (en) | Efficient frame loss recovery and reconstruction in dyadic hierarchy based coding | |
US11838602B2 (en) | MPD chaining in a live CMAF/DASH player using W3C media source and encrypted extensions | |
CN115866245A (zh) | 视频编码方法、装置、计算机设备和存储介质 | |
US20140333639A1 (en) | System and method for forwarding a graphics command stream | |
CN115767149A (zh) | 一种视频数据的传输方法和装置 | |
EP2804094A1 (en) | A system and method for forwarding a graphics command stream | |
US9451288B2 (en) | Inferred key frames for fast initiation of video coding sessions | |
EP2804095A1 (en) | A system and method for forwarding a graphics command stream | |
CN106534137B (zh) | 媒体流传输方法及装置 | |
US11973820B2 (en) | Method and apparatus for mpeg dash to support preroll and midroll content during media playback | |
US11588870B2 (en) | W3C media extensions for processing DASH and CMAF inband events along with media using process@append and process@play mode | |
US20130287100A1 (en) | Mechanism for facilitating cost-efficient and low-latency encoding of video streams | |
US11799943B2 (en) | Method and apparatus for supporting preroll and midroll during media streaming and playback | |
EP3989566A1 (en) | Motion information list construction method in video encoding and decoding, device, and apparatus | |
US10863179B1 (en) | Overlapped rate control for high-quality segmented video encoding |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40051855 Country of ref document: HK |