CN117435146A - 码流生成方法、***及装置、电子设备和存储介质 - Google Patents
码流生成方法、***及装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117435146A CN117435146A CN202311759397.8A CN202311759397A CN117435146A CN 117435146 A CN117435146 A CN 117435146A CN 202311759397 A CN202311759397 A CN 202311759397A CN 117435146 A CN117435146 A CN 117435146A
- Authority
- CN
- China
- Prior art keywords
- desktop
- image data
- identification information
- code stream
- desktop image
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000012545 processing Methods 0.000 claims description 34
- 238000004891 communication Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 238000012546 transfer Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009349 indirect transmission Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04845—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开提供了一种码流生成方法、***及装置、电子设备和存储介质,以至少解决相关技术中在对抓取的桌面图像数据进行编码时,需要先通过CPU将GPU中的桌面图像数据拷贝至***内存中,再通过CPU对该桌面图像数据进行编码,存在资源占用率高、编码效率低等问题。该方法应用于显卡中,所述方法包括:基于抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中;生成所述桌面图像数据对应的标识信息,并将所述标识信息传递至客户端;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
Description
技术领域
本公开涉及但不限于计算机技术领域,尤其涉及一种码流生成方法、***及装置、电子设备和存储介质。
背景技术
相关技术中,在对抓取的桌面图像数据进行编码的过程中,需要先依赖CPU(Central Processing Unit,中央处理器),将Xorg(它是X窗口***的一个实现,其中,X 窗口***是一种位图显示的视窗***)中记录的存储于GPU(Graphics Processing Unit,图形处理器)中的桌面图像数据拷贝到***内存中,再基于CPU的软编码对该桌面图像数据进行编码,存在CPU、内存等资源占用率高、编码效率低的问题,从而无法满足高分辨率、高帧率、实时性要求较高等应用场景的需求。
发明内容
本公开实施例提供一种码流生成方法、***及装置、电子设备和存储介质。
本公开实施例的技术方案是这样实现的:
本公开实施例提供一种码流生成方法,应用于显卡中,该方法包括:
基于抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中;
生成所述桌面图像数据对应的标识信息,并将所述标识信息传递至客户端;
其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
本公开实施例提供一种码流生成方法,应用于客户端中,该方法包括:
响应于接收到对桌面图像的编码指令,基于所述编码指令,生成抓屏指令;
将所述抓屏指令发送至服务端中,以使得所述服务端调度显卡将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中,并生成所述桌面图像数据对应的标识信息;
接收并存储所述服务端发送的所述标识信息;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
本公开实施例提供一种码流生成***,所述***包括客户端、服务端及显卡,其中:
所述客户端,用于响应于接收到对桌面图像的编码指令,基于所述编码指令,生成抓屏指令;将所述抓屏指令发送至所述服务端中;
所述服务端,用于接收所述客户端发送的所述抓屏指令;将所述抓屏指令发送至所述显卡中;
所述显卡,用于接收所述抓屏指令;基于所述抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中;生成所述桌面图像数据对应的标识信息,并将所述标识信息发送至所述服务端中;
所述服务端,还用于接收所述显卡发送的所述标识信息,并将所述标识信息发送至所述客户端中;
所述客户端,还用于接收并存储所述标识信息;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
本公开实施例提供一种码流生成装置,应用于显卡中,该装置包括:
存储模块,用于基于抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中;
第一处理模块,用于生成所述桌面图像数据对应的标识信息,并将所述标识信息传递至客户端;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
本公开实施例提供一种码流生成装置,应用于客户端中,该装置包括:
生成模块,用于响应于接收到对桌面图像的编码指令,基于所述编码指令,生成抓屏指令;
发送模块,用于将所述抓屏指令发送至服务端中,以使得所述服务端调度显卡将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中,并生成所述桌面图像数据对应的标识信息;
第二处理模块,用于接收并存储所述服务端发送的所述标识信息;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
本公开实施例提供一种电子设备,包括处理器和存储器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法。
本公开实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法。
本公开实施例中,通过基于抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中;生成所述桌面图像数据对应的标识信息,并将所述标识信息传递至客户端;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。这样,首先,显卡实时获取桌面图像数据,而并不是通过CPU获取桌面图像数据,在提升了获取效率的同时还降低了对CPU的占用率;其次,将桌面图像数据对应的标识信息发送至客户端中,而并不是发送整个桌面图像数据,不仅减少了数据量,降低了对通信资源的占用,而且减少了数据拷贝带来的CPU、内存等资源的高消耗,从而提高了***的性能;最后,显卡直接使用存储器(例如,显存)中的桌面图像数据生成桌面码流数据,实现了数据的零拷贝,不仅使得CPU占用较低,而且码流生成效率高,从而可以满足高分辨率、高帧率、实时性较高等应用场景的需求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1为本公开实施例提供的一种相关技术中的码流生成的示意图一;
图2为本公开实施例提供的一种相关技术中的码流生成的示意图二;
图3为本公开实施例提供的一种码流生成方法的实现流程示意图一;
图4为本公开实施例提供的一种码流生成方法的实现流程示意图二;
图5为本公开实施例提供的一种码流生成***的组成结构示意图一;
图6为本公开实施例提供的一种码流生成***的组成结构示意图二;
图7为本公开实施例提供的一种码流生成***的组成结构示意图三;
图8为本公开实施例提供的一种码流生成装置的组成结构示意图一;
图9为本公开实施例提供的一种码流生成装置的组成结构示意图二;
图10为本公开实施例提供的一种电子设备的硬件实体示意图。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开实施例的目的,不是旨在限制本公开。
相关技术中,VNC(Virtual Network Console,虚拟网络控制台)是一款常见的远程控制工具软件,图1为本公开实施例提供的一种相关技术中的码流生成的示意图一,如图1所示,VNC服务端101通过X11(又称之为X 窗口***)的XGetImage接口,从Xorg 102中拷贝桌面图像数据,并将桌面图像数据压缩为JPEG(Joint Photographic Experts Group),以生成对应的桌面码流数据。
RustDesk是一款开源的桌面控制软件,图2为本公开实施例提供的一种相关技术中的码流生成的示意图二,如图2所示,RustDesk 111利用XCB协议(X protocol C-language Binding,X协议C语言绑定)抓取桌面图像数据,通过SHM(SharedMemory,共享内存)机制,从Xorg 112中拷贝桌面图像数据至VPX(Video Pixel,视频像素)编码器,利用该VPX编码器对该桌面图像数据进行编码,以生成对应的桌面码流数据。
由此可知,在对桌面图像数据进行编码流化之前,都需要通过X11或XCB协议,将Xorg中记录的存储于GPU中的桌面图像数据拷贝至***内存中,再进行编码,那么会存在以下问题:
A)在对桌面图像进行抓取时,主要是由CPU完成,使得CPU占用率高;均需要依赖CPU,将Xorg中记录的存储于GPU中的桌面图像数据拷贝至***内存中,导致CPU占用高、拷贝效率低;
B)在对桌面图像数据进行编码流化时,基于CPU的软编码实现数据的编码,编码效率较低;需要多次拷贝,才能将桌面图像数据传递到编码器中,使得内存、CPU等资源的占用率均较高,无法满足高分辨率、高帧率、实时性较高等应用场景中。
本公开实施例提供一种码流生成方法,首先,显卡实时获取桌面图像数据,而并不是通过CPU获取桌面图像数据,在提升了获取效率的同时还降低了对CPU的占用率;其次,将桌面图像数据对应的标识信息发送至客户端中,而并不是发送整个桌面图像数据,不仅减少了数据量,降低了对通信资源的占用,而且减少了数据拷贝带来的CPU、内存等资源的高消耗,从而提高了***的性能;最后,显卡直接使用存储器(例如,显存)中的桌面图像数据生成桌面码流数据,实现了数据的零拷贝,不仅使得CPU占用较低,而且码流生成效率高,从而可以满足高分辨率、高帧率、实时性较高等应用场景的需求。
下面,将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。
图3为本公开实施例提供的一种码流生成方法的实现流程示意图一,应用于显卡中,如图3所示,所述方法包括步骤S11至步骤S12,其中:
步骤S11、基于抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中。
这里,显卡可以是任意合适的显卡。在实施时,该显卡至少具有GPU、VPU(VideoProcess Unit,视频处理单元)、及存储器。其中,VPU是一种全新的视频处理平台核心引擎,具有硬解码功能以及减少CPU负荷的能力。存储器可以是任意合适的能够实现存储功能的模块。例如,显卡内存(显存)。
桌面图像可以包括但不限于本地桌面的图像、远程桌面的图像等。
抓屏指令用于抓取桌面图像数据。在一些实施方式中,该抓屏指令可以是某一进程发送的,也可以是其它电子设备发送的,还可以是用户操作触发的等。
例如,该抓屏指令可以是客户端发送的。其中,客户端可以是电子设备的某一应用进程,其中,电子设备可以为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的终端,也可以实施为服务器。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
又例如,该抓屏指令可以是服务端发送的,其中,该服务端可以是Xorg,该服务端至少为客户端与显卡之间的通信中转站。在实施时,显卡、客户端、服务端可以位于同一电子设备中。
在一些实施方式中,该抓屏指令可以包括但不限于桌面标识、抓取区域等。该桌面标识用于指定被抓取的桌面的标识,该抓取区域可以是整个桌面,也可以是桌面中的一部分。
在一些实施方式中,显卡可以主动获取该桌面图像数据,并将该桌面图像数据存储至存储器中。在实施时,服务端调度GPU进行桌面图像数据的拷贝,即:调度GPU将帧缓存区中的桌面图像数据拷贝至显存(对应于前述存储器)中。其中,帧缓存区(FrameBuffer,FB)是***内核将显存进行抽象后的一块缓存,用于存储桌面图像。在实施时,通过对FB进行读取,可以获取当前桌面图像数据。在一些实施方式中,FB的数量可以为至少一个,在实施时,不同的屏幕可以对应不同的FB。
在一些实施方式中,所述步骤S11包括步骤S111,其中:
步骤S111、基于所述抓屏指令,从所述显卡的帧缓存区中获取与所述抓屏指令匹配的所述桌面图像数据,并将所述桌面图像数据存储至所述存储器中。
这里,GPU根据该抓屏指令,从显卡的帧缓存区拷贝匹配的桌面图像数据至存储器中。例如,若抓屏指令中包括桌面标识为A、抓屏区域为第一区域时,那么,将桌面标识为A的第一区域的桌面图像数据存储至存储器中。
步骤S12、生成所述桌面图像数据对应的标识信息,并将所述标识信息传递至客户端;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
这里,标识信息可以包括但不限于编号、存储地址、文件描述符等。其中,文件描述符在形式上是一个非负整数,其实质是一个索引值。在实施时,通过该标识信息,便可以得到该桌面图像数据。该标识信息是基于桌面图像数据在存储器中的位置信息确定的,不同的存储位置对应不同的标识信息。
在一些实施方式中,对于Linux、Unix等嵌入式操作***而言,所有一切均可以抽象为文件,需要通过该文件描述符来对对应的文件进行读写操作。
标识信息的传递方式可以包括但不限于直接发送、间接发送、广播等。例如,将标识信息发送至服务端中,服务端再将标识信息发送至该客户端中。
客户端可以是电子设备中的某一应用进程。
桌面码流数据的生成方式可以是任意合适的方式,例如,利用显卡的硬件进行编码生成的。又例如,利用显卡中集成的X264等软编码算法生成。在一些实施方式中,该应用进程(对应于客户端)将该标识信息透传至显卡的VPU,以使得VPU通过该标识信息直接访问位于显存中的对应的桌面图像数据,并基于显卡的硬件进行编码以生成桌面码流数据,并将该桌面码流数据返回至客户端中。
在一些实施方式中,所述步骤S12中的“将所述标识信息传递至客户端”,包括步骤S121,其中:
步骤S121、将所述标识信息发送至服务端中,以使得所述服务端将所述标识信息发送至所述客户端中;其中,所述标识信息是基于所述桌面图像数据在所述存储器中的位置信息确定的。
这里,可以通过预设的通信方式,建立服务端和客户端之间的连接。在实施时,服务端和客户端均可以是一个进程。通信方式可以是任意合适的能够实现跨进程通信的方式。例如,Domain Socket,用于同一台主机的不同进程间的通讯,将应用层数据从一个进程拷贝到另一个进程。例如,服务端将获取的标识信息,通过Domain Socket 返回至客户端中。在一些实施方式中,该服务端可以是Xorg,主要用于传递该标识信息等。
在本公开实施例中,首先,显卡实时获取桌面图像数据,而并不是通过CPU获取桌面图像数据,在提升了获取效率的同时还降低了对CPU的占用率;其次,将桌面图像数据对应的标识信息发送至客户端中,而并不是发送整个桌面图像数据,不仅减少了数据量,降低了对通信资源的占用,而且减少了数据拷贝带来的CPU、内存等资源的高消耗,从而提高了***的性能;最后,显卡直接使用存储器(例如,显存)中的桌面图像数据生成桌面码流数据,实现了数据的零拷贝,不仅使得CPU占用较低,而且码流生成效率高,从而可以满足高分辨率、高帧率、实时性较高等应用场景的需求。
在一些实施方式中,所述方法还包括步骤S14,其中:
步骤S14、响应于所述客户端发送的编码请求,从所述存储器中获取与所述编码请求对应的目标桌面图像数据,利用视频处理单元对所述目标桌面图像数据进行编码,得到桌面码流数据,并将所述桌面码流数据发送至所述客户端。
这里,编码请求用于对桌面图像进行编码的请求,该编码请求可以是任意合适的方式生成的请求。例如,用户操作、其它设备发送的等。在一些实施方式中,该编码请求中可以包括但不限于桌面图像数据对应的标识信息、区域等。通过该区域,便可以指定桌面图像数据的编码范围。在实施时,通过对该编码请求进行解析,便可以得到该标识信息和区域。
该目标桌面图像数据可以是该标识信息对应的桌面图像数据,也可以是该标识信息对应的桌面图像数据的一部分。
VPU根据该标识信息,直接访问位于显存中对应的桌面图像数据,并按照该编码策略和区域,对目标桌面图像数据进行编码,生成该目标桌面图像数据对应的桌面码流数据。
编码策略可以包括但不限于编码方式、编码格式等。其中,编码方式可以包括但不限于硬编码。编码格式可以是任意合适的格式。例如,对于视频而言,编码格式可以包括但不限于MPEG2 、MPEG4 、H.264、AVS+、H.265等。
在一些实施方式中,可以基于预设规则来确定编码策略。其中,预设规则可以包括但不限于默认、随机、自定义、用户喜好、使用频率、用户操作信息等。在实施时,本领域技术人员可以根据实际需求自主设定预设规则,本公开实施例不作限定。
例如,电子设备提供配置选项,通过该配置选项,用户可以自定义设置该编码策略。又例如,该编码策略可以是基于用户操作的属性信息确定的,其中,操作的属性信息可以包括但不限于操作的类型、操作距离、速度、位置、时长、次数等。比如,在用户操作为单击时,将第一编码策略(即:编码方式为硬编码、编码格式为H.264)作为该编码策略,在用户操作为双击时,将第二编码策略(即:编码方式为硬编码、编码格式为H.265)作为该编码策略等。在实施时,本领域技术人员可以根据实际需求自主设定操作的属性信息和编码策略之间的对应关系,本公开实施例不作限定。
在本公开实施方式中,通过VPU直接访问显存中的桌面图像数据,并按照预设的编码策略对该桌面图像数据进行编码流化,不仅实现了数据的零拷贝,而且编码效率高、实时性强。
在一些实施方式中,若需要对桌面图像数据进行预处理,那么需要将桌面图像数据从显存中拷贝至内存中,在实施时,可以使用DMA(Direct Memory Access,直接存储器访问)机制进行桌面图像数据的拷贝,不仅拷贝效率高,而且CPU占用率低。其中,预处理可以包括大不限于尺寸调整、加水印等。
图4为本公开实施例提供的一种码流生成方法的实现流程示意图二,应用于客户端中,如图4所示,所述方法包括步骤S21至步骤S23,其中:
步骤S21、响应于接收到对桌面图像的编码指令,基于所述编码指令,生成抓屏指令。
这里,客户端可以是电子设备中的某一应用进程。在实施时,该客户端用于接收该编码指令,传递抓屏指令、桌面图像数据对应的标识信息、码流等。
编码指令用于对桌面图像进行编码的指令。在实施时,该编码指令可以是任意合适的方式生成的指令。例如,按键、手势、语音、其它电子设备发送的等。比如,通过按压实体按键生成的编码指令。又比如,在操作界面上输入的手势生成的编码指令。还比如,接收其它电子设备发送的编码指令。在实施时,本领域技术人员可以根据实际需求自主确定编码指令的生成方式,本公开实施例不作限定。
在一些实施方式中,编码指令中至少包括桌面标识、区域等。在一些实施方式中,被抓取的电子设备可以包括多个桌面,那么通过该桌面标识,便可以从多个桌面中指定目标桌面,通过该区域,便可以指定目标桌面中的某一区域。通常情况下,若该区域为默认值,则将整个桌面作为该区域。在实施时,通过对该编码指令进行解析,得到该桌面标识及区域,生成包含该桌面标识及区域的抓屏指令。
步骤S22、将所述抓屏指令发送至服务端中,以使得所述服务端调度显卡将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中,并生成所述桌面图像数据对应的标识信息。
这里,服务端可以是Xorg。在实施时,当Xorg接收到该抓屏指令时,根据抓屏指令中的桌面标识及区域,调度显卡的GPU将抓屏指令对应的桌面图像数据拷贝至该显卡的存储器中。在实施时,显卡的存储器存储桌面图像数据可以参见前述步骤S11的具体实施方式,显卡生成桌面图像数据的标识信息的方式可以参见前述步骤S12的具体实施方式。
在一些实施方式中,所述客户端中包括抓屏单元;所述步骤S22中的“将所述抓屏指令发送至服务端中”,包括步骤S22包括步骤S221至步骤S222,其中:
步骤S221、基于预设的通信方式,建立所述抓屏单元与所述服务端之间的连接。
这里,抓屏单元为客户端中的一个功能模块,主要用于发送抓屏指令、接收标识信息等。在实施时,由于客户端和服务端可以是同一电子设备的不同进程,那么该通信方式可以是任意合适的能够实现跨进程通信的方式。例如,Domain Socket,通过该DomainSocket,建立抓屏单元与Xorg之间的通信,以便于传递信息。
步骤S222、所述抓屏单元将所述抓屏指令发送至所述服务端中。
这里,抓屏单元将该抓屏指令传递至Xorg中,以使得Xorg根据该抓屏指令中的桌面标识及区域,抓取对应的桌面图像数据。
步骤S23、接收并存储所述服务端发送的所述标识信息;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
这里,该标识信息可以是服务端从显卡中主动获取的,也可以是接收显卡发送的。在实施时,该服务端获得将该标识信息后,通过Domain Socket返回至客户端中,客户端存储该标识信息,以便于生成码流时使用。例如,客户端将包含标识信息的编码请求透传至显卡中,以使得显卡根据该编码请求,从存储器中获取与该标识信息匹配的桌面图像数据,并利用硬编码/软编码的方式,对该桌面图像进行编码,以生成该桌面码流数据。
在本公开实施例中,首先,通过抓屏指令指定抓取某一桌面、或桌面的某一区域,相对于仅能抓取整个桌面而言,提升了抓屏的灵活性;其次,客户端将抓屏指令发送至服务端中,以使得服务端调度GPU进行桌面图像数据的拷贝,完成桌面图像的抓取,不仅提升了抓取效率,而且还降低了CPU的占用率;然后,接收服务端发送的桌面图像数据对应的标识信息,而并不是整个桌面图像数据,不仅减少了数据量,降低了对通信资源的占用,而且减少了数据拷贝带来的CPU、内存等资源的高消耗,从而提高了***的性能;最后,显卡直接使用显存中的桌面图像数据,实现了数据的零拷贝,不仅使得CPU占用较低,而且码流生成效率高,从而可以满足高分辨率、高帧率、实时性较高等应用场景的需求。
在一些实施方式中,所述客户端中包括图像编码单元;所述方法还包括步骤S24,其中:
步骤S24、调度所述图像编码单元将包含所述标识信息的编码请求发送至所述显卡中,以使得所述显卡的视频处理单元从所述存储器中获取与所述编码请求对应的目标桌面图像数据,并按照预设的编码策略,对所述桌面图像数据进行编码,生成所述桌面码流数据。
这里,图像编码单元可以是任意能够实现调度VPU的编码功能的模块。例如,FFmpeg(Fast Forward Mpeg),它是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。在实施时,该图像编码单元与抓屏单元通信连接,抓屏单元将标识信息传递至图像编码单元,以使得图像编码单元将该标识信息透传给显卡的VPU。
在实施时,VPU生成桌面码流数据的方式可以参见上述步骤S14中的具体实施方式。
在本公开实施方式中,通过VPU直接访问显存中的桌面图像数据,并按照预设的编码策略对该桌面图像数据进行编码流化,不仅实现了数据的零拷贝,而且编码效率高、实时性强。
在一些实施方式中,所述方法还包括步骤S25,其中:
步骤S25、响应于接收到所述视频处理单元发送的所述桌面码流数据,基于预设的传输协议,将所述桌面码流数据传递至预设的电子设备中,以使得所述电子设备对所述桌面码流数据进行解码并显示。
这里,传输协议可以是任意合适的能够进行码流传输的协议。例如,RTC(Real-Time Communications,实时通讯)、RTSP(RealTime Streaming Protocol,实时流传输协议)等。
该电子设备与执行该桌面码流数据生成方法的电子设备可以为同一设备,也可以为不同的设备。例如,将桌面码流数据通过RTSP协议传递至本地,经过本地的解码,实时渲染显示云端、或其它电子设备的桌面图像。
解码方式可以包括但不限于硬解码、软解码等。在实施时,通过该解码方式,对该桌面码流数据进行解码。
在本公开实施方式中,按照解码方式对采用VPU硬件加速的方式形成的桌面码流数据进行解码显示,一方面,由于生成码流时,占用较少的内存、及较低的CPU消耗,那么可以将其应用于云桌面渲染、实时直播、数字孪生等实时性要求较高的场景中;另一方面,采用硬解码对桌面码流数据进行解码,提高了硬件资源的利用率、及解码的效率。
基于上述实施例,本公开实施例提供一种码流生成***,图5为本公开实施例提供的一种码流生成***的组成结构示意图一,如图5所示,该码流生成***30包括客户端31、服务端32及显卡33,显卡33中至少包括存储器331。其中:
所述客户端31,用于响应于接收到对桌面图像的编码指令,基于所述编码指令,生成抓屏指令;将所述抓屏指令发送至所述服务端32中;
所述服务端32,用于接收所述客户端31发送的所述抓屏指令;将所述抓屏指令发送至所述显卡33中;
所述显卡33,用于接收所述抓屏指令;基于所述抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器331中;生成所述桌面图像数据对应的标识信息,并将所述标识信息发送至所述服务端32中;
所述服务端32,还用于接收所述显卡33发送的所述标识信息,并将所述标识信息发送至所述客户端31中;
所述客户端31,还用于接收并存储所述标识信息;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
这里,客户端31可以是电子设备的某一应用进程。服务端32可以是Xorg。显卡可以是任意合适的显卡。在实施时,可以通过Domain Socket,建立服务端32和客户端31之间的通信连接,以便于传递信息。
编码指令用于对桌面图像进行编码的指令。在一些实施方式中,编码指令中至少包括桌面标识、区域等。在实施时,客户端31通过对该编码指令进行解析,得到该桌面标识及区域,生成包含该桌面标识及区域的抓屏指令。
桌面图像数据对应的标识信息可以包括但不限于编号、存储地址、文件描述符等。在实施时,显卡将该标识信息返回至Xorg中,Xorg将该标识信息返回至客户端中,以使得客户端将该标识信息透传至显卡中,显卡根据该标识信息直接访问位于显存中的目标桌面图像数据,并对该目标桌面图像数据进行编码以生成该桌面码流数据,并将该桌面码流数据返回至客户端中。
在一些实施方式中,所述客户端31中包括抓屏单元;所述客户端31,还用于:基于预设的通信方式,建立所述抓屏单元与所述服务端之间的连接;所述抓屏单元将所述抓屏指令发送至所述服务端中。
这里,抓屏单元为客户端中的一个功能模块,主要用于发送抓屏指令、接收标识信息等。
在一些实施方式中,所述客户端31中包括图像编码单元;所述客户端31,还用于:调度所述图像编码单元将包含所述标识信息的编码请求发送至所述显卡中,以使得所述显卡的视频处理单元从所述存储器中获取与所述标识信息匹配的桌面图像数据,并按照预设的编码策略,对所述桌面图像数据进行编码,生成所述桌面码流数据。
这里,图像编码单元可以是任意能够实现调度VPU的编码功能的模块。在实施时,该图像编码单元与抓屏单元通信连接,抓屏单元将标识信息传递至图像编码单元,以使得图像编码单元将该标识信息透传给显卡的VPU。
图6为本公开实施例提供的一种码流生成***的组成结构示意图二,如图6所示,该***包括客户端31、服务端32、及显卡33,客户端31中包括抓屏单元311、及图像编码单元312,显卡33中包括显存331、视频处理单元332、及图形处理器333,其中:
抓屏单元311接收到对桌面图像的编码指令后,基于该编码指令,生成抓屏指令,并将该抓屏指令发送至服务端32中,其中,可以预先通过Domain Socket,建立抓屏单元311与服务端32之间的通信连接;
服务端32接收到抓屏单元311发送的抓屏指令后,调度图形处理器333将该抓屏指令对应的桌面图像数据拷贝至显存331中,并生成该桌面图像数据的文件描述符(对应于前述标识信息),一般情况下,文件描述符的大小是固定的,不会随着桌面分辨率的改变而改变、且文件描述符的大小远远小于桌面图像数据的大小;
服务端32获取该文件描述符后,通过Domain Socket,将该文件描述符返回至抓屏单元311中;
抓屏单元311接收到该文件描述符后,将该文件描述符传递至图像编码单元312中;
图像编码单元312接收到该文件描述符后,将该文件描述符透传至视频处理单元332中;
视频处理单元332接收到该文件描述符后,直接访问位于显存331中的桌面图像数据,并按照预设的编码策略,对该桌面图像数据进行编码,以生成该桌面图像数据对应的桌面码流数据,并将该桌面码流数据返回至图像编码单元312。
在一些实施方式中,所述显卡33,还用于:响应于所述客户端发送的编码请求,从所述存储器中获取与所述编码请求对应的目标桌面图像数据,利用视频处理单元对所述目标桌面图像数据进行编码,得到桌面码流数据,并将所述桌面码流数据发送至所述客户端。
在一些实施方式中,所述客户端31,还用于:响应于接收到所述视频处理单元发送的所述桌面码流数据,基于预设的传输协议,将所述桌面码流数据传递至预设的电子设备中,以使得所述电子设备对所述桌面码流数据进行解码并显示。
图7为本公开实施例提供的一种码流生成***的组成结构示意图三,如图7所示,该***包括客户端31、Xorg 32(对应于前述服务端)、显卡33、云端34、及本地35(对应于前述预设的电子设备),客户端31中包括抓屏单元311、及图像编码单元312,显卡33中包括显存331、VPU 332、及GPU 333,其中:
抓屏单元311接收到对桌面图像的编码指令后,基于该编码指令,生成抓屏指令,并通过Domain Socket,将该抓屏指令发送至Xorg 32中;
Xorg 32接收到抓屏单元311发送的抓屏指令后,调度GPU 333从显卡的帧缓存区中获取桌面图像数据;
GPU 333将桌面图像数据拷贝至显存331中,并生成该桌面图像数据的文件描述符;
Xorg 32获取该文件描述符后,通过Domain Socket,将该文件描述符返回至抓屏单元311中;
抓屏单元311接收到该文件描述符后,将该文件描述符传递至图像编码单元312中;
图像编码单元312接收到该文件描述符后,将该文件描述符透传至VPU 332中;
VPU 332接收到该文件描述符后,直接访问位于显存331中的桌面图像数据,并按照预设的编码策略,对该桌面图像数据进行编码,以生成该桌面图像数据对应的桌面码流数据,并将该桌面码流数据返回至图像编码单元312;
图像编码单元312通过预设的传输协议,将桌面码流数据传递至本地35;
本地35接收图像编码单元412发送的桌面码流数据后,对该桌面码流数据进行解码显示,以实现实时显示云端44的桌面图像,可以满足云端高分辨率(例如,4K、8K)、高帧率(例如,60帧每秒、120帧每秒、144帧每秒)等实时性要求较高的需求。
在本公开实施例中,首先,通过抓屏指令指定抓取某一桌面、或桌面的某一区域,相对于仅能抓取整个桌面而言,提升了抓屏的灵活性;其次,客户端将抓屏指令发送至服务端中,以使得服务端调度GPU进行桌面图像数据的拷贝,完成桌面图像的抓取,不仅提升了抓取效率,而且还降低了CPU的占用率;然后,客户端、服务端、及显卡之间传递桌面图像数据对应的标识信息,而并不是整个桌面图像数据,不仅减少了数据量,降低了对通信资源的占用,而且减少了数据拷贝带来的CPU、内存等资源的高消耗,从而提高了***的性能;最后,通过VPU直接使用显存中的桌面图像数据,实现了数据的零拷贝,不仅使得CPU占用较低,而且码流生成效率高,从而可以满足高分辨率、高帧率、实时性较高等应用场景的需求。
基于上述实施例,本公开实施例提供一种码流生成装置,应用于显卡中,图8为本公开实施例提供的一种码流生成装置的组成结构示意图一,如图8所示,所述码流生成装置40包括存储模块41及第一处理模块42,其中:
所述存储模块41,用于基于抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中;
所述第一处理模块42,用于生成所述桌面图像数据对应的标识信息,并将所述标识信息传递至客户端;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
在一些实施方式中,所述存储模块41,还用于:基于所述抓屏指令,从所述显卡的帧缓存区中获取与所述抓屏指令匹配的所述桌面图像数据,并将所述桌面图像数据存储至所述存储器中。
在一些实施方式中,所述第一处理模块42,还用于:将所述标识信息发送至服务端中,以使得所述服务端将所述标识信息发送至所述客户端中;其中,所述标识信息是基于所述桌面图像数据在所述存储器中的位置信息确定的。
在一些实施方式中,所述装置还包括第三处理模块,所述第三处理模块,用于:响应于所述客户端发送的编码请求,从所述存储器中获取与所述编码请求对应的目标桌面图像数据,利用视频处理单元对所述目标桌面图像数据进行编码,得到桌面码流数据,并将所述桌面码流数据发送至所述客户端。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本公开装置实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
基于上述实施例,本公开实施例提供一种码流生成装置,应用于客户端中,图9为本公开实施例提供的一种码流生成装置的组成结构示意图二,如图9所示,所述码流生成装置50包括生成模块51、发送模块52及第二处理模块53,其中:
所述生成模块51,用于响应于接收到对桌面图像的编码指令,基于所述编码指令,生成抓屏指令;
所述发送模块52,用于将所述抓屏指令发送至服务端中,以使得所述服务端调度显卡将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中,并生成所述桌面图像数据对应的标识信息;
所述第二处理模块53,用于接收并存储所述服务端发送的所述标识信息;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
在一些实施方式中,所述客户端中包括图像编码单元;所述第二处理模块53,还用于:调度所述图像编码单元将包含所述标识信息的编码请求发送至所述显卡中,以使得所述显卡的视频处理单元从所述存储器中获取与所述编码请求对应的目标桌面图像数据,并按照预设的编码策略,对所述目标桌面图像数据进行编码,生成所述桌面码流数据。
在一些实施方式中,所述装置还包括第四处理模块,所述第四处理模块,用于:响应于接收到所述视频处理单元发送的所述桌面码流数据,基于预设的传输协议,将所述桌面码流数据传递至预设的电子设备中,以使得所述电子设备对所述桌面码流数据进行解码并显示。
在一些实施方式中,所述客户端中包括抓屏单元;所述发送模块52,还用于:基于预设的通信方式,建立所述抓屏单元与所述服务端的连接;所述抓屏单元将所述抓屏指令发送至所述服务端中。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本公开装置实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
需要说明的是,本公开实施例中,如果以软件功能模块的形式实现上述方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本公开实施例不限制于任何特定的硬件和软件结合。
本公开实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
本公开实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
需要说明的是,图10为本公开实施例提供的一种电子设备的硬件实体示意图,如图10所示,该电子设备600的硬件实体包括:处理器601、通信接口602和存储器603,其中:
处理器601通常控制电子设备600的总体操作。
通信接口602可以使电子设备通过网络与其他终端或服务器通信。
存储器603配置为存储由处理器601可执行的指令和应用,还可以缓存待处理器601以及电子设备600中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(RandomAccessMemory,RAM)实现。处理器601、通信接口602和存储器603之间可以通过总线604进行数据传输。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本公开存储介质和设备实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本公开的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本公开所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本公开实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本公开上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本公开的实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。
Claims (13)
1.一种码流生成方法,其特征在于,应用于显卡中,所述方法包括:
基于抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中;
生成所述桌面图像数据对应的标识信息,并将所述标识信息传递至客户端;
其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
2.根据权利要求1所述的方法,其特征在于,所述基于抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中,包括:
基于所述抓屏指令,从所述显卡的帧缓存区中获取与所述抓屏指令匹配的所述桌面图像数据,并将所述桌面图像数据存储至所述存储器中。
3.根据权利要求1所述的方法,其特征在于,所述将所述标识信息传递至客户端,包括:
将所述标识信息发送至服务端中,以使得所述服务端将所述标识信息发送至所述客户端中;其中,所述标识信息是基于所述桌面图像数据在所述存储器中的位置信息确定的。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
响应于所述客户端发送的编码请求,从所述存储器中获取与所述编码请求对应的目标桌面图像数据,利用视频处理单元对所述目标桌面图像数据进行编码,得到桌面码流数据,并将所述桌面码流数据发送至所述客户端。
5.一种码流生成方法,其特征在于,应用于客户端中,所述方法包括:
响应于接收到对桌面图像的编码指令,基于所述编码指令,生成抓屏指令;
将所述抓屏指令发送至服务端中,以使得所述服务端调度显卡将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中,并生成所述桌面图像数据对应的标识信息;
接收并存储所述服务端发送的所述标识信息;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
6.根据权利要求5所述的方法,其特征在于,所述客户端中包括图像编码单元;所述方法还包括:
调度所述图像编码单元将包含所述标识信息的编码请求发送至所述显卡中,以使得所述显卡的视频处理单元从所述存储器中获取与所述编码请求对应的目标桌面图像数据,并按照预设的编码策略,对所述目标桌面图像数据进行编码,生成所述桌面码流数据。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
响应于接收到所述视频处理单元发送的所述桌面码流数据,基于预设的传输协议,将所述桌面码流数据传递至预设的电子设备中,以使得所述电子设备对所述桌面码流数据进行解码并显示。
8.根据权利要求5至7中任一项所述的方法,其特征在于,所述客户端中包括抓屏单元;所述将所述抓屏指令发送至服务端中,包括:
基于预设的通信方式,建立所述抓屏单元与所述服务端之间的连接;
所述抓屏单元将所述抓屏指令发送至所述服务端中。
9.一种码流生成***,其特征在于,所述***包括客户端、服务端及显卡,其中:
所述客户端,用于响应于接收到对桌面图像的编码指令,基于所述编码指令,生成抓屏指令;将所述抓屏指令发送至所述服务端中;
所述服务端,用于接收所述客户端发送的所述抓屏指令;将所述抓屏指令发送至所述显卡中;
所述显卡,用于接收所述抓屏指令;基于所述抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中;生成所述桌面图像数据对应的标识信息,并将所述标识信息发送至所述服务端中;
所述服务端,还用于接收所述显卡发送的所述标识信息,并将所述标识信息发送至所述客户端中;
所述客户端,还用于接收并存储所述标识信息;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
10.一种码流生成装置,其特征在于,应用于显卡中,所述装置包括:
存储模块,用于基于抓屏指令,将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中;
第一处理模块,用于生成所述桌面图像数据对应的标识信息,并将所述标识信息传递至客户端;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
11.一种码流生成装置,其特征在于,应用于客户端中,所述装置包括:
生成模块,用于响应于接收到对桌面图像的编码指令,基于所述编码指令,生成抓屏指令;
发送模块,用于将所述抓屏指令发送至服务端中,以使得所述服务端调度显卡将所述抓屏指令对应的桌面图像数据存储至所述显卡的存储器中,并生成所述桌面图像数据对应的标识信息;
第二处理模块,用于接收并存储所述服务端发送的所述标识信息;其中,所述标识信息用于在所述客户端获取桌面码流数据时向所述显卡指示所述桌面码流数据对应的目标桌面图像数据。
12.一种电子设备,包括处理器和存储器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8任一项所述方法。
13.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1至8中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311759397.8A CN117435146A (zh) | 2023-12-20 | 2023-12-20 | 码流生成方法、***及装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311759397.8A CN117435146A (zh) | 2023-12-20 | 2023-12-20 | 码流生成方法、***及装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117435146A true CN117435146A (zh) | 2024-01-23 |
Family
ID=89553897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311759397.8A Pending CN117435146A (zh) | 2023-12-20 | 2023-12-20 | 码流生成方法、***及装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117435146A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1474600A (zh) * | 2002-08-07 | 2004-02-11 | ��Ϊ��������˾ | 在视讯终端中传递pc桌面的方法和装置 |
EP1821490A1 (en) * | 2006-02-15 | 2007-08-22 | IBBT vzw | Method for transmitting graphical data to a thin client |
CN113286005A (zh) * | 2021-05-26 | 2021-08-20 | 北京金山云网络技术有限公司 | 抓屏方法、装置、电子设备及存储介质 |
CN113778593A (zh) * | 2021-08-24 | 2021-12-10 | 北京百度网讯科技有限公司 | 云桌面控制方法、装置、电子设备、存储介质及程序产品 |
WO2023216621A1 (zh) * | 2022-05-13 | 2023-11-16 | 华为云计算技术有限公司 | 云桌面的图像处理方法、装置、服务器和存储介质 |
-
2023
- 2023-12-20 CN CN202311759397.8A patent/CN117435146A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1474600A (zh) * | 2002-08-07 | 2004-02-11 | ��Ϊ��������˾ | 在视讯终端中传递pc桌面的方法和装置 |
EP1821490A1 (en) * | 2006-02-15 | 2007-08-22 | IBBT vzw | Method for transmitting graphical data to a thin client |
CN113286005A (zh) * | 2021-05-26 | 2021-08-20 | 北京金山云网络技术有限公司 | 抓屏方法、装置、电子设备及存储介质 |
CN113778593A (zh) * | 2021-08-24 | 2021-12-10 | 北京百度网讯科技有限公司 | 云桌面控制方法、装置、电子设备、存储介质及程序产品 |
WO2023216621A1 (zh) * | 2022-05-13 | 2023-11-16 | 华为云计算技术有限公司 | 云桌面的图像处理方法、装置、服务器和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180270496A1 (en) | Composite video streaming using stateless compression | |
US20210377579A1 (en) | Systems and Methods of Orchestrated Networked Application Services | |
WO2022257699A1 (zh) | 图像画面显示方法、装置、设备、存储介质及程序产品 | |
WO2024037137A1 (zh) | 一种沉浸媒体的数据处理方法、装置、设备、介质和产品 | |
CN107592551B (zh) | 用于云流服务的方法和设备 | |
CN113542757A (zh) | 云应用的图像传输方法、装置、服务器及存储介质 | |
US8620096B2 (en) | Virtualization server for presentation virtualization and image data encoding method | |
CN111885346A (zh) | 画面码流合成方法、终端、电子设备和存储介质 | |
WO2023051138A1 (zh) | 沉浸媒体的数据处理方法、装置、设备、存储介质及程序产品 | |
US9596435B2 (en) | Distribution control apparatus, distribution control method, and computer program product | |
CN115065684A (zh) | 数据处理方法、装置、设备以及介质 | |
CN109314792B (zh) | 内容分发网络中的mpeg媒体传输集成的方法和设备 | |
Chen et al. | Optimized viewport‐adaptive 360‐degree video streaming | |
WO2024041239A1 (zh) | 一种沉浸媒体的数据处理方法、装置、设备、存储介质及程序产品 | |
JP2002112220A (ja) | 動画情報配信方法 | |
WO2023226504A1 (zh) | 一种媒体数据处理方法、装置、设备以及可读存储介质 | |
CN112363791A (zh) | 一种录屏方法、装置、存储介质及终端设备 | |
WO2023130896A1 (zh) | 媒体数据的数据处理方法、装置、计算机设备及存储介质 | |
CN116668741A (zh) | 云桌面的显示方法、图像显示方法、设备和存储介质 | |
CN114938408B (zh) | 一种云手机的数据传输方法、***、设备及介质 | |
WO2023071469A1 (zh) | 视频处理方法、电子设备及存储介质 | |
CN117435146A (zh) | 码流生成方法、***及装置、电子设备和存储介质 | |
CN117435112B (zh) | 数据处理方法、***及装置、电子设备和存储介质 | |
CN116546262A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
WO2023169001A1 (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 |