CN113663328B - 画面录制方法、装置、计算机设备及存储介质 - Google Patents

画面录制方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN113663328B
CN113663328B CN202110979365.3A CN202110979365A CN113663328B CN 113663328 B CN113663328 B CN 113663328B CN 202110979365 A CN202110979365 A CN 202110979365A CN 113663328 B CN113663328 B CN 113663328B
Authority
CN
China
Prior art keywords
picture
data
target
recording
application
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
Application number
CN202110979365.3A
Other languages
English (en)
Other versions
CN113663328A (zh
Inventor
叶海强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110979365.3A priority Critical patent/CN113663328B/zh
Publication of CN113663328A publication Critical patent/CN113663328A/zh
Application granted granted Critical
Publication of CN113663328B publication Critical patent/CN113663328B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/02Non-photorealistic rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/30Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by output arrangements for receiving control signals generated by the game device
    • A63F2300/308Details of the user interface
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请公开一种画面录制方法、装置、计算机设备及存储介质,方法包括:调用目标应用的处理引擎,在画面绘制内存区域中绘制目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示所述当前应用画面;若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据;利用所述处理引擎的引擎特性,将所述录制画面数据复制至图形处理器内的目标纹理贴图中;将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,使所述硬编码器根据获取到的数据,渲染出所述当前应用画面的录制画面。本申请可提升画面录制的通用性和录制效率,以及提升应用的显示流畅度。

Description

画面录制方法、装置、计算机设备及存储介质
技术领域
本申请涉及互联网技术领域,具体涉及图像处理技术领域,尤其涉及一种画面录制方法、装置、计算机设备及存储介质。
背景技术
随着互联网技术的不断发展,应用为用户所呈现的应用画面越来越多样化;在用户使用应用的过程中,可能存在对应用所呈现的应用画面进行画面录制的需求。目前,当存在画面录制需求时,通常是通过系统录制方式来得到应用所呈现的当前应用画面的录制画面的;所谓的系统录制方式是指:调用操作系统的系统接口对整个当前应用画面进行录制的方式。经实践表明,在通过系统录制方式进行画面录制时,通常会不停地弹出权限框以获取相关权限,这样不仅会导致应用的显示卡顿,还会使得画面录制的通用性较低。基于此,如何较好地对应用的应用画面进行画面录制成为了研究热点。
发明内容
本申请实施例提供了一种画面录制方法、装置、计算机设备及存储介质,提升画面录制的通用性和录制效率,以及提升应用的显示流畅度。
一方面,本申请实施例提供了一种画面录制方法,所述方法包括:
调用目标应用的处理引擎,在画面绘制内存区域中绘制所述目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示所述当前应用画面;
若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据;
利用所述处理引擎的引擎特性,将所述录制画面数据复制至图形处理器内的目标纹理贴图中;
将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,使所述硬编码器根据获取到的数据,渲染出所述当前应用画面的录制画面。
另一方面,本申请实施例提供了一种画面录制装置,所述装置包括:
绘制单元,用于调用目标应用的处理引擎,在画面绘制内存区域中绘制所述目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示所述当前应用画面;
录制单元,用于若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据;
所述录制单元,还用于利用所述处理引擎的引擎特性,将所述录制画面数据复制至图形处理器内的目标纹理贴图中;
所述录制单元,还用于将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,使所述硬编码器根据获取到的数据,渲染出所述当前应用画面的录制画面。
另一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括输入接口和输出接口,所述计算机设备还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如下步骤:
调用目标应用的处理引擎,在画面绘制内存区域中绘制所述目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示所述当前应用画面;
若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据;
利用所述处理引擎的引擎特性,将所述录制画面数据复制至图形处理器内的目标纹理贴图中;
将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,使所述硬编码器根据获取到的数据,渲染出所述当前应用画面的录制画面。
另一方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如下步骤:
调用目标应用的处理引擎,在画面绘制内存区域中绘制所述目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示所述当前应用画面;
若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据;
利用所述处理引擎的引擎特性,将所述录制画面数据复制至图形处理器内的目标纹理贴图中;
将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,使所述硬编码器根据获取到的数据,渲染出所述当前应用画面的录制画面。
另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,所述计算机程序产品或所述计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取所述计算机指令,处理器执行所述计算机指令,使得所述计算机设备执行上述所提及的画面录制方法。
本申请实施例通过调用目标应用的处理引擎在画面绘制内存区域中绘制目标应用的当前应用画面,并根据绘制得到的当前画面数据显示当前应用画面;使得当需对当前应用画面进行录制时,可直接从画面绘制内存区域内的当前画面数据中确定当前应用画面的录制画面数据,这样可有效减少录制画面数据的获取时长,提升画面录制的效率。然后,可利用处理引擎的引擎特性,将录制画面数据复制至图形处理器内的目标纹理贴图中,并将目标纹理贴图中的录制画面数据拷贝至图形处理器中的硬编码器中,由硬编码器根据获取到的数据渲染出当前应用画面的录制画面。通过目标纹理贴图来承载录制画面数据的方式,可使得画面绘制内存区域和硬编码器相互独立,从而使得目标应用的处理引擎无需等待硬编码器成功渲染得到当前应用画面的录制画面后,再在画面绘制内存区域中重新绘制下一帧应用画面,可避免目标应用的显示卡顿,从而提升目标应用的应用画面的显示流畅度。并且,由于目标纹理贴图和硬编码器均位于图形处理器中,这样可使得整个画面录制过程均在图形处理器中执行,可有效缩短数据拷贝所需的时长,从而进一步提升画面录制的效率。另外,由于本申请实施例是通过借助处理引擎的引擎特性来实现数据拷贝,从而实现生成录制画面的;因此整个画面录制过程无需使用系统接口,也无需获取系统权限,可有效提升画面录制的通用性。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种计算机设备中的目标应用和底层硬件部分进行通信的示意图;
图1b是本申请实施例提供的一种画面录制方案的流程示意图;
图2是本申请实施例提供的一种画面录制方法的流程示意图;
图3a是本申请实施例提供的一种当前应用界面的示意图;
图3b是本申请实施例提供的一种通过终端的各个显示层显示当前应用界面的原理示意图;
图3c是本申请实施例提供的一种录制画面和当前应用画面的对比示意图;
图3d是本申请实施例提供的另一种录制画面和当前应用画面的对比示意图;
图3e是本申请实施例提供的一种区块链的结构示意图;
图4是本申请另一实施例提供的一种画面录制方法的流程示意图;
图5a是本申请实施例提供得到一种配置界面的示意图;
图5b是本申请实施例提供的一种游戏引擎将纹理标识传递至渲染引擎的示意图;
图5c是本申请另一实施例提供的一种画面录制方法的流程示意图;
图6是本申请实施例提供的一种画面录制装置的结构示意图;
图7是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请实施例中,后续所提及的目标应用可以是依托计算机设备所运行的任一应用程序,所谓的应用程序可理解成是完成某项或多项特定工作的计算机程序。此处所提及的计算机设备可以是终端或服务器,对此不作限定。其中,终端可以包括但不限于:智能手机、平板电脑、笔记本电脑、台式计算机、智能手表、智能电视,等等;服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、及大数据和人工智能平台等基础云计算服务的云服务器,等等。另外,该计算机设备可以位于区块链网络外,也可以位于区块链网络内,对此不作限定;所谓的区块链网络是一种由点对点网络(P2P网络)和区块链所构成的网络,而区块链则是指一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,其本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块(或称为区块)。当计算机设备位于区块链网络内,或者与区块链网络存在通信连接时,计算机设备可将内部数据上传至区块链网络的区块链中进行存储,以防止计算机设备的内部数据被篡改,从而提升内部数据的安全性。
具体的,从应用程序的运行方式的角度看,后续所提及的目标应用可以是以下任一种:云应用、APP(application,客户端)、轻应用、网页应用,等等。所谓的云应用是指:在云端服务器中安装并运行的应用程序;所谓的APP是指:在终端中安装并运行的应用程序;所谓的轻应用是指:无需下载、即搜即用的全功能的Quick App(快应用),其通常作为子程序运行于其他客户端中;所谓的网页应用是指:支持在浏览器APP所显示的网页中打开,从而运行的应用程序。从应用程序的应用业务的角度看,后续所提及的目标应用可以是以下任一种:游戏应用、浏览器应用、视频应用、社交应用,等等。所谓的游戏应用是指:为用户提供游戏业务以支持用户游玩游戏的应用程序;所谓的浏览器应用是指:为用户提供网页浏览业务以支持用户浏览网页的应用程序;所谓的视频应用是指:为用户提供视频播放业务以支持用户观看视频的应用程序;所谓的社交应用是指:为用户提供社交业务以支持用户之间进行社交的应用程序。
基于上述描述可见,综合应用程序的运行方式的角度和应用业务的角度看,目标应用可以是各式各样的应用程序。例如,如果从应用程序的运行方式的角度来看,目标应用为APP,且从应用程序的应用业务的角度来看,目标应用为游戏应用;那么,目标应用可以是任一普通游戏应用,所谓的普通游戏应用是指在终端中安装并运行的游戏应用。又如,如果从应用程序的运行方式的角度来看,目标应用为云应用,且从应用程序的应用业务的角度来看,目标应用为游戏应用;那么,目标应用可理解成,该目标应用可理解成是任一云游戏应用,所谓的云游戏是指在云游戏服务器中运行的游戏。也就是说,云游戏并不在用户设备中运行,而是在游戏服务器中运行;游戏服务器可将云游戏中的游戏画面、游戏音频压缩编码为媒体流,然后通过网络将媒体流传输给用户设备进行图像显示和音频播放。当用户在游戏界面中执行各种操作时,用户设备可将这些操作产生的操作数据上报给游戏服务器,由游戏服务器在对应的云游戏中根据操作数据而刷新云游戏的游戏画面,再将刷新后的游戏画面返回至用户设备中进行显示,以实现云游戏的游玩。可见,云游戏以云计算技术为基础,云计算技术为云游戏提供强大的图形处理能力与数据运算能力。
在具体实现中,本申请实施例中的目标应用可与计算机设备的底层硬件部分进行通信,如图1a所示。其中,该底层硬件部分可包括但不限于:中央处理器(CentralProcessing Unit,CPU)、GPU(Graphics Processing Unit,图形处理器)、网络通信模块、本地空间(即存储空间),等等;进一步的,该GPU中可包括但不限于:硬编码器(用于图像信号编码的编码器)、渲染引擎(用于渲染图像的引擎),等等。另外,本申请实施例中的目标应用可具有一个处理引擎,该处理引擎是指为了提升应用开发效率的一系列工作套件,用于管理目标应用的画面表现和交互逻辑。从本质上讲,该处理引擎是一个为运行目标应用的设备所设计的、能够被该设备识别的代码(指令)集合;也就是说,目标应用的处理引擎可理解成一个发动机,主要负责控制着目标应用的运行。例如,当目标应用为游戏应用时,该处理引擎可以是游戏引擎(unity);又如,当目标应用为浏览器应用时,该处理引擎可以是浏览器引擎;再如,当目标应用为视频应用时,该处理引擎可以是视频引擎,等等。
为了实现对目标应用进行画面录制,本申请实施例提出了一种基于处理引擎的画面录制方案;该画面录制方案可由目标应用的处理引擎执行,也可以由目标应用执行,还可以由目标应用所处的计算机设备执行,对此不作限定。下面以目标应用的处理引擎执行该画面录制方案为例,对本申请实施例所提出的画面录制方案进行说明;参见图1b所示,该画面录制方案的大致原理如下:
目标应用的处理引擎可在GPU中设定一个画面绘制内存区域,所谓的画面绘制内存区域是指:用于绘制应用画面的内存区域;其可以是一个物理内存区域,也可以是一个虚拟内存区域,对此不作限定。并且,处理引擎还可在GPU中生成一个目标纹理贴图,该目标纹理贴图可理解成一个用于缓存画面数据的对象。在目标应用的运行过程中,处理引擎可在该画面绘制内存区域中绘制目标应用需显示的当前应用画面,得到当前应用画面的当前画面数据,并基于该当前画面数据在终端屏幕中显示该当前应用画面。当需录制当前应用画面时,处理引擎便可将当前画面数据中的全部或部分数据作为录制画面数据,并利用其内部的数据复制函数将该录制画面数据复制至目标纹理贴图中;然后,再将目标纹理贴图中的录制画面数据拷贝至CPU内的硬编码器中,使硬编码器根据获取到的数据,渲染出当前应用画面的录制画面。
经实践表明,本申请实施例所提出的画面录制方案可具有如下有益效果:①通过直接从当前画面数据中确定录制画面数据,可有效减少录制画面数据的获取时长,提升画面录制的效率。②通过目标纹理贴图来承载录制画面数据的方式,可使得画面绘制内存区域和硬编码器相互独立,从而使得处理引擎无需等待硬编码器成功渲染得到当前应用画面的录制画面后,再在画面绘制内存区域中重新绘制下一帧应用画面,可避免目标应用的显示卡顿,从而提升目标应用的应用画面的显示流畅度。③由于目标纹理贴图和硬编码器均位于GPU中,这样可使得整个画面录制过程均在GPU中执行,可有效缩短数据拷贝所需的时长,从而进一步提升画面录制的效率。④通过借助处理引擎的引擎特性(即数据复制函数)来实现数据复制,从而实现生成录制画面,可使得整个画面录制过程无需使用系统接口,也无需获取系统权限,可有效提升画面录制的通用性。
基于上述画面录制方案的描述,本申请实施例提出一种画面录制方法。该画面录制方法可以由上述所提及的计算机设备、或目标应用、或目标应用的处理引擎执行;为便于阐述,后续均以计算机设备执行该画面录制方法为例进行说明。请参见图2,该画面录制方法可包括以下步骤S201-S204:
S201,调用目标应用的处理引擎,在画面绘制内存区域中绘制目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示当前应用画面。
其中,当前应用画面是指目标应用即将显示的应用画面,即目标应用需显示的最近的一帧应用画面。例如,目标应用在运行过程中,已经显示了3帧应用画面,那么由于目标应用需显示的最近的一帧应用画面为第4帧应用画面,即第4帧应用画面是目标应用即将显示的应用画面;因此,目标应用需显示的当前应用画面则为第4帧应用画面。应理解的是,当前应用画面的类别取决于目标应用的类别;例如,当目标应用为游戏应用时,当前应用画面为游戏画面;又如,当目标应用为浏览器应用时,当前应用画面为浏览器画面,等等。
进一步的,目标应用的当前应用界面可包括一个或多个画面内容;以目标应用为游戏应用,当前应用画面为游戏画面为例,当前应用界面可包括UI控件(或称为操作组件)和场景画面这两个画面内容。所谓的UI控件是指:用户可操作的用于控制游戏中的游戏角色的组件;例如,UI控件可以包括:控制游戏角色移动的移动组件(如向左移动的左移组件、向右移动的右移组件等);又如,UI控件可以包括:控制游戏角色释放技能的技能释放组件,等等。所谓的场景画面是指:用于呈现目标应用的游戏场景的画面;例如,若目标应用的当前游戏场景为游戏中的两个游戏角色进行赛车比赛的场景,则用于呈现该当前游戏场景的各个场景画面可参见图3a中的上侧图所示。那么,若设当前应用界面包括的场景画面为第一帧场景画面,且设UI控件包括左移组件30、右移组件31以及控制游戏角色漂移的漂移组件32,则当前应用界面的示意图可参见图3a中的下侧图所示。
需要说明的是,终端屏幕可包括多层显示层;例如,参见图3b所示,终端屏幕可包括:用于显示UI控件的UI控件显示层、用于显示场景画面的场景画面显示层等显示层。在当前应用界面包括多个画面内容的情况下,该多个画面内容可以位于同一个层级,也可以位于不同的层级,对此不作限定;任一画面内容的层级用于指示该任一画面内容所处的显示层,层级越低表明该任一画面内容所处的显示层越靠近顶层。例如,承接图3a所示的当前应用画面,由于终端屏幕中的UI控件显示层为第2层,场景画面显示层为第1层(即顶层),因此该当前应用画面中的场景画面的层级为2,当前应用画面中的UI控件的层级为1,那么通过终端屏幕中的各个显示层显示当前应用画面的原理图可如图3b所示。
可见,当前应用画面可包括一个层级的画面内容,也可以包括N(N为大于1的整数)个层级的画面内容;若当前应用画面包括N个层级的画面内容,则目标应用包括N个相机,一个层级的画面内容通过一个相机进行显示。其中,相机是指将画面内容显示至终端屏幕中的显示层的组件;N个相机中的每个相机均具有深度值,且任一相机的深度值与该任一相机所负责的画面内容的层级成反比。例如,仍以目标应用为游戏应用为例,该游戏应用包括UI相机和场景相机等两个相机;UI相机是指负责显示UI控件的相机,场景相机是指负责显示场景画面的相机。由于UI控件的层级小于场景相机的层级,因此UI相机的深度值可大于场景相机的深度值,如UI相机的深度值可以为10,场景相机的深度值可以为0,等等。
应理解的是,本申请实施例只是通过图3b示例性地说明终端屏幕的结构,并不对此进行限定。例如,上述图3b是以UI控件显示层位于场景画面显示层的上方为例进行说明的;但在实际应用中,UI控件显示层也可位于场景画面显示层的下方。又如,上述图3b只示例性地表征了UI控件显示层和场景画面显示层两个显示层;但在实际应用中,终端屏幕除了可包括UI控件显示层以及场景画面显示层以外,还可包括其他的显示层,如用于显示弹幕信息的弹幕显示层。那么此情况下,可以是弹幕显示层可以位于顶层,UI控件显示层位于第二层,场景画面显示层位于第三层;或者,也可以是UI控件显示层可以位于顶层,弹幕显示层位于第二层,场景画面显示层位于第三层,等等。
S202,若需对当前应用画面进行录制,则从画面绘制内存区域内的当前画面数据中,确定当前应用画面的录制画面数据。
在具体实现中,计算机设备检测当前应用画面是否满足录制条件;若满足,则可确定需对当前应用画面进行录制,若不满足,则可确定无需对当前应用画面进行录制。具体的,计算机设备可为用户提供两种录制方式:一种是自由录制方式,另一种是精彩时刻录制方式。所谓的自由录制方式是指:在检测到用户针对应用画面输入的确认录制操作后,录制该应用画面的方式;所谓的精彩时刻录制方式是指:在检测到应用画面为精彩画面后,录制该应用画面的方式。那么,用户可从这两种录制方式中选择一个录制方式,从而使得计算机设备采用用户所采用的录制方式进行画面录制;随着用户所选择的录制方式的不同,计算机设备检测当前应用画面是否满足录制条件的方式也随之不同,具体参见下述描述:
若用户选择的录制方式为自由录制方式,则检测当前应用画面是否满足录制条件的实施方式可以是:在显示当前应用画面时,在终端屏幕中输出录制询问信息,以询问用户是否对当前应用画面进行录制。若检测到用户针对该录制询问信息的确认操作,则可确定当前应用画面满足录制条件;若未检测到用户针对该录制询问信息的确认操作,则确定当前应用画面不满足录制条件。
若用户选择的录制方式为精彩时刻录制方式,则检测当前应用画面是否满足录制条件的一种实施方式可以是:根据当前应用画面的画面内容,检测当前应用画面是否为精彩画面;若检测到当前应用画面为精彩画面,则可确定当前应用画面满足录制条件;若检测到当前应用画面不为精彩画面,则可确定当前应用画面不满足录制条件。需说明的是,本申请实施例对如何检测当前应用画面是否为精彩画面的具体实施方式不作限定;举例说明,设目标应用为游戏应用,且精彩画面为五杀画面(五杀是指在角色击杀游戏中,一人在短时间内连续击杀对方五人);那么,计算机设备可根据当前应用画面是否包括五杀标记元素,来确定当前应用画面是否为五杀画面。
在通过上述任一种方式确定需对当前应用画面进行录制后,计算机设备便可调用目标应用的处理引擎,从画面绘制内存区域内的当前画面数据中,确定当前应用画面的录制画面数据。在一种实施方式中,若当前应用画面只包括一个层级的画面内容,则计算机设备可将画面绘制内存区域内的当前画面数据,直接确定为当前应用画面的录制画面数据。另一种实施方式中,若当前应用画面包括N个层级的画面内容,则当前画面数据中包括每个层级的画面内容对应的画面数据;在此情况下,计算机设备可根据目标应用的画面录制策略,从画面绘制内存区域内的当前画面数据中,选取一个或多个层级的画面内容对应的画面数据,作为当前应用画面的录制画面数据。
其中,画面录制策略可根据业务需求或者经验值设置,其具体用于指示需录制的画面内容。例如,设当前应用画面包括2个层级的画面内容:场景画面(层级为第2级)和UI控件(层级为第1级),当前画面数据便包括:场景画面的画面数据和UI控件的画面数据。若目标应用的画面录制策略指示:需录制的画面内容为场景画面,则可将当前画面数据中的场景画面的画面数据作为录制画面数据;若目标应用的画面录制策略指示:需录制的画面内容包括场景画面和UI控件,则可将当前画面数据中的场景画面的画面数据和UI控件的画面数据,均作为录制画面数据。可见,通过此实施方式可实现定制录制当前应用界面中的不同层级的画面内容,有效提升画面录制的灵活性。
S203,利用处理引擎的引擎特性,将录制画面数据复制至图形处理器内的目标纹理贴图中。
其中,处理引擎的引擎特性可包括:处理引擎中的数据复制函数;所谓的数据复制函数是指:可将数据从画面绘制内存区域复制至目标纹理贴图中的任一函数。例如,处理引擎为游戏应用的unity(游戏引擎)时,该数据复制函数可以是Graphics.Blit函数或者Graphics.ExecuteCommandBuffer函数,等等。也就是说,步骤S203的本质是:调用处理引擎中的数据复制函数,将录制画面数据复制至图形处理器内的目标纹理贴图中。在具体实现中,计算机设备在确定待调用的数据复制函数后,可通过待调用的数据复制函数所对应的接口,实现数据复制函数的调用。例如,若待调用的数据复制函数为Graphics.Blit函数,则可通过unity中的blit接口来调用Graphics.Blit函数,将录制画面数据复制至图形处理器内的目标纹理贴图中。
需要说明的是,本申请实施例可预先在图形处理器中生成一个纹理贴图;在此情况下,本申请实施例所提及的目标纹理贴图便是这一个纹理贴图。进一步的,考虑到后续的数据拷贝以及渲染等操作需要消耗一定的时长;由于处理引擎是实时绘制应用画面的,即画面绘制内存区域中的画面数据是实时更新的,那么当数据拷贝和渲染等操作所消耗的时长较长时,则可能导致在生成当前应用画面(假设第1帧应用画面)的录制画面后,再一次执行图2所示的流程时,因画面绘制内存区域中的画面数据并不是第2帧应用画面的画面数据,而是第5帧应用画面的画面数据,而导致无法生成第2帧-第4帧应用画面的录制画面,从而导致录制得到的录制画面的帧数不足。基于此,为避免出现此情况,本申请实施例可预先在图形处理器中生成至少两个纹理贴图,通过交替使用各个纹理贴图来实现画面录制,提升画面录制的效果;在此情况下,本申请实施例所提及的目标纹理贴图可以是至少两个纹理贴图中处于空闲状态的纹理贴图。
S204,将目标纹理贴图中的录制画面数据,拷贝至图形处理器中的硬编码器中,使硬编码器根据获取到的数据,渲染出当前应用画面的录制画面。
基于步骤S202的相关描述可知,录制画面数据可以是当前画面数据的全部画面数据,也可以是当前画面数据中的部分画面数据。当录制画面数据是当前画面数据的全部画面数据时,通过步骤S204所得到的录制画面与当前应用画面相同;当录制画面数据是当前画面数据的部分画面数据时,通过步骤S204所得到的录制画面与当前应用画面不同。例如,仍以图3b所示的当前应用画面为例,当前画面数据包括:场景画面的画面数据和UI控件的画面数据;若录制画面数据为当前画面数据的全部画面数据时,则得到的录制画面和当前应用画面的对比示意图可参见图3c所示;若录制画面数据只包括场景画面的画面数据,则得到的录制画面和当前应用画面的对比示意图可参见图3d所示。
可选的,计算机设备在得到录制画面后,还可将该录制画面上传至区块链,以防止录制画面被篡改。其中,区块链由多个区块组成,如图3e所示;创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。基于此,将录制画面上传至区块链中的具体实施方式可以是:
若计算机设备位于区块链网络内,则先可将录制画面添加至目标区块的区块主体中,并对区块主体中的目标纹理数据进行哈希运算,得到默克尔哈希值。其次,可采用随机算法生成一个随机数,并采用计算得到的默克尔哈希值、随机数、版本号、上一区块哈希值、当前时间戳以及当前难度值组成目标区块的区块头部。其中,版本号是指区块链中相关区块协议的版本信息;上一区块哈希值是指上一区块的区块头部的特征值;当前时间戳是指组成区块头部时的系统时间;当前难度值是指计算的难度值,该难度值在固定时间段内为定值,并在超出固定时间段后再次进行确定。然后,可采用特征值算法(如SHA256算法)对区块头部所包含的内容进行一次或多次哈希运算,得到目标区块的区块头部的特征值;此处的哈希运算的次数可根据计算难度确定,计算难度越大,哈希运算的次数越多。在基于上述步骤得到目标区块后,可将该目标区块广播给区块链网络中的各个共识节点进行共识处理;在通过共识处理后,将目标区块添加至区块链上。应理解的是,若计算机设备未位于区块链网络内,则可将目标纹理数据发送给区块链网络中的任一共识节点,由该任一共识节点执行上述步骤,以将该录制画面存储至区块链中。
可选的,计算机设备在得到录制画面后,还可采用云技术对录制画面进行云存储处理。其中,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。相应的,云存储(cloudstorage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
本申请实施例通过调用目标应用的处理引擎在画面绘制内存区域中绘制目标应用的当前应用画面,并根据绘制得到的当前画面数据显示当前应用画面;使得当需对当前应用画面进行录制时,可直接从画面绘制内存区域内的当前画面数据中确定当前应用画面的录制画面数据,这样可有效减少录制画面数据的获取时长,提升画面录制的效率。然后,可利用处理引擎的引擎特性,将录制画面数据复制至图形处理器内的目标纹理贴图中,并将目标纹理贴图中的录制画面数据拷贝至图形处理器中的硬编码器中,由硬编码器根据获取到的数据渲染出当前应用画面的录制画面。通过目标纹理贴图来承载录制画面数据的方式,可解除画面绘制内存区域和硬编码器之间的关联性,使得目标应用的处理引擎无需等待硬编码器成功渲染得到当前应用画面的录制画面后,再在画面绘制内存区域中重新绘制下一帧应用画面,可避免目标应用的显示卡顿,从而提升目标应用的应用画面的显示流畅度。并且,由于目标纹理贴图和硬编码器均位于图形处理器中,这样可使得整个画面录制过程均在图形处理器中执行,可有效缩短数据拷贝所需的时长,从而进一步提升画面录制的效率。另外,由于本申请实施例是通过借助处理引擎的引擎特性来实现数据拷贝,从而实现生成录制画面的;因此整个画面录制过程无需使用系统接口,也无需获取系统权限,可有效提升画面录制的通用性。
基于上述图2所示的画面录制方法的实施例描述,本申请实施例进一步提出了一种更为具体的画面录制方法。该画面录制方法可以由上述所提及的计算机设备、或目标应用、或目标应用的处理引擎执行;为便于阐述,后续均以计算机设备执行该画面录制方法为例进行说明。在本申请实施例中,当前应用画面可包括N个层级的画面内容,目标应用包括N个相机,N为大于1的整数;请参见图4,该画面录制方法可包括以下步骤S401-S409:
S401,获取用于对目标应用进行画面录制的录制脚本,该录制脚本可理解成是用于指示画面录制过程所需执行的各个步骤的程序代码。
S402,根据目标应用的画面录制策略,从N个相机中确定录制脚本需挂载的目标相机。
由前述实施例的描述可知,画面录制策略用于指示需录制的画面内容,一个相机负责显示一个层级的画面内容,且任一相机的深度值与该任一相机所负责的画面内容的层级成反比。那么,在执行步骤S402时,可从画面录制策略指示的各个画面内容对应的相机的深度值中,确定最大深度值;然后,将最大深度值所对应的相机确定为录制脚本需挂载的目标相机。例如,设当前应用画面包括2个层级的画面内容:场景画面(层级为第2级,对应场景相机)和UI控件(层级为第1级,对应UI相机),且场景相机的深度值为0,UI相机的深度值为10。若画面录制策略指示需录制的画面内容只有场景画面,则可确定的最大深度值就等于0(即场景相机的深度值),因此可将场景相机确定为录制脚本需挂载的目标相机;若画面录制策略指示需录制的画面内容包括场景画面和UI控件,则从场景相机的深度值和UI相机的深度值中,所确定的最大深度值为10,因此可将UI相机确定为录制脚本需挂载的目标相机。
在确定出录制脚本需挂载的目标相机后,可通过后续步骤S403-S404对录制脚本进行脚本埋点,以实现将录制脚本挂载至目标相机上。所谓的脚本埋点是指:将录制脚本添加至与目标相机相关联的某个函数中的处理方式;本申请实施例在进行脚本埋点时,可遵循优先复用游戏的缓存为主,以减少不必要的开销,从而节省存储空间。
S403,从处理引擎中确定目标相机所关联的函数集。
其中,该函数集中至少包括第一数据处理函数和第二数据处理函数。第一数据处理函数是指支持调整应用画面的函数,第二数据处理函数是指不支持调整应用画面的函数。例如,以处理引擎为游戏引擎(unity)为例,第一数据处理函数可以是unity中的OnRenderImage()函数,该OnRenderImage()函数是一种在画面渲染完成后,对渲染好的应用画面进行画面后处理以调整画面的数据处理函数;此处所提及的画面后处理是指调整应用画面的处理,如对应用画面进行扭曲、模糊或者MSAA(MultiSampling Anti-Aliasing,多重采用抗锯齿)的处理;其中,MSAA主要用于保持图像边缘的平滑。第二数据处理函数可以是unity中的OnPostRender()函数,该OnPostRender()函数是一种在画面渲染完成后被调用的数据处理函数。
S404,若目标应用开启了画面调整模式,则将录制脚本埋点至第一数据处理函数中;若目标应用未开启画面调整模式,则将录制脚本埋点至第二数据处理函数中。
在具体实施过程中,由前述可知:脚本埋点是指:将录制脚本添加至与目标相机相关联的某个函数中的处理方式。基于此,在执行步骤S404时,若目标应用开启了画面调整模式,则可将录制脚本添加至第一数据处理函数中,以实现将录制脚本挂载至目标相机上;若目标应用未开启画面调整模式,则可将录制脚本添加至第二数据处理函数中,以实现将录制脚本挂载至目标相机上。通过将录制脚本挂载至目标相机上,使得后续可只对目标相机对应的画面内容进行画面录制,这样不仅可实现定制化地录制游戏画面,便于后期的再创作;还可避免录制到其他应用的画面内容(如聊天信息等隐私内容),提升隐私安全性以及画面录制效果。也就是说,即使终端屏幕中同时显示了目标应用的当前应用画面以及其他应用的画面内容,但通过脚本挂载相机的方式,可实现只录制目标应用的当前应用画面中的全部画面内容或部分画面内容。
S405,调用目标应用的处理引擎,在画面绘制内存区域中绘制目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示当前应用画面。
在具体实现中,计算机设备可调用目标应用的处理引擎,获取画面绘制信息;并调用该处理引擎在画面绘制内存区域中根据该画面绘制信息进行画面绘制,得到初始画面数据。然后,可检测目标应用是否开启了画面调整模式。若目标应用未开启画面调整模式,则可将该初始画面数据确定为绘制得到的当前画面数据。若目标应用开启了画面调整模式,则可对初始画面数据进行光栅化以渲染得到初始应用界面,并对初始应用界面进行界面后处理,以对初始应用界面进行调整;然后,将调整后的应用界面所对应的界面数据,确定为绘制得到的当前画面数据。
在得到当前画面数据后,计算机设备可调用目标应用的处理引擎,对该当前画面数据进行光栅化,以渲染得到该当前应用界面,从而实现当前应用画面的显示。其中,本申请实施例所提及的光栅化是指:将画面数据经过一系列变换转换成由一个个栅格所组成的图像的过程。例如,以处理引擎为unity 3D这一游戏引擎为例,该游戏引擎中的每个美术模型(如游戏画面所显示的游戏角色、宠物等)均由顶点和顶点构成的三角面来确定;将3D(三维)的美术模型绘制到终端屏幕上时,根据每个三角面的三个顶点,将这个三角面所覆盖的每一个像素(栅格)进行填充的过程,便可叫做光栅化。
S406,若需对当前应用画面进行录制,则将第一数据处理函数和第二数据处理函数中,被埋点的数据处理函数确定为目标数据处理函数。
S407,执行录制脚本,以调用处理引擎中与目标数据处理函数对应的引擎特性,从画面绘制内存区域内的当前画面数据中,选取与目标相机对应的画面内容相匹配的画面数据,作为当前应用画面的录制画面数据。
需要说明的是,步骤S406-S407描述的是前述实施例中的步骤S202的一种具体实现方式。其中,目标相机对应的画面内容包括:该目标相机负责的画面内容,以及深度值小于该目标相机的深度值的各个相机所负责的画面内容。例如,设总共有两个相机:场景相机(深度值为10)和UI相机(深度值为0);若目标相机为场景相机,则由于UI相机的深度值小于场景相机的深度值,因此该情况下的目标相机对应的画面内容包括:场景相机负责的画面内容,以及UI相机负责的画面内容;若目标相机为UI相机,则两个相机中不存在深度值小于UI相机的深度值的相机,因此该情况下的目标相机对应的画面内容只包括:UI相机负责的画面内容。
S408,利用处理引擎中与目标数据处理函数对应的引擎特性,将录制画面数据复制至图形处理器内的目标纹理贴图中。
在步骤S407-S408中,若目标数据处理函数是unity中的OnRenderImage()函数,则与该目标数据处理函数对应的引擎特性包括Graphics.Blit()函数这一数据复制函数;相应的,计算机设备可采用Graphics.Blit()函数所关联的函数指令,执行步骤S407-S408。具体的,此实施方式下的函数指令可以包括:Graphics.Blit(src,RT);其中,src表示在执行画面后处理的情况下,录制画面数据在画面内存绘制区域中所处的位置,RT表示目标纹理贴图。若目标数据处理函数是unity中的OnPostRender()函数,则与该目标数据处理函数对应的引擎特性包括Graphics.ExecuteCommandBuffer()函数这一数据复制函数;相应的,计算机设备可采用Graphics.ExecuteCommandBuffer()函数所关联的函数指令,执行步骤S407-S408。具体的,此实施方式下的函数指令可以包括:
var bf=new CommandBuffer();//声明一个变量(bf)为新的命令缓冲;
bf.Blit(CurrentActive,RT);//定义该新的命令缓冲用于执行从CurrentActive至RT的数据拷贝,CurrentActive表示在未执行画面后处理的情况下,录制画面数据在画面内存绘制区域中所处的位置;
Graphics.ExecuteCommandBuffer(bf)。//执行新的命令缓冲。
需要说明的是,本申请实施例所提及的目标纹理贴图是预先生成的;目标应用具有全屏录制模式,该全屏录制模式是指;对整个终端屏幕中的内容均进行录制的模式。相应的,目标纹理贴图的生成方式可以是:首先,可获取终端屏幕的屏幕尺寸,以及检测全屏录制模式的模式状态。若模式状态为开启状态,则可基于屏幕尺寸,在图形处理器中生成目标纹理贴图;即此情况下,生成的目标纹理贴图的尺寸等于屏幕尺寸。通过基于屏幕尺寸来生成目标纹理贴图,可避免因目标纹理贴图的尺寸和终端屏幕不适配,而导致后续录制得到的录制画面发生变形的问题。若模式状态为关闭状态,则可根据用户配置的录制尺寸和屏幕尺寸,计算目标纹理贴图的目标尺寸;并基于目标尺寸,在图形处理器中生成目标纹理贴图;即此情况下,生成的目标纹理贴图的尺寸等于目标尺寸。通过基于屏幕尺寸和用户配置的录制尺寸来生成目标纹理贴图,一方面可避免录制画面发生变形的问题,另一方面可保证录制画面的画面效果满足用户需求。其中,目标纹理贴图可以任一类型的纹理贴图;例如当处理引擎为游戏引擎(unity)时,该目标纹理贴图可以是RenderTexture,该RenderTexture是unity定义的一种特殊的纹理类型的纹理贴图,其连接着位于GPU中的帧缓冲区对象(FrameBufferObjecrt,FBO)中的纹理。
在具体实施过程中,根据用户配置的录制尺寸和屏幕尺寸,计算目标纹理贴图的目标尺寸的实施方式可以如下:
首先,可根据用户配置的录制尺寸中的录制宽度和录制高度,计算录制尺寸的宽高比;以及根据屏幕尺寸中的屏幕宽度和屏幕高度,计算屏幕尺寸的宽高比。其中,宽高比是指宽度和高度的比值。需要说明的是,本申请实施例所提及的录制尺寸本质上可理解成录制画面所需满足的分辨率,其用于指示录制画面所需包括的像素的数量,如录制尺寸为1280p*720p,则表明录制画面需包括1280行720列个像素。同理,屏幕尺寸本质上可理解成终端屏幕所支持的分辨率,其用于指示终端屏幕所支持显示的像素的数量,如屏幕尺寸为1600*1200p,则表明终端屏幕可显示1600行1200列个像素。然后,可比较录制尺寸的宽高比和屏幕尺寸的宽高比是否一致(即相同)。
当录制尺寸的宽高比与屏幕尺寸的宽高比一致时,可进一步确定录制宽度和屏幕宽度之间的宽度大小关系。若宽度大小关系指示录制宽度小于或等于屏幕宽度,则可将录制尺寸确定为目标纹理贴图的目标尺寸;若宽度大小关系指示录制宽度大于屏幕宽度,则可对录制尺寸进行缩小处理,将缩小处理后的尺寸确定为目标纹理贴图的目标尺寸。需要说明的是,若第一次执行缩小处理后所得到的尺寸中的宽度仍大于屏幕宽度,则还可对第一次缩小处理后的尺寸进行第二次缩小处理,直至缩小处理后的尺寸小于屏幕尺寸,此时再将缩小处理后的尺寸确定为目标尺寸。其中,在对录制尺寸进行缩小处理时,可按照一个预设的缩小比例对录制尺寸进行缩小处理;例如,设缩小比例为20%,录制尺寸为1200*1200,则采用该缩小比例对该录制尺寸中的录制宽度和录制高度分别进行缩小处理,可得到缩小处理后的尺寸等于960*960,960=1200×(1-20%)。或者,可预先设置多个画质等级以及每个画质等级对应的尺寸,计算机设备可确定录制尺寸对应的画质等级,然后,对确定的画质等级进行降级处理,将降级处理后的画质等级对应的尺寸确定为目标尺寸;例如,设总共有2个画质等级:高清画质(尺寸为1600*1200)以及标清画质(尺寸为480*360),若录制尺寸为1600*1200,则可确定录制尺寸对应的画质等级为高清画质,此时对该画质等级进行降级处理,可得到降级处理后的画质等级为标清画质,从而可将标清画质对应的480*360确定为目标尺寸。
当录制尺寸的宽高比与屏幕尺寸的宽高比不一致时,则执行一次或多次尺寸计算流程,以得到目标纹理贴图的目标尺寸:其中,一次尺寸计算流程如下:确定候选宽度;当首次执行尺寸计算流程时,确定的候选宽度等于录制尺寸中的录制宽度,当非首次执行确定尺寸计算流程时,确定的候选宽度等于对前一次确定出的候选宽度进行缩小处理所得到的宽度。然后,可基于候选宽度和屏幕尺寸的宽高比,计算候选高度;具体的,可计算候选宽度和屏幕尺寸的宽高比之间的比值,得到候选高度。以及,比较候选高度和屏幕尺寸中的屏幕高度之间的高度大小关系;若高度大小关系指示候选高度小于屏幕高度,则将候选宽度和候选高度所构成的尺寸,确定为目标纹理贴图的目标尺寸;若高度大小关系指示候选高度大于屏幕高度,则对确定的候选宽度进行缩小处理,并执行下一次尺寸计算流程。
举例说明:设录制尺寸为1920*1080,屏幕尺寸为1600*1200,即屏幕尺寸的宽高比为4:3(即4/3)。首先,在第一次计算流程中,可固定候选宽度为1920,那么根据该候选宽度1920和屏幕尺寸的宽高比,可计算得到候选高度为:1920÷4/3=1440;由于该候选高度1440大于屏幕高度1200,因此可对候选宽度1920进行缩小处理,并进入第二次计算流程。假设对候选宽度1920进行缩小处理所得到的宽度为1080,则在第二次计算流程中,可固定候选宽度为1080,那么根据该候选宽度1080和屏幕尺寸的宽高比,可计算得到候选高度为:1080÷4/3=810;由于该候选高度810小于屏幕高度1200,因此可采用候选宽度1080和候选高度810所构成的尺寸(1080*810)作为目标尺寸。
需要说明的是,与上述所提及的对录制尺寸进行缩小处理的方式类似,本申请实施例在对确定的候选宽度进行缩小处理时,可按照一个预设比例对候选宽度进行缩小处理;也可预先设置多个画质等级以及每个画质等级对应的尺寸,此情况下,计算机设备可确定录制尺寸对应的画质等级,然后,对确定的画质等级进行降级处理,将降级处理后的画质等级对应的尺寸中的宽度对候选宽度进行缩小处理,使得缩小处理后的宽度等于降级处理后的画质等级对应的尺寸中的宽度。
还需说明的是,上述步骤主要是从宽度这一维度出发,来描述如何确定目标尺寸的具体实施方式的;在其他实施例中,也可主要从高度这一维度出发,来确定目标尺寸。例如当录制尺寸的宽高比与屏幕尺寸的宽高比一致时,可进一步根据录制高度和屏幕高度之间的大小关系,来确定目标纹理贴图的目标尺寸;当录制尺寸的宽高比与屏幕尺寸的宽高比不一致时,则所执行的任一次尺寸计算流程也可以如下:确定候选高度;当首次执行尺寸计算流程时,确定的候选高度等于录制尺寸中的录制高度,当非首次执行确定尺寸计算流程时,确定的候选高度等于对前一次确定出的候选高度进行缩小处理所得到的高度。然后,可基于候选高度和屏幕尺寸的宽高比,计算候选宽度。若候选宽度小于屏幕宽度,则将候选宽度和候选高度所构成的尺寸,确定为目标纹理贴图的目标尺寸;若候选宽度大于屏幕宽度,则对确定的候选高度进行缩小处理,并执行下一次尺寸计算流程。
S409,将目标纹理贴图中的录制画面数据,拷贝至图形处理器中的硬编码器中,使硬编码器根据获取到的数据,渲染出当前应用画面的录制画面。
在一种实施方式中,计算机设备在执行步骤S409时,可先将目标纹理贴图中的录制画面数据,拷贝至中央处理器的目标内存中;具体的,计算机设备可调用目标应用的处理引擎,将目标纹理贴图中的录制画面数据,拷贝至中央处理器的目标内存中。其次,计算机设备可通过中央处理器在目标内存中,将录制画面数据转换成与图形处理器的硬编码器相适配的画面数据;画面数据和硬编码器相适配的含义是指:画面数据的数据格式与硬编码支持的数据格式相匹配,使得画面数据能够被硬编码器识别。然后,计算机设备可将转换后的画面数据从目标内存,拷贝至图形处理器中的硬编码器中;具体的,计算机设备可通过调用中央处理器,实现将转换后的画面数据从目标内存,拷贝至图形处理器中的硬编码器中。通过此实施方式,可实现硬编码器获取到的数据是硬编码器可识别的画面数据,这样可使得硬编码器成功渲染出当前应用画面的录制画面,提升画面录制的成功率。
另一种实施方式中,计算机设备可通过处理引擎预先获取一个与图形处理器相适配且目标纹理贴图对应的纹理标识,以及预先在图形处理器中创建一个可识别录制画面数据的渲染引擎。在具体实施过程中,可先通过目标纹理贴图的标识获取函数,获取与图形处理器相适配且与目标纹理贴图相对应的纹理标识;具体的,可先通过标识获取函数获取一个图形处理器可识别的标识,然后将获取到的标识和目标纹理贴图绑定,从而将绑定了目标纹理贴图的标识,作为与图形处理器相适配且与目标纹理贴图相对应的纹理标识。其中,该标识获取函数是指具有标识获取能力的任一函数,如目标纹理贴图为RenderTexture时,该标识获取函数可以是GetNativeTexturePtr()函数。
其次,可获取纹理标识的上下文信息,该上下文信息用于指示:处理引擎在绘制得到画面数据时所采用的环境参数。然后,可根据上下文信息和硬编码器创建的数据容器(Surface),创建图形处理器中的渲染引擎,使得渲染引擎具有识别录制画面数据的能力,且通过数据容器和硬编码器进行数据传递。此处的渲染引擎也可称为是渲染环境,该渲染环境例如可以是OpenGL环境;所谓的OpenGL是一个跨编程语言、跨平台的编程图形程序接口,其将计算机设备中的资源抽象成一个个opengl对象,以及对针对这些资源的操作抽象成一个个opengl指令。以渲染引擎为OpenGL环境为例,在创建该OpenGL环境时,可将纹理标识的上下文信息所指示的环境参数作为OpenGL环境的环境参数,以及将硬编码器创建的数据容器作为创建OpenGL环境的入参进行环境创建,以得到OpenGL环境;这样的处理方式可使得硬编码器后续可通过数据容器无缝接收到OpenGL环境中的数据,降低数据获取的难度。
那么,计算机设备在执行步骤S409时,可先将纹理标识传递给图形处理器中的渲染引擎;具体的,可通过处理引擎将目标纹理贴图的纹理标识传递给渲染引擎,由渲染引擎对接收到的纹理标识进行识别。由于该渲染引擎位于图形处理器中,且纹理标识与图形处理器相适配,因此该渲染引擎可成功识别该纹理标识。那么,在渲染引擎识别出该纹理标识后,可通过渲染引擎根据纹理标识,从目标纹理贴图中拷贝录制画面数据,并对拷贝出的录制画面数据进行数据识别。由于渲染引擎具有识别录制画面数据的能力,因此渲染引擎可成功识别该录制画面数据;那么,在成功识别该录制画面数据后,可将该录制画面数据转换成与图形处理器中的硬编码器相适配的画面数据。具体的,可在渲染引擎中调用数据转换接口,将录制画面数据转换成与硬编码器相适配的画面数据;该数据转换接口可根据经验或者业务需求设置,例如当渲染引擎为OpenGL环境时,该数据转换接口可以是bindTexture接口。然后,可将转换后的画面数据写入数据容器,使硬编码器从数据容器中获取转换后的画面数据。通过此实施方式,可实现在图形处理器中实现数据拷贝的整个过程,无需中央处理器的参与;这样不仅可避免因中央处理器的参与而导致耗时较多以及资源占用较多的情况,从而避免应用卡顿的情况,还可有效提升数据拷贝的效率,从而提升画面录制的录制效率。
可选的,在成功识别录制画面数据后,计算机设备也可先确定录制画面数据的数据格式以及硬编码器支持的数据格式;并通过检测录制画面数据的数据格式和硬编码器支持的数据格式是否匹配,来确定录制画面数据和硬编码器是否适配。若录制画面数据的数据格式和硬编码器支持的数据格式不匹配,则确定录制画面数据和硬编码器不适配,此时可执行将录制画面数据转换成与图形处理器中的硬编码器相适配的画面数据的步骤;若录制画面数据的数据格式和硬编码器支持的数据格式相匹配,则确定录制画面数据和硬编码器适配,此时可将录制画面数据写入数据容器,使硬编码器从数据容器中获取录制画面数据。
需要说明的是,若录制画面数据与硬编码器相适配,则计算机设备也可不采用上述所提及的实施方式,而是直接通过处理引擎,将目标纹理贴图中的录制画面数据,拷贝至图形处理器中的硬编码器中。基于此并结合上述描述可知,硬编码器所获取到的数据可能是录制画面数据,也可能是对录制画面数据进行转换所得到的转换后的画面数据,对此不作限定。
本申请实施例在需对当前应用画面进行录制时,通过从画面绘制内存区域内的当前画面数据中确定当前应用画面的录制画面数据,可有效减少录制画面数据的获取时长,提升画面录制的效率。然后,可利用处理引擎的引擎特性,将录制画面数据复制至图形处理器内的目标纹理贴图中,并将目标纹理贴图中的录制画面数据拷贝至图形处理器中的硬编码器中,由硬编码器根据获取到的数据渲染出当前应用画面的录制画面。通过目标纹理贴图来承载录制画面数据的方式,可使得画面绘制内存区域和硬编码器相互独立,从而使得目标应用的处理引擎无需等待硬编码器成功渲染得到当前应用画面的录制画面后,再在画面绘制内存区域中重新绘制下一帧应用画面,可避免目标应用的显示卡顿,从而提升目标应用的应用画面的显示流畅度。另外,由于本申请实施例是通过借助处理引擎的引擎特性来实现数据拷贝,从而实现生成录制画面的;因此整个画面录制过程无需使用系统接口,也无需获取系统权限,可有效提升画面录制的通用性。并且,通过脚本挂载相机的方式,一方面可实现只录制终端屏幕中所显示的游戏应用的画面内容,避免录制到其他应用的画面内容(如聊天信息等隐私内容);另一方面,还可实现定制化地录制游戏画面,便于后期的再创作。
需要说明的是,本申请实施例所提出的画面录制方法可运用到各种录制场景中,如对游戏应用中的游戏画面进行画面录制的录制场景,对浏览器应用中的网页画面进行画面录制的录制场景,对视频播放应用中的影视剧画面进行画面录制的录制场景,等等。
下面以将该画面录制方法运用到对游戏应用中的游戏画面进行画面录制的录制场景为例,对如何通过该画面录制方法得到游戏录制视频的大致流程进行阐述:
当用户打开游戏应用(即前述所提及的目标应用)后,可在终端屏幕中输出一个配置界面,以使得该用户通过该配置界面设置录制方式以及录制尺寸。例如,参见图5a所示:该配置界面中可包括精彩时刻录制方式的开关选项51以及自由录制方式的开关选项52;用户可根据自身需求通过将配置界面中的任一开关选项的选项状态设置为开启状态,来选择相应的录制方式。若用户将开关选项51的选项状态设置为开启状态,则表明用户选择了精彩时刻录制方式;若用户将开关选项52的选项状态设置为开启状态,则表明用户选择了自由录制方式。另外,配置界面中还可包括多个画质等级选项,如图5a中的标清选项53和高清选项54;用户可通过选中任一画质等级选项来设置录制尺寸;若用户选择了标清选项53,则可将标清这一画质等级对应的尺寸作为录制尺寸;若用户选择了高清选项54,则可将高清这一画质等级对应的尺寸作为录制尺寸,以此类推。为便于阐述,后续均以用户设置了精彩时刻录制方式为例进行说明。
在确定用户设置的录制方式以及录制尺寸后,可按照图5b-图5c所示的流程进行画面录制工作,以得到游戏录制视频;具体的:
首先,可获取对游戏应用进行画面录制的录制脚本,以及根据游戏应用的画面录制策略,从游戏应用的N个相机中确定出录制脚本需挂载的目标相机;并将录制脚本埋点至目标相机关联的第一数据处理函数(OnRenderImage()函数)或者第二数据处理函数(OnPostRender()函数)中。然后,可检测目标应用是否已启动录屏;若未启动录屏,则不作任何处理;若已启动录屏,则可进一步检测目标应用是否开启全屏录制模式。若是,则直接获取终端屏幕的屏幕尺寸,根据屏幕尺寸在GPU中生成一个固定的目标纹理贴图(RenderTexture);若否,则根据录制尺寸和终端屏幕的屏幕尺寸计算目标尺寸,并根据目标尺寸生成目标纹理贴图。
在生成目标纹理贴图后,还可获取该目标纹理贴图的纹理标识,将该纹理标识缓存至指定区域,以便于后续的使用;以及,还可根据该纹理标识生成渲染引擎。具体的,可由硬编码器创建一个数据容器(surface),并根据该纹理标识的上下文信息和硬编码器创建的数据容器,生成渲染引擎。具体的,可将硬编码器创建的数据容器作为创建渲染引擎的入参,并调用eglCreateWindowSurface()函数创建得到渲染引擎,并在渲染引擎和处理引擎之间共享纹理标识的上下文,从而使得渲染引擎具有识别录制画面数据的能力。其中,纹理标识的上下文信息可以是游戏应用启动时,通过将游戏应用的线程切换至游戏引擎的渲染线程来获取到的;具体可以是调用游戏引擎的渲染线程通过GL.IssuePluginEvent方法,来获取该纹理标识的上下文信息。
在游戏应用的运行过程中,游戏应用的游戏引擎可在画面绘制内存区域(backbuffer)中绘制游戏应用需显示的当前游戏画面(即前述所提及的当前应用画面),并根据绘制得到的当前画面数据在终端屏幕中显示当前游戏画面。另外,游戏引擎可检测当前游戏画面是否为精彩画面;若是,则确定需对当前游戏画面进行录制。此时的游戏引擎可检测第一数据处理函数(OnRenderImage()函数)是否被埋点。若被埋点,则可通过执行与第一数据处理函数相关的函数指令(Graphics.Blit(src,RT)),从当前画面数据中确定录制画面数据,并将该录制画面数据拷贝一份给到目标纹理贴图中。若未被埋点,则可通过执行与第二数据处理函数相关的函数指令(var bf=new CommandBuffer()、bf.Blit(CurrentActive,RT)、Graphics.ExecuteCommandBuffer(bf)),从当前画面数据中确定录制画面数据,并将该录制画面数据拷贝一份给到目标纹理贴图中。在将录制画面数据拷贝至目标纹理贴图后,游戏引擎可从指定区域中获取纹理标识,并将该纹理标识传输到渲染引擎,使得渲染引擎根据该纹理标识从目标纹理贴图中拷贝出录制画面数据。然后,渲染引擎可采用bindTexture接口将录制画面数据转换成与硬编码器相匹配的画面数据,并将转换后的画面数据写入数据容器,从而实现将录制画面数据复制至硬编码器上,完成一帧录制画面数据的采集。
多次循环上述步骤,便可使得硬编码器采集到多帧录制画面数据,从而硬编码器可通过依次各帧录制画面数据,得到游戏录制视频。
经实践表明,通过将本申请实施例提出的画面录制方法应用到游戏应用的画面录制这一录制场景中,可以实现如下有益效果:
①避免权限获取导致游戏进程的中断,提升游戏应用的运行流畅性;
②通过脚本挂载相机的方式,可实现只录制终端屏幕中所显示的游戏应用的画面内容,避免录制到其他应用的画面内容(如聊天信息等隐私内容);
③通过脚本挂载相机的方式,还可以实现定制化地录制游戏画面,便于后期的再创作;
④基于游戏引擎的特性进行画面录制,减少系统接口变更导致的兼容问题,避免因弹对话框干扰游戏进程的情况,且无需获取类似root(系统权限)之类的高级权限,可提升画面录制的适用性。
基于上述画面录制方法实施例的描述,本申请实施例还公开了一种画面录制装置,所述画面录制装置可以是运行于计算机设备中的一个计算机程序(包括程序代码)。该画面录制装置可以执行图2或图4所示的方法。请参见图6,所述画面录制装置可以运行如下单元:
绘制单元601,用于调用目标应用的处理引擎,在画面绘制内存区域中绘制所述目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示所述当前应用画面;
录制单元602,用于若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据;
所述录制单元602,还用于利用所述处理引擎的引擎特性,将所述录制画面数据复制至图形处理器内的目标纹理贴图中;
所述录制单元602,还用于将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,使所述硬编码器根据获取到的数据,渲染出所述当前应用画面的录制画面。
在一种实施方式中,录制单元602还可用于:
通过所述目标纹理贴图的标识获取函数,获取与所述图形处理器相适配且与所述目标纹理贴图相对应的纹理标识;
获取所述纹理标识的上下文信息,所述上下文信息用于指示:所述处理引擎在绘制得到画面数据时所采用的环境参数;
根据所述上下文信息和所述硬编码器创建的数据容器,创建所述图形处理器中的渲染引擎,使得所述渲染引擎具有识别所述录制画面数据的能力,且通过所述数据容器和所述硬编码器进行数据传递。
另一种实施方式中,录制单元602在用于将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中时,可具体用于:
将所述纹理标识传递给所述图形处理器中的渲染引擎;
在所述渲染引擎识别出所述纹理标识后,通过所述渲染引擎根据所述纹理标识,从所述目标纹理贴图中拷贝所述录制画面数据;
对拷贝出的所述录制画面数据进行数据识别,并在成功识别所述录制画面数据后,将所述录制画面数据转换成与所述图形处理器中的硬编码器相适配的画面数据;
将转换后的画面数据写入所述数据容器,使所述硬编码器从所述数据容器中获取所述转换后的画面数据。
另一种实施方式中,录制单元602还可用于:
在成功识别所述录制画面数据后,确定所述录制画面数据的数据格式以及所述硬编码器支持的数据格式;
若所述录制画面数据的数据格式和所述硬编码器支持的数据格式不匹配,则执行将所述录制画面数据转换成与所述图形处理器中的硬编码器相适配的画面数据的步骤;
若所述录制画面数据的数据格式和所述硬编码器支持的数据格式相匹配,则将所述录制画面数据写入所述数据容器,使所述硬编码器从所述数据容器中获取所述录制画面数据。
另一种实施方式中,录制单元602在用于将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中时,可具体用于:
将所述目标纹理贴图中的所述录制画面数据,拷贝至中央处理器的目标内存中;
通过所述中央处理器在所述目标内存中,将所述录制画面数据转换成与所述图形处理器中的硬编码器相适配的画面数据;
将转换后的画面数据从所述目标内存,拷贝至所述图形处理器中的硬编码器中。
另一种实施方式中,所述目标应用具有全屏录制模式;相应的,录制单元602还可用于:
获取终端屏幕的屏幕尺寸,以及检测所述全屏录制模式的模式状态;
若所述模式状态为开启状态,则基于所述屏幕尺寸,在图形处理器中生成目标纹理贴图;
若所述模式状态为关闭状态,则根据用户配置的录制尺寸和所述屏幕尺寸,计算所述目标纹理贴图的目标尺寸;并基于所述目标尺寸,在图形处理器中生成目标纹理贴图。
另一种实施方式中,录制单元602在用于根据用户配置的录制尺寸和所述屏幕尺寸,计算所述目标纹理贴图的目标尺寸时,可具体用于:
根据用户配置的录制尺寸中的录制宽度和录制高度,计算所述录制尺寸的宽高比;以及根据所述屏幕尺寸中的屏幕宽度和屏幕高度,计算所述屏幕尺寸的宽高比;
当所述录制尺寸的宽高比与所述屏幕尺寸的宽高比一致时,确定所述录制宽度和所述屏幕宽度之间的宽度大小关系;
若所述宽度大小关系指示所述录制宽度小于或等于所述屏幕宽度,则将所述录制尺寸确定为所述目标纹理贴图的目标尺寸;
若所述宽度大小关系指示所述录制宽度大于所述屏幕宽度,则对所述录制尺寸进行缩小处理,将缩小处理后的尺寸确定为所述目标纹理贴图的目标尺寸。
另一种实施方式中,录制单元602在用于根据用户配置的录制尺寸和所述屏幕尺寸,计算所述目标纹理贴图的目标尺寸时,还可用于:
当所述录制尺寸的宽高比与所述屏幕尺寸的宽高比不一致时,则执行一次或多次尺寸计算流程,以得到所述目标纹理贴图的目标尺寸:其中,一次尺寸计算流程如下:
确定候选宽度;当首次执行尺寸计算流程时,确定的候选宽度等于所述录制尺寸中的录制宽度,当非首次执行确定所述尺寸计算流程时,确定的候选宽度等于对前一次确定出的候选宽度进行缩小处理所得到的宽度;
基于所述候选宽度和所述屏幕尺寸的宽高比,计算候选高度;以及,比较所述候选高度和所述屏幕尺寸中的屏幕高度之间的高度大小关系;
若所述高度大小关系指示所述候选高度小于所述屏幕高度,则将所述候选宽度和所述候选高度所构成的尺寸,确定为所述目标纹理贴图的目标尺寸;
若所述高度大小关系指示所述候选高度大于所述屏幕高度,则对所述确定的候选宽度进行缩小处理,并执行下一次尺寸计算流程。
另一种实施方式中,所述当前应用画面包括N个层级的画面内容,所述目标应用包括N个相机;其中,N为大于1的整数,一个层级的画面内容通过一个相机进行显示;相应的,录制单元602还可用于:
获取用于对目标应用进行画面录制的录制脚本;
根据所述目标应用的画面录制策略,从所述N个相机中确定所述录制脚本需挂载的目标相机;
从所述处理引擎中确定所述目标相机所关联的函数集,所述函数集中至少包括第一数据处理函数和第二数据处理函数;所述第一数据处理函数是指支持调整应用画面的函数,第二数据处理函数是指不支持调整应用画面的函数;
若所述目标应用开启了画面调整模式,则将所述录制脚本埋点至所述第一数据处理函数中;若所述目标应用未开启所述画面调整模式,则将所述录制脚本埋点至所述第二数据处理函数中。
另一种实施方式中,录制单元602在用于若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据时,可具体用于:
若需对所述当前应用画面进行录制,则将所述第一数据处理函数和所述第二数据处理函数中,被埋点的数据处理函数确定为目标数据处理函数;
执行所述录制脚本,以调用所述处理引擎中与所述目标数据处理函数对应的引擎特性,从所述画面绘制内存区域内的所述当前画面数据中,选取与所述目标相机对应的画面内容相匹配的画面数据,作为所述当前应用画面的录制画面数据。
根据本申请的一个实施例,图2或图4所示的画面录制方法所涉及的各个步骤均可以是由图6所示的画面录制装置中的各个单元来执行的。例如,图2中所示的步骤S201可由图6中所示的绘制单元601执行,步骤S202-步骤S204均可由图6中所示的录制单元602执行。又如,图4中所示的步骤S405可由图6中所示的绘制单元601执行,步骤S401-步骤S404以及步骤S406-S409均可由图6中所示的录制单元602执行,等等。
根据本申请的另一个实施例,图6所示的画面录制装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,基于画面录制装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图5b中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图6中所示的画面录制装置设备,以及来实现本申请实施例的画面录制方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本申请实施例通过调用目标应用的处理引擎在画面绘制内存区域中绘制目标应用的当前应用画面,并根据绘制得到的当前画面数据显示当前应用画面;使得当需对当前应用画面进行录制时,可直接从画面绘制内存区域内的当前画面数据中确定当前应用画面的录制画面数据,这样可有效减少录制画面数据的获取时长,提升画面录制的效率。然后,可利用处理引擎的引擎特性,将录制画面数据复制至图形处理器内的目标纹理贴图中,并将目标纹理贴图中的录制画面数据拷贝至图形处理器中的硬编码器中,由硬编码器根据获取到的数据渲染出当前应用画面的录制画面。通过目标纹理贴图来承载录制画面数据的方式,可使得画面绘制内存区域和硬编码器相互独立,从而使得目标应用的处理引擎无需等待硬编码器成功渲染得到当前应用画面的录制画面后,再在画面绘制内存区域中重新绘制下一帧应用画面,可避免目标应用的显示卡顿,从而提升目标应用的应用画面的显示流畅度。并且,由于目标纹理贴图和硬编码器均位于图形处理器中,这样可使得整个画面录制过程均在图形处理器中执行,可有效缩短数据拷贝所需的时长,从而进一步提升画面录制的效率。另外,由于本申请实施例是通过借助处理引擎的引擎特性来实现数据拷贝,从而实现生成录制画面的;因此整个画面录制过程无需使用系统接口,也无需获取系统权限,可有效提升画面录制的通用性。
基于上述方法实施例以及装置实施例的描述,本申请实施例还提供一种计算机设备。请参见图7,该计算机设备至少包括处理器701、输入接口702、输出接口703以及计算机存储介质704。其中,计算机设备内的处理器701、输入接口702、输出接口703以及计算机存储介质704可通过总线或其他方式连接。进一步的,该计算机设备还可包括图形处理器705等其他组件,对此不作限定。
其中,计算机存储介质704可以存储在计算机设备的存储器中,所述计算机存储介质704用于存储计算机程序,所述计算机程序包括程序指令,所述处理器701用于执行所述计算机存储介质704存储的程序指令。处理器701(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,本申请实施例中的处理器701可以用于进行一系列画面录制处理,具体包括:调用目标应用的处理引擎,在画面绘制内存区域中绘制所述目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示所述当前应用画面;若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据;利用所述处理引擎的引擎特性,将所述录制画面数据复制至图形处理器内的目标纹理贴图中;将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,使所述硬编码器根据获取到的数据,渲染出所述当前应用画面的录制画面,等等。需要说明的是,处理器701在进行画面录制处理时所执行的各个步骤的具体实施方式可参见上述画面录制方法实施例的相关描述,在此不再赘述。
本申请实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了计算机设备的操作系统。并且,在该存储空间中还存放了适于被处理器701加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,可由处理器701加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关图2或图4所示的画面录制方法实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器701加载并执行如下步骤:
调用目标应用的处理引擎,在画面绘制内存区域中绘制所述目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示所述当前应用画面;
若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据;
利用所述处理引擎的引擎特性,将所述录制画面数据复制至图形处理器内的目标纹理贴图中;
将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,使所述硬编码器根据获取到的数据,渲染出所述当前应用画面的录制画面。
在一种实施方式中,所述一条或多条指令还可由处理器701加载并执行:
通过所述目标纹理贴图的标识获取函数,获取与所述图形处理器相适配且与所述目标纹理贴图相对应的纹理标识;
获取所述纹理标识的上下文信息,所述上下文信息用于指示:所述处理引擎在绘制得到画面数据时所采用的环境参数;
根据所述上下文信息和所述硬编码器创建的数据容器,创建所述图形处理器中的渲染引擎,使得所述渲染引擎具有识别所述录制画面数据的能力,且通过所述数据容器和所述硬编码器进行数据传递。
另一种实施方式中,在将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中时,所述一条或多条指令可由处理器701加载并执行:
将所述纹理标识传递给所述图形处理器中的渲染引擎;
在所述渲染引擎识别出所述纹理标识后,通过所述渲染引擎根据所述纹理标识,从所述目标纹理贴图中拷贝所述录制画面数据;
对拷贝出的所述录制画面数据进行数据识别,并在成功识别所述录制画面数据后,将所述录制画面数据转换成与所述图形处理器中的硬编码器相适配的画面数据;
将转换后的画面数据写入所述数据容器,使所述硬编码器从所述数据容器中获取所述转换后的画面数据。
另一种实施方式中,所述一条或多条指令还可由处理器701加载并执行:
在成功识别所述录制画面数据后,确定所述录制画面数据的数据格式以及所述硬编码器支持的数据格式;
若所述录制画面数据的数据格式和所述硬编码器支持的数据格式不匹配,则执行将所述录制画面数据转换成与所述图形处理器中的硬编码器相适配的画面数据的步骤;
若所述录制画面数据的数据格式和所述硬编码器支持的数据格式相匹配,则将所述录制画面数据写入所述数据容器,使所述硬编码器从所述数据容器中获取所述录制画面数据。
另一种实施方式中,在将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中时,所述一条或多条指令可由处理器701加载并执行:
将所述目标纹理贴图中的所述录制画面数据,拷贝至中央处理器的目标内存中;
通过所述中央处理器在所述目标内存中,将所述录制画面数据转换成与所述图形处理器中的硬编码器相适配的画面数据;
将转换后的画面数据从所述目标内存,拷贝至所述图形处理器中的硬编码器中。
另一种实施方式中,所述目标应用具有全屏录制模式;相应的,所述一条或多条指令还可由处理器701加载并执行:
获取终端屏幕的屏幕尺寸,以及检测所述全屏录制模式的模式状态;
若所述模式状态为开启状态,则基于所述屏幕尺寸,在图形处理器中生成目标纹理贴图;
若所述模式状态为关闭状态,则根据用户配置的录制尺寸和所述屏幕尺寸,计算所述目标纹理贴图的目标尺寸;并基于所述目标尺寸,在图形处理器中生成目标纹理贴图。
另一种实施方式中,在根据用户配置的录制尺寸和所述屏幕尺寸,计算所述目标纹理贴图的目标尺寸时,所述一条或多条指令可由处理器701加载并执行:
根据用户配置的录制尺寸中的录制宽度和录制高度,计算所述录制尺寸的宽高比;以及根据所述屏幕尺寸中的屏幕宽度和屏幕高度,计算所述屏幕尺寸的宽高比;
当所述录制尺寸的宽高比与所述屏幕尺寸的宽高比一致时,确定所述录制宽度和所述屏幕宽度之间的宽度大小关系;
若所述宽度大小关系指示所述录制宽度小于或等于所述屏幕宽度,则将所述录制尺寸确定为所述目标纹理贴图的目标尺寸;
若所述宽度大小关系指示所述录制宽度大于所述屏幕宽度,则对所述录制尺寸进行缩小处理,将缩小处理后的尺寸确定为所述目标纹理贴图的目标尺寸。
另一种实施方式中,在根据用户配置的录制尺寸和所述屏幕尺寸,计算所述目标纹理贴图的目标尺寸时,所述一条或多条指令还可由处理器701加载并执行:
当所述录制尺寸的宽高比与所述屏幕尺寸的宽高比不一致时,则执行一次或多次尺寸计算流程,以得到所述目标纹理贴图的目标尺寸:其中,一次尺寸计算流程如下:
确定候选宽度;当首次执行尺寸计算流程时,确定的候选宽度等于所述录制尺寸中的录制宽度,当非首次执行确定所述尺寸计算流程时,确定的候选宽度等于对前一次确定出的候选宽度进行缩小处理所得到的宽度;
基于所述候选宽度和所述屏幕尺寸的宽高比,计算候选高度;以及,比较所述候选高度和所述屏幕尺寸中的屏幕高度之间的高度大小关系;
若所述高度大小关系指示所述候选高度小于所述屏幕高度,则将所述候选宽度和所述候选高度所构成的尺寸,确定为所述目标纹理贴图的目标尺寸;
若所述高度大小关系指示所述候选高度大于所述屏幕高度,则对所述确定的候选宽度进行缩小处理,并执行下一次尺寸计算流程。
另一种实施方式中,所述当前应用画面包括N个层级的画面内容,所述目标应用包括N个相机;其中,N为大于1的整数,一个层级的画面内容通过一个相机进行显示;相应的,所述一条或多条指令还可由处理器701加载并执行:
获取用于对目标应用进行画面录制的录制脚本;
根据所述目标应用的画面录制策略,从所述N个相机中确定所述录制脚本需挂载的目标相机;
从所述处理引擎中确定所述目标相机所关联的函数集,所述函数集中至少包括第一数据处理函数和第二数据处理函数;所述第一数据处理函数是指支持调整应用画面的函数,第二数据处理函数是指不支持调整应用画面的函数;
若所述目标应用开启了画面调整模式,则将所述录制脚本埋点至所述第一数据处理函数中;若所述目标应用未开启所述画面调整模式,则将所述录制脚本埋点至所述第二数据处理函数中。
另一种实施方式中,在若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据时,所述一条或多条指令可由处理器701加载并执行:
若需对所述当前应用画面进行录制,则将所述第一数据处理函数和所述第二数据处理函数中,被埋点的数据处理函数确定为目标数据处理函数;
执行所述录制脚本,以调用所述处理引擎中与所述目标数据处理函数对应的引擎特性,从所述画面绘制内存区域内的所述当前画面数据中,选取与所述目标相机对应的画面内容相匹配的画面数据,作为所述当前应用画面的录制画面数据。
本申请实施例通过调用目标应用的处理引擎在画面绘制内存区域中绘制目标应用的当前应用画面,并根据绘制得到的当前画面数据显示当前应用画面;使得当需对当前应用画面进行录制时,可直接从画面绘制内存区域内的当前画面数据中确定当前应用画面的录制画面数据,这样可有效减少录制画面数据的获取时长,提升画面录制的效率。然后,可利用处理引擎的引擎特性,将录制画面数据复制至图形处理器内的目标纹理贴图中,并将目标纹理贴图中的录制画面数据拷贝至图形处理器中的硬编码器中,由硬编码器根据获取到的数据渲染出当前应用画面的录制画面。通过目标纹理贴图来承载录制画面数据的方式,可使得画面绘制内存区域和硬编码器相互独立,从而使得目标应用的处理引擎无需等待硬编码器成功渲染得到当前应用画面的录制画面后,再在画面绘制内存区域中重新绘制下一帧应用画面,可避免目标应用的显示卡顿,从而提升目标应用的应用画面的显示流畅度。并且,由于目标纹理贴图和硬编码器均位于图形处理器中,这样可使得整个画面录制过程均在图形处理器中执行,可有效缩短数据拷贝所需的时长,从而进一步提升画面录制的效率。另外,由于本申请实施例是通过借助处理引擎的引擎特性来实现数据拷贝,从而实现生成录制画面的;因此整个画面录制过程无需使用系统接口,也无需获取系统权限,可有效提升画面录制的通用性。
需要说明的是,根据本申请的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图2或图4所示的画面录制方法实施例方面的各种可选方式中提供的方法。
并且,应理解的是,以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (13)

1.一种画面录制方法,其特征在于,包括:
调用目标应用的处理引擎,在画面绘制内存区域中绘制所述目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示所述当前应用画面;
若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据;
利用所述处理引擎的引擎特性,将所述录制画面数据复制至图形处理器内的目标纹理贴图中;
将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,使所述硬编码器根据获取到的数据,渲染出所述当前应用画面的录制画面;
其中,所述录制画面数据是被渲染引擎转换成与所述硬编码器相适配的画面数据后,被写入所述硬编码器创建的数据容器中的;所述渲染引擎是根据所述处理引擎传输的所述目标纹理贴图的纹理标识,从所述目标纹理贴图中拷贝出所述录制画面数据的。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述目标纹理贴图的标识获取函数,获取与所述图形处理器相适配且与所述目标纹理贴图相对应的纹理标识;
获取所述纹理标识的上下文信息,所述上下文信息用于指示:所述处理引擎在绘制得到画面数据时所采用的环境参数;
根据所述上下文信息和所述硬编码器创建的数据容器,创建所述图形处理器中的渲染引擎,使得所述渲染引擎具有识别所述录制画面数据的能力,且通过所述数据容器和所述硬编码器进行数据传递。
3.如权利要求2所述的方法,其特征在于,所述将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,包括:
将所述纹理标识传递给所述图形处理器中的渲染引擎;
在所述渲染引擎识别出所述纹理标识后,通过所述渲染引擎根据所述纹理标识,从所述目标纹理贴图中拷贝所述录制画面数据;
对拷贝出的所述录制画面数据进行数据识别,并在成功识别所述录制画面数据后,将所述录制画面数据转换成与所述图形处理器中的硬编码器相适配的画面数据;
将转换后的画面数据写入所述数据容器,使所述硬编码器从所述数据容器中获取所述转换后的画面数据。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
在成功识别所述录制画面数据后,确定所述录制画面数据的数据格式以及所述硬编码器支持的数据格式;
若所述录制画面数据的数据格式和所述硬编码器支持的数据格式不匹配,则执行将所述录制画面数据转换成与所述图形处理器中的硬编码器相适配的画面数据的步骤;
若所述录制画面数据的数据格式和所述硬编码器支持的数据格式相匹配,则将所述录制画面数据写入所述数据容器,使所述硬编码器从所述数据容器中获取所述录制画面数据。
5.如权利要求1所述的方法,其特征在于,所述将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,包括:
将所述目标纹理贴图中的所述录制画面数据,拷贝至中央处理器的目标内存中;
通过所述中央处理器在所述目标内存中,将所述录制画面数据转换成与所述图形处理器中的硬编码器相适配的画面数据;
将转换后的画面数据从所述目标内存,拷贝至所述图形处理器中的硬编码器中。
6.如权利要求1所述的方法,其特征在于,所述目标应用具有全屏录制模式,所述方法还包括:
获取终端屏幕的屏幕尺寸,以及检测所述全屏录制模式的模式状态;
若所述模式状态为开启状态,则基于所述屏幕尺寸,在图形处理器中生成目标纹理贴图;
若所述模式状态为关闭状态,则根据用户配置的录制尺寸和所述屏幕尺寸,计算所述目标纹理贴图的目标尺寸;并基于所述目标尺寸,在图形处理器中生成目标纹理贴图。
7.如权利要求6所述的方法,其特征在于,所述根据用户配置的录制尺寸和所述屏幕尺寸,计算所述目标纹理贴图的目标尺寸,包括:
根据用户配置的录制尺寸中的录制宽度和录制高度,计算所述录制尺寸的宽高比;以及根据所述屏幕尺寸中的屏幕宽度和屏幕高度,计算所述屏幕尺寸的宽高比;
当所述录制尺寸的宽高比与所述屏幕尺寸的宽高比一致时,确定所述录制宽度和所述屏幕宽度之间的宽度大小关系;
若所述宽度大小关系指示所述录制宽度小于或等于所述屏幕宽度,则将所述录制尺寸确定为所述目标纹理贴图的目标尺寸;
若所述宽度大小关系指示所述录制宽度大于所述屏幕宽度,则对所述录制尺寸进行缩小处理,将缩小处理后的尺寸确定为所述目标纹理贴图的目标尺寸。
8.如权利要求7所述的方法,其特征在于,所述根据用户配置的录制尺寸和所述屏幕尺寸,计算所述目标纹理贴图的目标尺寸,还包括:
当所述录制尺寸的宽高比与所述屏幕尺寸的宽高比不一致时,则执行一次或多次尺寸计算流程,以得到所述目标纹理贴图的目标尺寸:其中,一次尺寸计算流程如下:
确定候选宽度;当首次执行尺寸计算流程时,确定的候选宽度等于所述录制尺寸中的录制宽度,当非首次执行确定所述尺寸计算流程时,确定的候选宽度等于对前一次确定出的候选宽度进行缩小处理所得到的宽度;
基于所述候选宽度和所述屏幕尺寸的宽高比,计算候选高度;以及,比较所述候选高度和所述屏幕尺寸中的屏幕高度之间的高度大小关系;
若所述高度大小关系指示所述候选高度小于所述屏幕高度,则将所述候选宽度和所述候选高度所构成的尺寸,确定为所述目标纹理贴图的目标尺寸;
若所述高度大小关系指示所述候选高度大于所述屏幕高度,则对所述确定的候选宽度进行缩小处理,并执行下一次尺寸计算流程。
9.如权利要求1所述的方法,其特征在于,所述当前应用画面包括N个层级的画面内容,所述目标应用包括N个相机;其中,N为大于1的整数,一个层级的画面内容通过一个相机进行显示;所述方法还包括:
获取用于对目标应用进行画面录制的录制脚本;
根据所述目标应用的画面录制策略,从所述N个相机中确定所述录制脚本需挂载的目标相机;
从所述处理引擎中确定所述目标相机所关联的函数集,所述函数集中至少包括第一数据处理函数和第二数据处理函数;所述第一数据处理函数是指支持调整应用画面的函数,第二数据处理函数是指不支持调整应用画面的函数;
若所述目标应用开启了画面调整模式,则将所述录制脚本埋点至所述第一数据处理函数中;若所述目标应用未开启所述画面调整模式,则将所述录制脚本埋点至所述第二数据处理函数中。
10.如权利要求9所述的方法,其特征在于,所述若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据,包括:
若需对所述当前应用画面进行录制,则将所述第一数据处理函数和所述第二数据处理函数中,被埋点的数据处理函数确定为目标数据处理函数;
执行所述录制脚本,以调用所述处理引擎中与所述目标数据处理函数对应的引擎特性,从所述画面绘制内存区域内的所述当前画面数据中,选取与所述目标相机对应的画面内容相匹配的画面数据,作为所述当前应用画面的录制画面数据。
11.一种画面录制装置,其特征在于,包括:
绘制单元,用于调用目标应用的处理引擎,在画面绘制内存区域中绘制所述目标应用需显示的当前应用画面,并根据绘制得到的当前画面数据显示所述当前应用画面;
录制单元,用于若需对所述当前应用画面进行录制,则从所述画面绘制内存区域内的所述当前画面数据中,确定所述当前应用画面的录制画面数据;
所述录制单元,还用于利用所述处理引擎的引擎特性,将所述录制画面数据复制至图形处理器内的目标纹理贴图中;
所述录制单元,还用于将所述目标纹理贴图中的所述录制画面数据,拷贝至所述图形处理器中的硬编码器中,使所述硬编码器根据获取到的数据,渲染出所述当前应用画面的录制画面;其中,所述录制画面数据是被渲染引擎转换成与所述硬编码器相适配的画面数据后,被写入所述硬编码器创建的数据容器中的;所述渲染引擎是根据所述处理引擎传输的所述目标纹理贴图的纹理标识,从所述目标纹理贴图中拷贝出所述录制画面数据的。
12.一种计算机设备,包括输入接口和输出接口,其特征在于,还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-10任一项所述的画面录制方法。
13.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1-10任一项所述的画面录制方法。
CN202110979365.3A 2021-08-25 2021-08-25 画面录制方法、装置、计算机设备及存储介质 Active CN113663328B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110979365.3A CN113663328B (zh) 2021-08-25 2021-08-25 画面录制方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110979365.3A CN113663328B (zh) 2021-08-25 2021-08-25 画面录制方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN113663328A CN113663328A (zh) 2021-11-19
CN113663328B true CN113663328B (zh) 2023-09-19

Family

ID=78545943

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110979365.3A Active CN113663328B (zh) 2021-08-25 2021-08-25 画面录制方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN113663328B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104602100A (zh) * 2014-11-18 2015-05-06 腾讯科技(成都)有限公司 实现应用内视频、音频录制的方法及装置
CN106127673A (zh) * 2016-07-19 2016-11-16 腾讯科技(深圳)有限公司 一种视频处理方法、装置及计算机设备
CN108648257A (zh) * 2018-04-09 2018-10-12 腾讯科技(深圳)有限公司 全景画面的获取方法、装置、存储介质及电子装置
CN111225271A (zh) * 2020-01-19 2020-06-02 上海小麦互动企业发展有限公司 一种基于安卓机顶盒平台的多引擎抓图录屏方法
CN111562869A (zh) * 2020-03-31 2020-08-21 完美世界(北京)软件科技发展有限公司 截图方法及装置、存储介质、电子装置
CN111724293A (zh) * 2019-03-22 2020-09-29 华为技术有限公司 图像渲染方法及装置、电子设备
CN112004041A (zh) * 2019-05-27 2020-11-27 腾讯科技(深圳)有限公司 视频录制方法、装置、终端及存储介质
CN112020858A (zh) * 2018-04-30 2020-12-01 高通股份有限公司 利用感兴趣区域的确定的异步时间和空间扭曲
WO2021157954A1 (ko) * 2020-02-07 2021-08-12 삼성전자 주식회사 복수의 카메라를 이용한 동영상 촬영 방법 및 그 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3200464A1 (en) * 2012-09-28 2017-08-02 Sony Corporation Image processing device and image processing method
CN105230017B (zh) * 2013-03-21 2019-08-06 索尼公司 图像编码装置和方法以及图像解码装置和方法
US10715804B2 (en) * 2016-04-22 2020-07-14 Sony Corporation Encoding apparatus and encoding method as well as decoding apparatus and decoding method
US11361477B2 (en) * 2020-01-30 2022-06-14 Unity Technologies Sf Method for improved handling of texture data for texturing and other image processing tasks

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104602100A (zh) * 2014-11-18 2015-05-06 腾讯科技(成都)有限公司 实现应用内视频、音频录制的方法及装置
CN106127673A (zh) * 2016-07-19 2016-11-16 腾讯科技(深圳)有限公司 一种视频处理方法、装置及计算机设备
CN108648257A (zh) * 2018-04-09 2018-10-12 腾讯科技(深圳)有限公司 全景画面的获取方法、装置、存储介质及电子装置
CN112020858A (zh) * 2018-04-30 2020-12-01 高通股份有限公司 利用感兴趣区域的确定的异步时间和空间扭曲
CN111724293A (zh) * 2019-03-22 2020-09-29 华为技术有限公司 图像渲染方法及装置、电子设备
CN112004041A (zh) * 2019-05-27 2020-11-27 腾讯科技(深圳)有限公司 视频录制方法、装置、终端及存储介质
CN111225271A (zh) * 2020-01-19 2020-06-02 上海小麦互动企业发展有限公司 一种基于安卓机顶盒平台的多引擎抓图录屏方法
WO2021157954A1 (ko) * 2020-02-07 2021-08-12 삼성전자 주식회사 복수의 카메라를 이용한 동영상 촬영 방법 및 그 장치
CN111562869A (zh) * 2020-03-31 2020-08-21 完美世界(北京)软件科技发展有限公司 截图方法及装置、存储介质、电子装置

Also Published As

Publication number Publication date
CN113663328A (zh) 2021-11-19

Similar Documents

Publication Publication Date Title
US10306180B2 (en) Predictive virtual reality content streaming techniques
US20230053462A1 (en) Image rendering method and apparatus, device, medium, and computer program product
US8446411B2 (en) Adaptive image rendering and use of imposter
CN105917382B (zh) 用于交互式图形流传输的方法和系统
US20100045662A1 (en) Method and system for delivering and interactively displaying three-dimensional graphics
US10089711B2 (en) Reconstructable digital image cache
US20230367953A1 (en) Display rendering method and system
KR20100004119A (ko) 포스트-렌더링 그래픽스 오버레이
KR20150081638A (ko) 전자장치 및 전자장치에서의 웹 플랫폼 동작방법
US9396564B2 (en) Atlas generation based on client video configuration
CN113368492A (zh) 渲染的方法、装置
US20230275948A1 (en) Dynamic user-device upscaling of media streams
CN111209422A (zh) 图像显示方法、装置、电子设备及存储介质
CN114741081B (zh) 一种基于异构缓存访问的跨运行环境显示输出共享方法
US20150117515A1 (en) Layered Encoding Using Spatial and Temporal Analysis
CN113327303A (zh) 图像处理方法、装置、计算机设备及存储介质
CN113663328B (zh) 画面录制方法、装置、计算机设备及存储介质
JP6804191B2 (ja) ビデオストリームの後処理のための方法及び装置
WO2023160041A1 (zh) 图像渲染方法、装置、计算机设备、计算机可读存储介质以及计算机程序产品
CN114904274A (zh) 云游戏的画面渲染方法、装置、电子设备以及存储介质
CN114463474A (zh) 页面显示方法、装置、电子设备、存储介质及产品
CA2969778A1 (en) Glyph management in texture atlases
CN116017058A (zh) 视频播放方法、装置、电子设备和可读存储介质
CN117708454A (zh) 网页内容处理方法、装置、设备、存储介质及程序产品
CN117974814A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40054055

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant