CN113542757A - 云应用的图像传输方法、装置、服务器及存储介质 - Google Patents

云应用的图像传输方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN113542757A
CN113542757A CN202110819854.2A CN202110819854A CN113542757A CN 113542757 A CN113542757 A CN 113542757A CN 202110819854 A CN202110819854 A CN 202110819854A CN 113542757 A CN113542757 A CN 113542757A
Authority
CN
China
Prior art keywords
engine
rendering
cloud application
encoding
instruction
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.)
Granted
Application number
CN202110819854.2A
Other languages
English (en)
Other versions
CN113542757B (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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202110819854.2A priority Critical patent/CN113542757B/zh
Publication of CN113542757A publication Critical patent/CN113542757A/zh
Application granted granted Critical
Publication of CN113542757B publication Critical patent/CN113542757B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请实施例公开了一种云应用的图像传输方法、装置、服务器及存储介质,属于云应用技术领域。该方法包括:响应于云应用的图像渲染指令,通过运行时库层调用虚拟硬件抽象层进行图像渲染,得到原始图像数据;通过运行时库层调用虚拟硬件抽象层对原始图像数据进行图像编码,得到视频流;通过运行时库层向终端推送视频流。由于渲染、编码以及推流整合在运行时库层中,因此云应用的部署集成度较高,有利于云应用的部署;渲染编码在运行时库层以及虚拟硬件抽象层之间完成,云应用画面所经过的处理路径较短,有利于降低云应用画面的显示延迟。

Description

云应用的图像传输方法、装置、服务器及存储介质
技术领域
本申请实施例涉及云应用技术领域,特别涉及一种云应用的图像传输方法、装置、服务器及存储介质。
背景技术
云应用(Cloud Apps)是一种以云计算技术为基础的在线应用技术。在云应用场景下,应用程序并非在用户侧终端运行,而是在服务器中运行,由服务器将应用声音和画面渲染为音视频流,并通过网络传输至用户侧终端,供用户侧终端进行解码播放。
相关技术中,服务器通过虚拟显示(Virtual Display)方式获取应用画面,从而对获取到的应用画面进行编码得到视频流。然而,这种方式下,获取应用画面需要经过较长的获取路径,导致云应用画面的显示存在较大延迟。
发明内容
本申请实施例提供了一种云应用的图像传输方法、装置、服务器及存储介质。所述技术方案如下:
一方面,本申请实施例提供了一种云应用的图像传输方法,所述方法包括:
响应于云应用的图像渲染指令,通过运行时库层调用虚拟硬件抽象层进行图像渲染,得到原始图像数据,所述原始图像数据为云应用画面的图像数据;
通过所述运行时库层调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到视频流;
通过所述运行时库层向终端推送所述视频流。
另一方面,本申请实施例提供了一种云应用的图像传输装置,所述装置包括:
渲染单元,用于响应于云应用的图像渲染指令,通过运行时库层调用虚拟硬件抽象层进行图像渲染,得到原始图像数据,所述原始图像数据为云应用画面的图像数据;
编码单元,用于通过所述运行时库层调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到视频流;
推流单元,用于基于所述视频流,通过所述运行时库层向终端推送视频流。
另一方面,本申请实施例提供了一种服务器,所述服务器包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如上述方面所述的云应用的图像传输方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如上述方面所述的云应用的图像传输方法。
另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的云应用的图像传输方法。
本申请实施例提供的技术方案可以带来如下有益效果:
本申请实施例中,通过将云应用画面的渲染、编码以及推流整合在运行时库层中,从而在接收到云应用的图像渲染指令时,通过运行时库层调用虚拟硬件抽象层进行图像渲染,并进一步调用虚拟硬件抽象层对渲染得到的原始图像数据进行编码,最终通过运行时库层向终端推送包含编码得到的视频流,实现云应用的图像传输;由于渲染、编码以及推流整合在运行时库层中,因此本申请实施例中云应用的部署集成度较高,有利于云应用的部署;并且,渲染编码在运行时库层以及虚拟硬件抽象层之间完成,云应用画面所经过的处理路径较短,有利于降低云应用画面的显示延迟。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一个示例性实施例提供的实施环境的示意图;
图2示出了本申请一个示例性实施例提供的云应用的图像传输方法的流程图;
图3是本申请一个示例性实施例示出的容器化操作***的***架构图;
图4示出了本申请另一个示例性实施例提供的云应用的图像传输方法的流程图;
图5是本申请一个示例性实施例示出的云应用画面传输过程的交互时序图;
图6示出了本申请另一个示例性实施例提供的云应用的图像传输方法的流程图;
图7示出了本申请一个实施例提供的云应用的图像传输装置的结构框图;
图8示出了本申请一个实施例提供的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1示出了本申请一个示例性实施例提供的实施环境的示意图。该实施环境可以包括:终端110和服务器120。
终端110中安装并运行有云应用客户端,通过该云应用客户端,终端110可以在不安装云应用的情况下借助云应用技术使用云应用,从而节省终端110的存储空间(云应用客户端的大小远小于云应用的大小)。其中,该云应用可以为游戏应用、即时通信应用、购物应用、导航应用等等,本实施例对云应用的类型不作限定;并且,该云应用客户端可以支持运行单一云应用,也可以支持运行多种云应用,本实施例对此不作限定。
终端110可以是智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。在一些实施例中,终端110具有显示屏,从而通过显示屏对云应用的应用画面进行显示;终端110具有音频组件(外接或内置),从而通过音频组件播放云应用的应用声音;终端110具有输入组件(例如触摸屏等内置输入组件,或,键盘鼠标等外接输入组件),从而通过输入组件对云应用进行控制。
服务器120是运行有云应用的云端设备,服务器120可以为一台服务器、若干台服务器构成的服务器集群或云计算中心。在一些实施例中,服务器120中设置有中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、编码卡、内存、硬盘等硬件。
可选的,服务器120支持单一云应用,或者,支持多种云应用。本申请实施例中,云应用安装并运行在容器化的操作***中,该容器化的操作***可以为安卓(Android)***、苹果(IOS)***、或者其他终端操作***,本实施例对此不作限定。云应用运行过程中,云应用画面的渲染、编码以及推流均由容器化的操作***执行。
云应用运行过程中,服务器120将云应用声音以及画面进行渲染编码,以音视频流的形式推送给终端110,由终端110中的云应用客户端对音视频流进行解码播放(功能类似于播放器)。当接收到对云应用的控制操作时,比如通过终端110的触摸显示屏接收到对云应用画面中画面元素的触控操作,终端110通过云应用客户端向服务器120发送指令流。服务器120对接收到的指令流进行解析,基于解析结果对云应用进行控制,并继续以音视频流的形式,将更新后的云应用画面和声音推送至终端110。
终端110与服务器120之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。并且,图1中仅示出了一个终端,但在不同实施例中,存在多个终端同时接入服务器120,由服务器120同时为多个终端提供云应用服务,本申请实施例并不对此进行限定。
请参考图2,其示出了本申请一个示例性实施例提供的云应用的图像传输方法的流程图,本申请实施例以该方法应用于图1所示实施环境中的服务器为例进行说明,该方法包括:
步骤201,响应于云应用的图像渲染指令,通过运行时库层调用虚拟硬件抽象层进行图像渲染,得到原始图像数据,原始图像数据为云应用画面的图像数据。
在一种可能的实施方式中,服务器中设置有容器化的操作***,该容器化的操作***中设置有云应用、云应用对应的运行时(Runtime)库层以及虚拟化硬件抽象层(Virtual Hardware Abstraction Layer,VHAL)。其中,运行时库层用于在***运行时提供运行机制相关的服务,比如消息机制;虚拟硬件抽象层指位于操作***内核与硬件电路之间的接口层,用于将硬件抽象化,为操作***提供虚拟硬件平台,使其具有硬件无关性。
可选的,本申请实施例中的运行时库层集成有渲染、编码以及推流功能。当接收到云应用的图像渲染指令时,即存在云应用画面渲染需求时,服务器即通过运行时库层调用虚拟硬件抽象层进行图像渲染,得到云应用画面的原始图像数据。其中,虚拟硬件抽象层基于运行时库层的调用,进一步通过软件或硬件方式进行图像渲染。比如,虚拟硬件抽象层调用CPU进行软件渲染,或者,调用GPU进行硬件渲染。
可选的,该图像渲染指令在云应用运行过程中自动触发,或者,由终端发送的指令流触发。
需要说明的是,由于服务器中的硬件与终端中的硬件不同,因此需要针对服务器中的硬件,定制封装适用于服务器中(容器化)操作***的虚拟硬件抽象层。
步骤202,通过运行时库层调用虚拟硬件抽象层对原始图像数据进行图像编码,得到视频流。
云应用使用过程中,终端的功能类似于播放器,因此服务器需要进一步对渲染得到的原始图像数据进行编码,得到由编码图像数据构成的视频流。在一种可能的实施方式中,运行时库层继续调用虚拟硬件抽象层对渲染得到的原始图像数据进行编码,得到视频流。其中,虚拟硬件抽象层基于运行时库层的调用,通过软件或硬件方式进行图像编码。比如,虚拟硬件抽象层调用CPU进行软件编码,或者,调用GPU进行硬件编码。
步骤203,通过运行时库层向终端推送视频流。
进一步的,运行时库层借助推流功能,将视频流推送给终端,供终端侧的云应用客户端对视频流中的编码图像数据进行图像解码,从而还原出云应用画面。
在一些实施例中,云应用运行过程中的云应用音频被编码为音频流,该音频流与视频流经过合成后得到音视频流,该音视频流由运行时库层推送给终端,以便终端在显示云应用画面的同时播放云应用声音。
可选的,服务器可以直接通过网络将视频流推送给终端,也可以通过额外的推流服务器将视频流推送给终端,本实施例对此不作限定。
显然,采用本申请实施例提供的方案,云应用画面的渲染编码在运行时库层以及虚拟硬件抽象层之间完成,使云应用画面的处理路径得到缩短,有助于降低终端侧云应用画面的显示延迟,对于游戏应用一类对延迟较为敏感的应用而言,能够提升用户的使用体验;并且,云应用画面的渲染、编码以及推流集成在运行时库层,提高了部署的集成度,方便云应用的部署。
综上所述,本申请实施例中,通过将云应用画面的渲染、编码以及推流整合在运行时库层中,从而在接收到云应用的图像渲染指令时,通过运行时库层调用虚拟硬件抽象层进行图像渲染,并进一步调用虚拟硬件抽象层对渲染得到的原始图像数据进行编码,最终通过运行时库层向终端推送视频流,实现云应用的图像传输;由于渲染、编码以及推流整合在运行时库层中,因此本申请实施例中云应用的部署集成度较高,有利于云应用的部署;并且,渲染编码在运行时库层以及虚拟硬件抽象层之间完成,云应用画面所经过的处理路径较短,有利于降低云应用画面的显示延迟。
在一种可能的实施方式中,如图3所示,容器化的操作***中包括云应用31、运行时库层32以及虚拟硬件抽象层33,其中,虚拟硬件抽象层33作为硬件的接口层,通过插件(比如渲染插件、音频插件、编码插件等等)调用服务器的硬件(比如GPU、编码卡等等)提供相关服务。
运行时库层32中包括用于实现图像渲染的渲染引擎321(Render Engine),用于实现图像编码的编码引擎322(Encode Engine)以及用于进行推流的推流引擎323(FlowEngine)。云应用31运行过程中,渲染引擎321接收到云应用31发送的图像渲染指令后,调用虚拟硬件抽象层33进行画面渲染,并进一步通过编码引擎322对渲染得到的原始图像数据进行编码,最终通过推流引擎323基于编码得到的视频流进行推流。
下面采用示例性的实施例,结合渲染引擎、编码引擎和推流引擎对云应用的图像传输过程进行说明。
请参考图4,其示出了本申请另一个示例性实施例提供的云应用的图像传输方法的流程图,本申请实施例以该方法应用于图1所示实施环境中的服务器为例进行说明,该方法包括:
步骤401,通过编码引擎注册编码服务,并通过推流引擎注册推流服务。
由于渲染引擎、编码引擎以及推流引擎对应不同进程,因此为了减少进程间通信造成的消耗,从而进一步缩短图像传输延时,在一种可能的实施方式中,运行时库层中的编码引擎和推流引擎注册为服务,后续即可通过binder(粘合)机制进行进程间通信。
可选的,当接收到云应用启动指令时,编码引擎注册编码服务(Encode service),推流引擎注册推流服务(Flow service)。
步骤402,响应于云应用的图像渲染指令,通过渲染引擎调用虚拟硬件抽象层进行图像渲染,得到原始图像数据。
运行时库层接收到云应用的图像渲染指令时,即通过渲染引擎调用虚拟硬件抽象层进行图像渲染。在一种可能的实施方式中,虚拟硬件抽象层中包括用于实现图像渲染的gralloc模块(gralloc_vhal)和hw模块(hw_vhal),其中,gralloc模块负责图层(surface)的申请(包括分配Framebuffer),hw模块则用于对图层进行合成,并传递给显示设备。具体的,图像渲染过程可以包括如下步骤。
一、通过渲染引擎向gralloc模块申请缓冲区(buffer)。
可选的,当接收到图像渲染指令时,渲染引擎向虚拟硬件抽象层中的gralloc模块申请缓冲区(用于存储图层)。相应的,gralloc模块接收到申请后,调用硬件的用户态驱动申请一块内存或显存供云应用使用。
二、通过渲染引擎在缓冲区进行图层渲染。
申请到缓冲区后,渲染引擎即在缓冲区中进行图层渲染。在一种可能的实施方式中,渲染引擎支持多种渲染方式,渲染引擎可以根据云应用的需求,选择相应的渲染方式进行图层渲染。示意性的,如图3所示,渲染引擎321支持OpenGL ES渲染以及Vulkan渲染。本申请实施例并不对渲染引擎所支持的具体渲染方式进行限定。
并且,图层渲染过程中,虚拟硬件抽象层通过渲染插件调用硬件,采用软件或硬件方式进行图层渲染。其中,硬件渲染速度(比如通过GPU渲染)快于软件渲染速度(比如通过CPU渲染)。
可选的,当硬件资源的剩余量低于阈值时,采用软件渲染,当硬件资源的剩余量高于阈值时,采用硬件渲染。本申请实施例并不对采用的具体渲染策略进行限定。
三、通过渲染引擎请求hw模块进行图层合成,在hw模块完成图层合成后得到原始图像数据。
由于云应用画面由多个图层构成,因此对云应用画面的各个图像进行图层渲染后,需要进一步对各个图层进行合成,得到原始图像数据。在一种可能的实施方式中,渲染引擎完成图层渲染后,即请求虚拟硬件抽象层的hw模块进行图层合成,相应的,hw模块对同一云应用画面的多个图层进行合成,得到原始图像数据。
步骤403,响应于完成图像渲染,通过binder机制获取编码服务。
由于预先进行了编码服务注册,因此在完成图像渲染后,可以通过binder机制进一步获取编码服务,以便编码引擎对原始图像数据进行编码。
在一种可能的实施方式中,虚拟硬件抽象层完成图像渲染后,通过binder机制获取编码服务。比如,结合上述步骤中的示例,hw模块完成图层合成后,通过binder机制获取编码服务。
步骤404,基于获取到的编码服务,通过编码引擎调用虚拟硬件抽象层对原始图像数据进行图像编码,得到视频流。
获取到编码服务后,服务器进一步通过编码引擎调用虚拟硬件抽象层进行图像编码。在一种可能的实施方式中,虚拟硬件抽象层中包含用于实现图像编码的encode模块(encode_vhal),编码引擎即通过调用encode模块进行图像编码。
在一种可能的实施方式中,编码引擎支持多种编码方式,编码引擎可以根据云应用的需求,选择相应的编码方式进行图像编码。示意性的,如图3所示,编码引擎322支持FFmpeg以及MediaCodec。本申请实施例并不对编码引擎所支持的具体编码方式进行限定。
可选的,encode模块接收到编码引擎的编码指令后,调用硬件进行软件编码或硬件编码。比如,可以调用CPU对原始图像数据进行软件编码,或者,可以调用GPU对原始图像数据进行硬件编码(硬件编码速度快于软件编码速度)。在一些实施例中,当硬件资源的剩余量低于阈值时,采用软件编码,当硬件资源的剩余量高于阈值时,采用硬件编码。本申请实施例并不对采用的具体编码策略进行限定。
在一种可能的实施方式中,服务器在虚拟硬件抽象层做渲染后的数据捕获,从而将捕获的原始图像数据直接传递至编码引擎进行编码,减少图像数据的处理路径,提高编码速度。可选的,虚拟硬件抽象层通过hw模块完成图层合成后,通过hw模块向编码引擎发送原始图像数据。
步骤405,响应于完成图像编码,通过binder机制获取推流服务。
由于预先进行了推流服务注册,因此在完成图像编码后,可以通过binder机制进一步获取推流服务,以便推流引擎向终端推送视频流。在一种可能的实施方式中,完成图像编码后,编码引擎通过binder机制获取推流服务。
步骤406,基于获取到的推流服务,通过推流引擎向终端推送视频流。
在一种可能的实施方式中,编码引擎将通过推流服务中的推流接口,将编码得到的视频流发送至推流引擎,由推流引擎进一步将视频流推送至终端。
示意性的,如图3所示,编码引擎322将视频流发送至推流引擎323的Media模块,由Media模块进行推流。
可选的,推流引擎可以集成多种推流方式,比如webrtc、lib555等等,推流引擎可以基于网络状态选择相应的推流方式,本实施例对此不作限定。
在一些实施例中,由于在进行图像渲染时申请了缓冲区,因此为了避免缓冲区被长时间占用,完成视频推流后,需要通知虚拟硬件抽象层进行缓冲区资源回收。
在一种可能的实施方式中,服务器通过推流引擎向编码引擎发送推流完成应答,编码引擎基于该推流完成应答,进一步向hw模块发送编码完成应答,由hw模块基于编码完成应答向渲染引擎发送释放指令,最终由渲染引擎指示gralloc模块释放缓冲区。
本实施例中,运行时库层中的编码引擎以及推流引擎注册为服务,从而在完成图像渲染后,通过binder机制获取编码服务进行图像编码,在编码完成后,通过binder机制获取推流服务进行视频推流,能够降低进程间通信的时间消耗,进一步降低云应用画面的传输延迟。
此外,通过捕获gralloc和hw模块中渲染得到的图像数据,并直接传递给编码引擎进行编码,能够缩短图像的处理路径,从而降低云应用画面的传输延迟。
在一个示意性的例子,云应用的画面传输过程如图5所示。
步骤501,编码引擎向服务管理(ServiceManager)注册编码服务。
步骤502,推流引擎向服务管理注册推流服务。
步骤503,云应用向渲染引擎发送图像渲染指令。
步骤504,渲染引擎向gralloc模块申请缓冲区。
步骤505,gralloc模块向渲染引擎返回缓冲区的文件描述符(file descriptor,fd)。
步骤506,渲染引擎在缓冲区中进行图层渲染。
步骤507,渲染引擎向hw模块发送合成指令。
步骤508,hw模块为fd创建映射map。
hw模块将fd的引用计数由0更新为1(表明正在被使用),并将fd添加至本地的map中。
步骤509,hw模块向渲染引擎发送合成应答。
步骤510,渲染引擎通知云应用渲染完成。
步骤511,hw模块通过binder机制向服务管理请求编码服务(GetEncodeService)。
步骤512,服务管理向hw模块返回编码服务(BpEncodeService)。
步骤513,hw模块向编码引擎发送fd,指示编码引擎进行编码。
步骤514,编码引擎通过encode模块调用硬件进行图像编码。
encode模块封装了硬件编码和软件编码能力,从而能够调用底层的GPU或编码卡进行编码。
步骤515,encode模块通知编码完成。
步骤516,编码引擎通过binder机制向服务管理请求推流服务(GetFlowService)。
步骤517,服务管理向编码引擎返回推流服务(BpFlowService)。
步骤518,编码引擎向推流引擎发送视频流。
可选的,编码引擎调用BpFlowService中的推流接口将视频流发送至推流引擎。
步骤519,推流引擎将视频流推流至终端。
步骤520,推流引擎通知编码引擎完成推流。
步骤521,编码引擎向hw模块发送编码应答。
步骤522,hw模块指示渲染引擎释放fd。
hw模块接收到编码应答后,将fd的引用计数设置为0,并将fd从本地map中删除。
步骤523,渲染引擎指示gralloc模块释放缓冲区。
步骤524,gralloc模块通知释放完成。
在一种可能的实施方式中,推流引擎除了用于实现推流功能外,还用于对终端发送的指令流进行识别,从而根据识别结果,确定指令流用于对云应用进行控制,或者,用于调整云应用的显示参数。示意性的,如图3所示,推流引擎323通过Input模块接收到指令流后,即对指令流进行识别,从而根据识别接口,向云应用31注入操作事件,或者,向编码引擎322发送编码参数调节指令。
可选的,在图4的基础上,如图6所示,步骤401之后可以包括如下步骤:
步骤4011,接收终端发送的指令流。
步骤4012,通过推流引擎识别指令流中指令的指令类型。
在一种可能的实施方式中,指令流中指令的类型包括操作指令和编码控制指令,其中,操作指令用于对云应用中的应用元素进行控制,比如,用户对云游戏画面中的控件进行触控操作时触发操作指令,编码控制指令用于对云应用运行过程中的编码参数进行调整,比如,调整云应用的分辨率、帧率等等。推流引擎获取到指令流后,即对指令流中指令的类型进行识别。
当识别出指令类型为操作指令时,推流引擎向云应用注入操作事件(步骤4013);当识别出指令类型为编码控制指令时,推流引擎向编码引擎发送调整指令。
步骤4013,响应于指令类型为操作指令,通过推流引擎向云应用发送操作事件,操作事件由推流引擎对指令进行转化得到,云应用用于基于操作事件发送图像渲染指令。
为了使云应用能够准确性响应用户操作,推流引擎首先需要对指令流中的指令进行转换,得到云应用能够识别的操作事件,从而将操作事件发送至云应用,由云应用对操作事件进行响应。
在一个示意性的例子中,当云应用为支持触控操作的游戏应用时,推流引擎将指令中的触控坐标转化为触控(touch)事件,并将触控事件发送至云应用,由云应用基于触控时间对游戏中的元素进行控制。
在其他可能的实施方式中,响应于指令类型为编码控制指令,服务器通过推流引擎向编码引擎发送编码参数调节指令,编码参数调节指令用于指示编码引擎调整分辨率和帧率中的至少一种。相应的,编码引擎基于编码参数调节指令中包含的参数,对编码参数进行调整。
比如,当编码参数调节指令指示将分辨率由1080p调整为720p时,编码引擎即在编码过程中降低原始图像数据的分辨率,从而降低视频流的分辨率;当编码参数调节指令指示将帧率由30帧/秒提升为60帧/秒时,编码引擎即在编码过程中进行插帧处理,从而提升视频流的帧率。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图7,其示出了本申请一个实施例提供的云应用的图像传输装置的结构框图。该装置可以包括:
渲染单元701,用于响应于云应用的图像渲染指令,通过运行时库层调用虚拟硬件抽象层进行图像渲染,得到原始图像数据,所述原始图像数据为云应用画面的图像数据;
编码单元702,用于通过所述运行时库层调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到视频流;
推流单元703,用于通过所述运行时库层向终端推送所述视频流。
可选的,所述运行时库层设置有推流引擎、渲染引擎以及编码引擎;
所述渲染单元701,用于:
通过所述渲染引擎调用所述虚拟硬件抽象层进行图像渲染,得到所述原始图像数据;
所述编码单元702,用于:
通过所述编码引擎调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到所述视频流;
所述推流单元703,用于:
通过所述推流引擎向所述终端推送所述视频流。
可选的,所述虚拟硬件抽象层设置有gralloc模块和hw模块;
所述渲染单元701,具体用于:
通过所述渲染引擎向所述gralloc模块申请缓冲区;
通过所述渲染引擎在所述缓冲区进行图层渲染;
通过所述渲染引擎请求所述hw模块进行图层合成,在所述hw模块完成图层合成后得到所述原始图像数据。
可选的,所述装置还包括数据发送单元,用于:
通过所述hw模块向所述编码引擎发送所述原始图像数据。
可选的,所述装置还包括:
释放模块,用于通过所述推流引擎向所述编码引擎发送推流完成应答,所述编码引擎用于基于所述推流完成应答向所述hw模块发送编码完成应答,所述hw模块用于基于所述编码完成应答向所述渲染引擎发送释放指令,所述渲染引擎用于基于所述释放指令指示所述gralloc模块释放所述缓冲区。
可选的,所述虚拟硬件抽象层设置有encode模块;
所述编码单元702,用于:
通过所述编码引擎调用所述encode模块对所述原始图像数据进行图像编码,得到所述视频流,所述encode模块用于调用硬件进行软件编码或硬件编码。
可选的,所述装置还包括:
注册单元,用于通过所述编码引擎注册编码服务,并通过所述推流引擎注册推流服务;
所述编码单元702,用于:
响应于完成图像渲染,通过binder机制获取所述编码服务;
基于获取到的所述编码服务,通过所述编码引擎调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到所述视频流;
所述推流单元703,用于:
响应于完成图像编码,通过binder机制获取所述推流服务;
基于获取到的所述推流服务,通过所述推流引擎向所述终端推送所述视频流。
可选的,所述装置还包括:
接收单元,用于接收所述终端发送的指令流;
识别单元,用于通过所述推流引擎识别所述指令流中指令的指令类型;
第一发送单元,用于响应于所述指令类型为操作指令,通过所述推流引擎向所述云应用发送操作事件,所述操作事件由所述推流引擎对所述指令进行转化得到,所述云应用用于基于所述操作事件发送所述图像渲染指令。
可选的,所述装置还包括:
第二发送单元,用于响应于所述指令类型为编码控制指令,通过所述推流引擎向所述编码引擎发送编码参数调节指令,所述编码参数调节指令用于指示所述编码引擎调整分辨率和帧率中的至少一种。
综上所述,本申请实施例中,通过将云应用画面的渲染、编码以及推流整合在运行时库层中,从而在接收到云应用的图像渲染指令时,通过运行时库层调用虚拟硬件抽象层进行图像渲染,并进一步调用虚拟硬件抽象层对渲染得到的原始图像数据进行编码,最终通过运行时库层向终端推送包含编码得到的视频流,实现云应用的图像传输;由于渲染、编码以及推流整合在运行时库层中,因此本申请实施例中云应用的部署集成度较高,有利于云应用的部署;并且,渲染编码在运行时库层以及虚拟硬件抽象层之间完成,云应用画面所经过的处理路径较短,有利于降低云应用画面的显示延迟。
需要说明的是:上述实施例提供的装置在实现其功能时,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图8,其示出了本申请一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例提供的方法。具体来讲:
所述服务器800包括中央处理单元(CPU)801、包括随机存取存储器(RAM)802和只读存储器(ROM)803的***存储器804,以及连接***存储器804和中央处理单元801的***总线805。所述服务器800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出***(I/O***)806,和用于存储操作***813、应用程序814和其他程序模块815的大容量存储设备807。
所述基本输入/输出***806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中所述显示器808和输入设备809都通过连接到***总线805的输入输出控制器810连接到中央处理单元801。所述基本输入/输出***806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备807通过连接到***总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备807及其相关联的计算机可读介质为服务器800提供非易失性存储。也就是说,所述大容量存储设备807可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的***存储器804和大容量存储设备807可以统称为存储器。
根据本申请的各种实施例,所述服务器800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器800可以通过连接在所述***总线805上的网络接口单元811连接到网络812,或者说,也可以使用网络接口单元811来连接到其他类型的网络或远程计算机***。
所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集经配置以由一个或者一个以上处理器执行,以实现上述实施例中各个步骤的功能。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如上各个实施例所述的云应用的图像传输方法。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的云应用的图像传输方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种云应用的图像传输方法,其特征在于,所述方法包括:
响应于云应用的图像渲染指令,通过运行时库层调用虚拟硬件抽象层进行图像渲染,得到原始图像数据,所述原始图像数据为云应用画面的图像数据;
通过所述运行时库层调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到视频流;
通过所述运行时库层向终端推送所述视频流。
2.根据权利要求1所述的方法,其特征在于,所述运行时库层设置有推流引擎、渲染引擎以及编码引擎;
所述通过所述运行时库层调用虚拟硬件抽象层进行图像渲染,得到原始图像数据,包括:
通过所述渲染引擎调用所述虚拟硬件抽象层进行图像渲染,得到所述原始图像数据;
所述通过所述运行时库层调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到视频流,包括:
通过所述编码引擎调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到所述视频流;
所述通过所述运行时库层向终端推送视频流,包括:
通过所述推流引擎向所述终端推送所述视频流。
3.根据权利要求2所述的方法,其特征在于,所述虚拟硬件抽象层设置有gralloc模块和hw模块;
所述通过所述渲染引擎调用所述虚拟硬件抽象层进行图像渲染,得到所述原始图像数据,包括:
通过所述渲染引擎向所述gralloc模块申请缓冲区;
通过所述渲染引擎在所述缓冲区进行图层渲染;
通过所述渲染引擎请求所述hw模块进行图层合成,在所述hw模块完成图层合成后得到所述原始图像数据。
4.根据权利要求3所述的方法,其特征在于,所述通过所述渲染引擎请求所述hw模块进行图层合成,在所述hw模块完成图层合成后得到所述原始图像数据之后,所述方法包括:
通过所述hw模块向所述编码引擎发送所述原始图像数据。
5.根据权利要求3所述的方法,其特征在于,所述通过所述推流引擎向所述终端推送所述视频流之后,所述方法还包括:
通过所述推流引擎向所述编码引擎发送推流完成应答,所述编码引擎用于基于所述推流完成应答向所述hw模块发送编码完成应答,所述hw模块用于基于所述编码完成应答向所述渲染引擎发送释放指令,所述渲染引擎用于基于所述释放指令指示所述gralloc模块释放所述缓冲区。
6.根据权利要求2所述的方法,其特征在于,所述虚拟硬件抽象层设置有encode模块;
所述通过所述编码引擎调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到所述视频流,包括:
通过所述编码引擎调用所述encode模块对所述原始图像数据进行图像编码,得到所述视频流,所述encode模块用于调用硬件进行软件编码或硬件编码。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
通过所述编码引擎注册编码服务,并通过所述推流引擎注册推流服务;
所述通过所述编码引擎调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到所述视频流,包括:
响应于完成图像渲染,通过binder机制获取所述编码服务;
基于获取到的所述编码服务,通过所述编码引擎调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到所述视频流;
所述通过所述推流引擎向所述终端推送所述视频流,包括:
响应于完成图像编码,通过binder机制获取所述推流服务;
基于获取到的所述推流服务,通过所述推流引擎向所述终端推送所述视频流。
8.根据权利要求2至7任一所述的方法,其特征在于,所述方法还包括:
接收所述终端发送的指令流;
通过所述推流引擎识别所述指令流中指令的指令类型;
响应于所述指令类型为操作指令,通过所述推流引擎向所述云应用发送操作事件,所述操作事件由所述推流引擎对所述指令进行转化得到,所述云应用用于基于所述操作事件发送所述图像渲染指令。
9.根据权利要求8所述的方法,其特征在于,所述通过所述推流引擎识别所述指令流中指令的指令类型之后,所述方法还包括:
响应于所述指令类型为编码控制指令,通过所述推流引擎向所述编码引擎发送编码参数调节指令,所述编码参数调节指令用于指示所述编码引擎调整分辨率和帧率中的至少一种。
10.一种云应用的图像传输装置,其特征在于,所述装置包括:
渲染单元,用于响应于云应用的图像渲染指令,通过运行时库层调用虚拟硬件抽象层进行图像渲染,得到原始图像数据,所述原始图像数据为云应用画面的图像数据;
编码单元,用于通过所述运行时库层调用所述虚拟硬件抽象层对所述原始图像数据进行图像编码,得到视频流;
推流单元,用于通过所述运行时库层向终端推送所述视频流。
11.一种服务器,其特征在于,所述服务器包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如权利要求1至9任一所述的云应用的图像传输方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如权利要求1至9任一所述的云应用的图像传输方法。
CN202110819854.2A 2021-07-20 2021-07-20 云应用的图像传输方法、装置、服务器及存储介质 Active CN113542757B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110819854.2A CN113542757B (zh) 2021-07-20 2021-07-20 云应用的图像传输方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110819854.2A CN113542757B (zh) 2021-07-20 2021-07-20 云应用的图像传输方法、装置、服务器及存储介质

Publications (2)

Publication Number Publication Date
CN113542757A true CN113542757A (zh) 2021-10-22
CN113542757B CN113542757B (zh) 2024-04-02

Family

ID=78129005

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110819854.2A Active CN113542757B (zh) 2021-07-20 2021-07-20 云应用的图像传输方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN113542757B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946402A (zh) * 2021-11-09 2022-01-18 中国电信股份有限公司 基于渲染分离的云手机加速方法、***、设备及存储介质
CN114594993A (zh) * 2022-05-10 2022-06-07 海马云(天津)信息技术有限公司 图形渲染指令流处理装置、处理方法、服务器及渲染方法
CN114827186A (zh) * 2022-02-25 2022-07-29 阿里巴巴(中国)有限公司 云应用处理方法和***
CN114866802A (zh) * 2022-04-14 2022-08-05 青岛海尔科技有限公司 视频流的发送方法和装置、存储介质及电子装置
CN115278289A (zh) * 2022-09-27 2022-11-01 海马云(天津)信息技术有限公司 一种云应用渲染视频帧处理方法与装置
CN116546228A (zh) * 2023-07-04 2023-08-04 腾讯科技(深圳)有限公司 用于虚拟场景的推流方法、装置、设备及存储介质
WO2023216618A1 (zh) * 2022-05-13 2023-11-16 合肥杰发科技有限公司 车载显示***的操作方法和车载显示***
CN117278780A (zh) * 2023-09-06 2023-12-22 上海久尺网络科技有限公司 视频编解码方法、装置、设备及存储介质
WO2024051824A1 (zh) * 2022-09-09 2024-03-14 维沃移动通信有限公司 图像处理方法、图像处理电路、电子设备和可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050223080A1 (en) * 2004-04-05 2005-10-06 Microsoft Corporation Updatable user experience
CN108965397A (zh) * 2018-06-22 2018-12-07 中央电视台 云端视频编辑方法及装置、编辑设备及存储介质
CN111381914A (zh) * 2018-12-29 2020-07-07 中兴通讯股份有限公司 一种云桌面虚机实现3d能力的方法和***
CN111563879A (zh) * 2020-03-27 2020-08-21 北京视博云信息技术有限公司 一种应用画面显示质量的检测方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050223080A1 (en) * 2004-04-05 2005-10-06 Microsoft Corporation Updatable user experience
CN108965397A (zh) * 2018-06-22 2018-12-07 中央电视台 云端视频编辑方法及装置、编辑设备及存储介质
CN111381914A (zh) * 2018-12-29 2020-07-07 中兴通讯股份有限公司 一种云桌面虚机实现3d能力的方法和***
CN111563879A (zh) * 2020-03-27 2020-08-21 北京视博云信息技术有限公司 一种应用画面显示质量的检测方法及装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946402A (zh) * 2021-11-09 2022-01-18 中国电信股份有限公司 基于渲染分离的云手机加速方法、***、设备及存储介质
CN114827186A (zh) * 2022-02-25 2022-07-29 阿里巴巴(中国)有限公司 云应用处理方法和***
CN114866802A (zh) * 2022-04-14 2022-08-05 青岛海尔科技有限公司 视频流的发送方法和装置、存储介质及电子装置
CN114866802B (zh) * 2022-04-14 2024-04-19 青岛海尔科技有限公司 视频流的发送方法和装置、存储介质及电子装置
CN114594993A (zh) * 2022-05-10 2022-06-07 海马云(天津)信息技术有限公司 图形渲染指令流处理装置、处理方法、服务器及渲染方法
CN114594993B (zh) * 2022-05-10 2022-08-19 海马云(天津)信息技术有限公司 图形渲染指令流处理装置、处理方法、服务器及渲染方法
WO2023216618A1 (zh) * 2022-05-13 2023-11-16 合肥杰发科技有限公司 车载显示***的操作方法和车载显示***
WO2024051824A1 (zh) * 2022-09-09 2024-03-14 维沃移动通信有限公司 图像处理方法、图像处理电路、电子设备和可读存储介质
CN115278289A (zh) * 2022-09-27 2022-11-01 海马云(天津)信息技术有限公司 一种云应用渲染视频帧处理方法与装置
CN116546228A (zh) * 2023-07-04 2023-08-04 腾讯科技(深圳)有限公司 用于虚拟场景的推流方法、装置、设备及存储介质
CN116546228B (zh) * 2023-07-04 2023-09-22 腾讯科技(深圳)有限公司 用于虚拟场景的推流方法、装置、设备及存储介质
CN117278780A (zh) * 2023-09-06 2023-12-22 上海久尺网络科技有限公司 视频编解码方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113542757B (zh) 2024-04-02

Similar Documents

Publication Publication Date Title
CN113542757B (zh) 云应用的图像传输方法、装置、服务器及存储介质
KR102389235B1 (ko) 리소스 배치 방법, 장치, 단말기 및 저장 매체
CA2814420C (en) Load balancing between general purpose processors and graphics processors
WO2022257699A1 (zh) 图像画面显示方法、装置、设备、存储介质及程序产品
CN111882626A (zh) 图像处理方法、装置、服务器及介质
CN113457160B (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
CN111494936A (zh) 画面渲染方法、设备、***及存储介质
US10165058B2 (en) Dynamic local function binding apparatus and method
CN115065684B (zh) 数据处理方法、装置、设备以及介质
US20090323799A1 (en) System and method for rendering a high-performance virtual desktop using compression technology
CN110968395B (zh) 一种在模拟器中处理渲染指令的方法及移动终端
CN112354176A (zh) 云游戏实现方法、云游戏实现装置、存储介质与电子设备
CN115292020B (zh) 一种数据处理方法、装置、设备以及介质
JP2022546145A (ja) クラウドネイティブによる3d場面のゲーム方法及びシステム
CN113535063A (zh) 直播页面切换方法、视频页面切换方法、电子设备及存储介质
CN112749022A (zh) 相机资源访问方法、操作***、终端和虚拟相机
CN112843676A (zh) 数据处理方法、装置、终端、服务器及存储介质
CN116546228B (zh) 用于虚拟场景的推流方法、装置、设备及存储介质
CN114598931A (zh) 一种多开云游戏的串流方法、***、装置及介质
CN114268796A (zh) 视频流处理的方法及装置
CN113411660B (zh) 视频数据的处理方法、装置和电子设备
CN111026406A (zh) 应用运行方法、设备和计算机可读存储介质
CN115364477A (zh) 云游戏控制方法、装置、电子设备及存储介质
CN114222185B (zh) 视频播放方法、终端设备及存储介质
CN115018693A (zh) 基于软件定义图形处理器的docker图像加速方法及***

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