数据处理的方法和系统、云终端、服务器和计算设备
1.本技术要求于2020年9月7日提交的申请号为202010928653.1、发明名称为“编码/解码的方法、装置、服务器及存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本发明涉及云技术领域,主要涉及一种数据处理的方法和系统、云终端、服务器、计算设备和计算机程序产品。
背景技术:
3.云手机(cloud phone)作为一种新型服务,对物理手机起到非常好的延展和补充作用,并开始在云手机游戏、云手机直播、移动办公等场景崭露头角。在上述场景中,均会涉及到视频的编解码,例如:(1)云手机游戏,需将手机屏幕画面(或游戏画面)进行视频编码后,通过网络传输到物理手机;(2)直播场景下,需将接收到的物理手机的摄像头画面数据进行视频解码并显示在云手机,当云手机上启动直播应用时,云手机将该摄像头画面数据进行视频编码并发送到直播平台;(3)移动办公场景,政府、金融等信息安全诉求较高行业员工通过即时通讯应用进行视频通话时,云手机上的摄像头画面需进行视频编码,在视频会议共享播放视频时,需进行视频解码。
4.然而,由于视频编解码对云手机cpu性能要求比较高,为满足云手机直播、移动办公的需求,就必须提高单台云手机的cpu规格,这样将会产生两个弊端:(1)使单台云手机的成本费用增加,不利于构建云手机在直播、移动办公领域的竞争优势;(2)此外,云手机的使用时间具有一定的时段性,例如直播和移动办公分别集中在白天上班、晚上下班休闲时间,会造成云手机的cpu资源的浪费。
技术实现要素:
5.下面结合附图详细介绍本技术实施例提供的一种数据处理的方法和系统、云终端、服务器、计算设备和计算机程序产品处理数据,可以减少对云手机的cpu资源的占用。
6.在本公开的第一方面,提供了一种数据处理的方法,应用于云终端和服务器之间。该方法包括:云终端发送数据;服务器接收该数据;服务器对该数据进行处理,其中,该处理为对该数据进行编码或对该数据进行解码;服务器向云终端发送处理后的数据。
7.本技术提供的处理数据的方法,将云终端的编码和解码任务分担到服务器上,使得云终端的处理器资源得到了节约,降低了单台云终端的成本和规格。服务器拥有的强大计算资源,进一步提升云终端上的编码和解码任务的效率。
8.第一方面的一种可能设计,所述服务器对该数据进行编码包括:对该数据进行硬件编码或者软件编码。
9.由服务器的编码器模块负责该编码任务。其中,软件编码任务在cpu上运行;硬件编码任务在硬件编解码芯片上运行。当编码任务在服务器执行时,服务器可以提供更高的
编码效率。
10.第一方面的一种可能设计,所述服务器对该数据进行解码包括:对该数据进行硬件解码或者软件解码。
11.由服务器的解码器模块负责该解码任务。其中,软件解码任务在cpu上运行,硬件解码任务在硬件编解码芯片上运行。当解码任务在服务器执行时,服务器可以提供更高的解码效率。
12.第一方面的一种可能设计,所述数据处理的方法还包括:云终端向服务器发送处理规则;该处理规则用于确定对该数据进行硬件编码或者软件解码,或者该处理规则用于确定对该数据进行软件编码或者软件解码。
13.云终端向服务器发送指令和数据,指令中包括处理规则,处理规则中包括编码方式或解码方式:编码方式包括硬件编码或者软件编码,解码方式包括硬件解码或者软件解码。服务器根据编码方式和解码方式的不同,调用不同的编码模块和解码模块分别进行运算,可参考前文的描述。
14.第一方面的一种可能设计,所述数据处理的方法还包括:云终端发送数据之前,云终端获取终端对所述数据进行处理的请求。
15.在云终端向服务器发送数据之前,云终端要先从终端获取一个数据处理的请求。这个请求来自一个物理终端,且是由终端的用户触发的。
16.第一方面的一种可能设计,所述数据处理的方法还包括:云终端发送数据之前,云终端获取对该数据进行处理的请求,该请求是所述云终端上的应用触发的。
17.在云终端向服务器发送数据之前,云终端从应用获取一个数据处理的请求,该请求与应用层的编码或解码需求有关。如果该应用需要编码则发出编码请求,如果该应用需要解码则发出解码请求。
18.其中,该应用所发出的请求中的处理规则,与本发明第一方面的第三种可能的实现方式中,云终端向服务器发送的处理规则并不等同,即云终端可以对该处理规则进行修改,并将修改后的处理规则发送给服务器。修改的方式有四种:软件编码改为硬件编码、硬件编码改为软件编码、软件解码改为硬件解码、硬件解码改为软件解码。其中,软件编码改为硬件编码和软件解码改为硬件解码,可以提高编码和解码的效率、减少对云终端cpu资源的效率,还可以解决部分应用在云终端上调用硬件编码或硬件解码时不兼容的问题。
19.第一方面的一种可能设计,所述数据处理的方法还包括:云终端向终端发送根据所述数据得到的虚拟桌面。
20.云终端的应用基于处理后的数据获得虚拟桌面,并将该虚拟桌面下发至终端,以便终端显示该虚拟桌面给用户。
21.第二方面,本发明提供了一种处理数据的系统,该系统包括:
22.云终端,用于向服务器发送数据;
23.服务器,用于接收该数据,对所述数据进行处理后,向云终端发送处理后的数据,所述处理为对该数据进行编码或者对该数据进行解码。
24.本技术提供的处理数据的方法,将云终端的编码和解码任务分担到服务器上,使得云终端的处理器资源得到了节约,降低了单台云终端的成本和规格。服务器拥有的强大计算资源,进一步提升云终端的编码和解码任务的效率。
25.第二方面的一种可能设计,所述服务器还包括:用于对该数据进行硬件编码或者软件编码。
26.由服务器的编码器模块负责该编码任务。其中,软件编码任务在cpu上运行;硬件编码任务在硬件编解码芯片上运行。当编码任务在服务器执行时,服务器可以提供更高的编码效率。
27.第二方面的一种可能设计,所述服务器还包括:用于对该数据进行硬件解码或者软件解码。
28.由服务器的解码器模块负责该解码任务。其中,软件解码任务在cpu上运行;硬件解码任务在硬件编解码芯片上运行。当解码任务在服务器执行时,服务器可以提供更高的解码效率。
29.第二方面的一种可能设计,所述数据处理的系统还包括:
30.云终端,用于向服务器发送处理规则,其中,该处理规则用于确定对该数据进行硬件编码或者软件解码,或者该处理规则用于确定对该数据进行软件编码或者软件解码。
31.云终端向服务器发送指令和数据,指令中包括处理规则,处理规则中包括编码方式或解码方式:编码方式包括硬件编码或者软件编码,解码方式包括硬件解码或者软件解码。服务器根据编码方式和解码方式的不同,调用不同的编码模块和解码模块分别进行运算,可参考前文的描述。
32.第二方面的一种可能设计,所述数据处理的系统还包括:
33.云终端,用于获取终端对所述数据进行处理的请求。
34.在云终端向服务器发送数据之前,云终端要先从终端获取一个数据处理的请求,这个请求来自一个物理终端,且是由终端的用户触发的。
35.第二方面的一种可能设计,所述数据处理的方法还包括:
36.云终端,用于获取对该数据进行处理的请求,该请求是所述云终端上的应用触发的。
37.在云终端向服务器发送数据之前,云终端从应用获取一个数据处理的请求,该请求与应用层的编码或解码需求有关。如果该应用需要编码则发出编码请求,如果该应用需要解码则发出解码请求。
38.其中,该应用所发出的请求中的处理规则,与本发明第二方面的第三种可能的实现方式中,云终端向服务器发送的处理规则并不等同,即云终端可以对该处理规则进行修改,并将修改后的处理规则发送给服务器。修改的方式有四种:软件编码改为硬件编码、硬件编码改为软件编码、软件解码改为硬件解码、硬件解码改为软件解码。其中,软件编码改为硬件编码和软件解码改为硬件解码,可以提高编码和解码的效率、减少对云终端cpu资源的效率,还可以解决部分应用在云终端上调用硬件编码或解码时不兼容的问题。
39.第二方面的一种可能设计,所述数据处理的系统还包括:
40.云终端,用于向终端发送根据所述数据得到的虚拟桌面。
41.云终端的应用基于处理后的数据获得虚拟桌面,并将该虚拟桌面下发至终端,以便终端显示该虚拟桌面给用户。
42.第二方面的一种可能设计,所述数据处理的系统还包括:云终端是云手机。
43.第三方面,本技术提供一种云终端,该云终端为本技术第二方面或者第二方面的
任一可能设计提供的云终端。
44.第四方面,本技术提供一种服务器,该服务器为本技术第二方面或者第二方面的任一可能设计提供的服务器。
45.第五方面,本技术提供一种计算设备,所述计算设备包括处理器、存储器。所述处理器执行所述存储器中的指令,使得所述计算设备实现本技术第二方面或者第二方面的任一可能设计提供的云终端或者服务器。
46.第六方面,本技术提供一种计算机程序产品,所述计算机程序产品包括指令,所述指令用于实现本技术第一方面或者第一方面的任一可能设计提供的方法中由云终端执行的步骤,和/或用于实现申请第一方面或者第一方面的任一可能设计提供的方法中由服务器执行的步骤。
47.本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
48.图1是本技术实施例提供的数据处理的系统结构的举例示意图。
49.图2是本技术实施例提供的数据处理的系统结构的举例示意图。
50.图3是本技术实施例提供的数据处理的系统结构的举例示意图。
51.图4是本技术举例提供的数据处理的系统结构的举例示意图。
52.图5是本技术实施例提供的数据处理的方法流程图。
53.图6是本技术实施例提供的数据处理的系统结构的举例示意图。
54.图7是本技术实施例提供的数据处理方法的系统结构的举例示意图
55.图8是本技术实施例提供的数据处理的方法框架的举例示例图。
56.图9是本技术实施例提供的云手机购物直播场景下涉及到数据处理的方法的举例示意图。
57.图10是本技术实施例提供的装置300的举例结构图。
58.图11是申请实施例提供的计算设备600的举例结构图。
具体实施方式
59.图1是本技术实施例提供的一种数据处理的系统结构示意图,如图1所示,该系统可以包括云终端001和服务器002。
60.在一种实施例中,云终端001可以是提供虚拟桌面的虚拟设备,例如该虚拟设备可以是实例,实例可以是虚拟机或者容器。一种可以的实现方式,云终端001为云手机。
61.服务器002可以是具有计算能力的设备,服务器002具有存储器和处理器。服务器002的处理器可以为中央处理器(central processing unit,cpu)。可选的,服务器002还可以有图形处理器(graphics processing unit,gpu)、神经网络处理器(neural network processing unit,npu)、fpga(field programmable gate array)中的一种或多种,服务器002的存储器可以为随机存取存储器(random access memory,ram)或者固态驱动器(solid-state drive,ssd)等其它具有存储能力的设备或者内存实例。固态驱动器也可以称为固态硬盘(solid-state drive,ssd)
62.在本技术的实施例中,云终端001上可以安装有应用,应用可以包括视频直播、视频通话、视频会议、视频播放器、音频播放器、手机游戏等应用。可选的,云终端001上的应用可以发出编码或解码的请求,或者可以是同时发出编码和解码请求。
63.在一种实施例中,服务器002可以是部署在网络中的一台物理设备,云终端001和服务器002基于通讯协议或者调用协议进行通信,这样云终端001可以调用服务器002提供的服务或者和服务器002进行数据交互。例如,该通讯协议可以是套接字(socket)。例如,该调用协议可以是远程过程调用(remote procedure call,prc)。
64.一种实现场景举例,服务器002可以部署有软件编码模块和软件解码模块。软件编码模块用于对数据的进行编码。软件解码模块用于对数据进行解码。一种可以的实现方式,所述编码或解码的运算是在服务器002的cpu上运行的。一种可能实现方式,软件编码模块和软件编码模块可以直接部署在服务器002中,或者部署在服务器002运行的实例中。
65.一种实现场景举例,服务器002可以是具备硬件编码能力的设备,服务器002部署有硬件编码模块和硬件解码模块。硬件编码模块用于对数据的进行编码。硬件解码模块用于对数据进行解码。一种可以的实现方式,该编码和解码的运算是在服务器002的硬件编码芯片上运行的,例如硬件编码芯片可以是gpu或者npu或者其他具备硬件编码能力的芯片。
66.图2是本技术实施例提供的第二种数据处理的系统结构示意图,如图2所示,该服务器002还可以部署在一个云服务器集群003中。云服务器集群003中有多个与服务器002类似的服务器。云服务器集群003的服务器002还可以由一定数量的弹性云服务器(elastic cloud server,ecs),即云服务器集群003中的服务器002的数量是可以弹性伸缩的。
67.图2是本技术实施例提供的第三种数据处理的系统结构示意图,如图3所示,该服务器002还可以部署在一个数据中心004中。
68.在一种可能的实施例中,在云服务器集群003(或数据中心004)中,可以包含一个或多个服务器,服务器可以提供编码能力,或者服务器可以提供解码能力,或者服务器同时提供编码和解码的能力。一种场景举例,用于编码的服务器和用于解码的服务器属于不同的集群或者数据中心。即用于编码的服务器组成的集群叫做编码集群,用于解码的服务器组成的集群叫做解码集群,用于编码的服务器组成所在的数据中心叫做编码数据中心,用于解码的服务器所在的数据中心叫做解码数据中心。
69.图4是举例提供的另一种数据处理的系统结构示意图。如图4所示,基于图1至图3任一个系统结构示意图所描述的内容,该系统可以包括终端005。在一些实施例中,终端005可以是手机、平板或其它具有显示和通讯功能的物理设备。终端005可以通过网络和云终端001进行通讯,终端005将本地数据和指令上传到云终端001,云终端001可以将虚拟桌面下发至终端005,用户可以在终端005上对云终端001上运行的装有虚拟桌面操作系统进行控制。一种场景举例,图4中的服务器002还可以是图3和图4中的云服务器集群003或者数据中心004,云服务器集群003和数据中心004的实现方式请参照前文的描述。
70.示例性的,如图4所示,终端005可以从本地采集视频数据,上传采集的视频数据到云终端001的软件中。云终端001可以根据应用的需求向服务器002发送服务请求(例如编码请求或者解码请求),并将终端005在本地采集的视频数据转发给服务器002;服务器002将处理后的视频数据返回给云终端001的应用。云终端的应用基于处理后的视频数据获得虚拟桌面,例如基于视频数据生成直播界面,该直播界面属于该虚拟桌面显示的部分或者全
部内容。云终端001将该虚拟桌面下发至终端005的显示器上。
71.图5是本技术实施例提供的一种数据处理的方法流程图,该方法可以应用于如图1至图4所示的任一个系统中。图5是以该方法应用于如图1所示的系统架构的一个实施例,图1的系统中包括一个云终端和一个服务器。图2至图4的系统架构比图1复杂,应用于它们的方法实施例流程图的步骤会比图5更多,但它们的核心步骤仍然和图5所示的实施例的流程图相似。下面结合图1和图5举例说明本技术处理数据的方法的流程。该流程步骤包括步骤201至步骤205。
72.步骤201、云终端向服务器发送数据。
73.云终端将数据通过网络发送给服务器,该数据为待解码或者待编码的数据。
74.一种可能的实现的方式,云终端向服务器发送指示编码和指示解码的指令,指令包含编码或解码的规则。
75.可选地,该指令携带待编码或待解码的数据。
76.可选地,该指令和数据(待编码或待解码的数据)是独立发送的。
77.在一个可能的实施例中,云终端可以是在持续发送一条视频流数据,在开始发送视频流的同时向服务器发送启动编码的指令,示例的,在视频流停止或应用发出停止的请求后,云终端会向服务器发出关闭编码服务的指令。
78.场景举例,云终端上安装有一些应用,应用可以根据自身业务需求发出编码或解码请求,示例的,直播应用可以发出编码请求,视频播放应用可以发出解码请求。该编码请求中的编码方式可以是硬件编码或软件编码。该解码请求中的解码方式可以是硬件解码或软件解码。
79.在一种可能的实施方式中,云终端根据应用发出的请求确定编码或解码的规则。
80.在一种可能的实施方式中,该确定的规则中的编码或解码的方式可以与应用发出请求中的编码或解码的规则不同。例如,应用发出软件编码的请求,而该确定的编码规则为硬件编码,或,应用发出硬件编码的请求,而该确定的编码规则为软件编码,即云终端可以对应用发出的编码方式进行修改。
81.在一种可能的实施方式中,该确定的规则中的编码或解码的方式还可以与应用发出请求中的编码或解码的规则相同,即云终端可以不对应用发出的编码方式进行修改。
82.步骤202、服务器接收数据。
83.举例说明,服务器接收到云终端发送的数据后,还需要根据云终端同步发来的指令启动编码或解码任务,同时向云终端返回相应的服务响应。在一个可能的实施例中,服务器可以是在持续接收一条视频流数据,在接收到启动的命令后,服务器就会开始对持续接收到的视频帧进行编码或解码,并向云终端返回开始编码或解码的服务响应,直到服务器接收到关闭编码或解码任务的命令,再向云终端返回结束编码或解码的服务响应。
84.步骤203、服务器进行编码或解码服务。
85.举例说明,服务器根据接收到编码规则或解码规则对数据进行编码或解码,其中,编码规则可以包括编码标准、编码参数、编码方式。解码规则可以包括解码标准、解码参数、解码方式。
86.一种编码的举例实现,服务器接收到云终端发来的编码请求,编码请求中包含编码标准可以为h.264、h.264等标准,编码参数可以包括分辨率、码率、帧率、dts和pts等,编
码方式可以为软件编码或硬件编码。例如,视频编码是将原始视频格式文件转换成另一种视频格式文件的过程,主要目的是将原始视频进行压缩,以便于存储传输。编码后的数据就是压缩帧,压缩帧比原始帧数据量小。
87.示例的,如果该编码方式为硬件编解码,服务器则调用硬件编码芯片(例如gpu芯片)对原始帧进行编码计算。如果该编码方式是软件编码,服务器则调用cpu对原始帧进行编码计算。
88.服务器采用的编码方式和接收到的指令中的编码方式可以是相同的,但在一些实施例中,服务器采用的编码方式可以与云终端应用发出的请求中编码方式不同,云终端对请求中的内容做了一些处理,该处理可以包括修改编码方式,可以参考步骤201中的描述。
89.一种解码的举例实现,服务器接收到云终端发来的解码请求,其中的解码标准、解码参数、解码方式可以参考前文编码规则中的描述。例如,视频解码是视频编码的逆过程,通过解压缩技术,将压缩视频格式的文件转换成原始视频格式文件的过程,主要目的是将压缩视频帧进行解压缩,以支持画面的播放显示。解码后的数据就是解码帧(相对于原始帧可能是有损的),解码帧比压缩帧数据量大,可视化后的视觉效果更好。
90.示例的,如果该编码方式为硬件编解码,服务器则调用硬件解码芯片对压缩帧进行解码计算,例如gpu芯片。如果该解码方式是软件解码,服务器则调用cpu对压缩帧进行解码计算。
91.在一些实施例中,服务器采用的解码方式和接收到的指令中的解码方式可以是相同的。
92.在一些实施例中,服务器采用的解码方式可以与云终端应用发出的请求中解码方式不同,云终端对请求中的内容做了一些处理,该处理可以包括修改解码方式。举例说明,指令指示的解码方式为软件解码,但服务器采用的解码方式为硬件解码。
93.步骤204、服务器发送处理后的数据。
94.服务器将处理后的数据通过网络发送到云终端。
95.一种应用场景举例,服务器将编码后的编码帧发送给云终端,其中,编码帧是由服务器内部负责编码的模块处理生成的。
96.一种应用场景举例,服务器将解码后的解码帧发送给云终端,其中,解码帧是由服务器内部负责解码的模块处理生成的。
97.一种可以的实现方式,服务器是在持续发送一个处理后的视频流。在一些可能的实施例中,在收到停止编解码指令或视频流传输停止后,服务器会在停止编解码服务后同时向云终端发送响应。
98.步骤205、云终端接收处理后的数据。
99.云终端从网络接收到服务器返回的数据,示例的,该数据可以包含处理后的解码帧或压缩帧。
100.一种应用场景举例,一个视频播放应用在之前发出了解码请求,云终端在收到服务器返回解码流后,通过框架层把数据转发给应用层的该视频播放应用,视频播放应用把解码后的视频流呈现在应用的用户界面中。一种可能的实现中,该应用用户界面所在的桌面内容会被下发到某个终端上。
101.一种应用场景举例,一个视频通话应用在之前发出了编码请求,云终端在收到服
务器返回编码流后,通过框架层把数据转发给应用层的该视频播放应用,视频通话应用把编码后的视频流通过网络发送到其他一个或多个终端或存储在云端,例如,与当前用户视频通话的对象所使用的终端会收到该编码视频流。
102.图6是本技术实施例提供的一种数据处理方法的系统结构示意图,包括云终端001和服务器002的内部结构图。云终端包括应用层和架构层,其中应用层包括各类应用,本实施例中主要涉及101和102这两类应用。应用101需要架构层提供视频编码的服务,应用102需要架构层提供视频解码的服务。架构层包括编解码管理模块111,它由媒体编解码接口、软件编解码插件或硬件编解码插件以及相应控制模块组成,它负责接收直播、视频通话、视频播放等应用的编码或解码请求,根据不同应用的需求差异,调用相应软件或硬件插件,并返回目标视频帧数据。云终端的通讯模块114和服务器的通讯模块121是用于通过传输协议在网络中为云终端和转码集群传输数据和控制指令。服务器转码管理模块122是负责接收云手机编码或解码模块的编码或解码请求,并下发编码或解码任务给相应的外部编码或解码器模块,同时负责接收编码或解码后的数据转发给通讯模块121。编码器模块123负责真正的视频编码工作,接收原始视频帧,由硬件编码芯片进行编码后,返回压缩帧;解码器集模块124负责真正的视频解码工作,接收原始压缩帧,由硬件解码芯片进行解码后,返回解码帧。可选的,编码器模块123和解码器模块124也可以隶属同一个功能模块,不影响本实施例的方案。
103.在另一种实施例中,如图7所示,是本技术提供的另一种数据处理方法的系统结构示意图。相比图6,云终端的编解码服务是由云服务器集群或数据中心来承载,而不是一台物理服务器。在一些可能的实施例中,这样的部署方式可以增强外接编解码的服务效率。参照图7,云服务器集群003或数据中心004中可以包括一个或多个管理节点131和两个子集群,分别是编码集群132和解码集群133,分别负责真正的编码工作和解码工作。可选的,编码集群132和解码集群133也可以合并或分别分布在一个或多个服务集群中。在一些可能的实施例中,不同于图6中服务器002的编解码管理模块,图7中的管理节点131可以包含通信和集群管理两种功能,每个管理节点可以由一台服务器组成,该服务器可以不包括编码或解码模块。
104.图8给出了本技术实施例提供的一种数据处理的方法框架示例图,是对图7中系统的进一步解释。在一些实施例中,转码管理模块111中按照功能又划分为媒体编转码接口、软件或硬件编解码插件以及控制单元组成,其中,软件或硬件转码插件115和116需要负责创建线程并调用硬件转码控制模块113或软件转码模块112,来实现软件硬件编码和解码工作。硬件转码模块113是用于实现硬件编码或解解码的具体控制,包含启动编码或解码器、发送编码或解码参数、发送进行编码或解码的视频帧、接收编码或解码后的视频帧、关闭编码或解码器等。软件转码模块112是用于实现软件编码或解码的具体控制,包含启动编码或解码器、发送编码或解码参数、发送待编码或解码的视频帧、接收编码或解码后的视频帧、关闭编码或解码器等。
105.图8中所示的401-421为本实施例涉及的一些关键步骤,序号数字大小不代表实际的执行顺序,仅作为标识代表某种动作和步骤,若某标识出现次数大于1次,则代表该标识所在位置执行了相同或相似的动作和步骤。下面参考图8举例说明本技术处理数据的方法的流程。该流程步骤包括步骤401至步骤420。
106.步骤401、请求视频编或解码。
107.通常由应用发起所述视频编或解码的请求,不同类型应用会发出视频编码或解码的请求。例如手机直播类应用发出编码请求,视频播放类应用可以发出软件解码请求,云手机游戏和移动办公场景下的视讯通话时,可以同时发出编码和解码的请求。
108.步骤402、调用软件编解码插件。
109.媒体编解码接口调用软件编解码插件。在一些实施例中,该媒体编解码接口可以是云终端操作系统原生的接口。为了不影响应用层的调用,可以保留该原生的媒体编解码接口。
110.在一些实施例中,软件编解码插件可以是一些现有的插件,也可使发明人自己开发的插件。
111.步骤403、调用硬件编解码插件。
112.媒体编解码接口调用硬件编解码插件。现有技术中的云手机仅支持步骤402,导致部分应用需要调用硬件编解码的软件功能不可用。示例的,发明人可以根据需求,自己开发硬件编解码插件。本方法的实施例可以实现调用硬件芯片进行编码或解码的功能,改善了云手机应用软件的兼容性。
113.步骤404、软件编解码插件调用相应的软件编解码控制单元,创建线程、管理多条流,实现对硬件编码或解码工作的总控。
114.步骤405、硬件编解码插件调用相应的硬件编解码控制单元,创建线程、管理多条流,实现对硬件编码或解码工作的总控。
115.步骤406、发送原始帧或压缩帧。
116.软件编解码控制单元112将待编码或解码的原始帧或压缩帧的数据发送给客户端socket,可选地,还可以为客户端rpc。
117.硬件编解码控制单元113将待编码或解码的原始帧或压缩帧的数据发送给客户端socket,可选地,还可以为客户端rpc。
118.步骤407、启动或关闭编码或解码服务。
119.由软件编解码控制单元发出启动或关闭的请求,客户端socket(或rpc)接收并通过网络转发到服务端socket(或rpc),用于启动或关闭远端转码集群的编码或解码服务。
120.由硬件解编码控制单元发出启动或关闭的请求,客户端socket(或rpc)接收并通过网络转发到服务端socket(或rpc),用于启动或关闭远端转码集群的编码或解码服务。
121.在一些实施例中,该启动或关闭的请求可以是根据应用(或用户)发来的请求决定的。
122.步骤408、发送原始帧或压缩帧。
123.客户端socket(或rpc)将从网络接收到的编码帧或解码帧的数据,发送给软件编解码单元。
124.客户端socket(或rpc)将从网络接收到的编码帧或解码帧的数据,发送给硬件编解码单元。
125.步骤409、启动或关闭响应。
126.客户端socket(或rpc)从网络接收编码或解码集群的服务响应,发送到软件编解码单元,用于启动或关闭软件编解码单元响应操作。
127.客户端socket(或rpc)从网络接收编码或解码集群的服务响应,发送到硬件解编码单元,用于启动或关闭硬件解编码单元的响应操作。
128.步骤410、发送请求指令。
129.由服务端socket(或rpc)将从网络接收的指令发送给转码集群管理131,在一些实施例中,该指令可以包括启动编码、启动解码、关闭编码、关闭解码等。
130.步骤411、发送原始的压缩帧或视频帧。
131.由服务端socket(或rpc)将从网络接收的图像原始帧或编码帧发送给转码集群管理单元122。
132.步骤412、返回处理后的解码帧或压缩帧。
133.由转码集群管理131把处理后的解码帧或压缩帧返回给服务端socket或rpc。
134.步骤413、返回服务响应。
135.由转码集群管理单元返回处理响应,服务端socket(或rpc)转发该响应。
136.步骤414、发送启动编码器的指令。
137.转码集群管理131把启动编码器的指令发送到编码集群132,编码集群132接到启动指令后开始进行编码。
138.步骤415、发送原始视频帧。
139.转码集群管理131把原始视频帧发送给编码集群132。
140.步骤416、发送关闭编码器的指令。
141.转码集群管理131把关闭编码器的指令发送到编码集群132,编码集群132接到关闭指令后停止转码。
142.步骤417、返回压缩帧。
143.由编码集群132把处理后的压缩帧返回给转码集群管理131。
144.步骤418、发送启动解码器的指令。
145.转码集群管理131把启动解码器的指令发送到133解码集群,解码集群133接到启动指令后开始进行解码。
146.步骤419、发送关闭解码器的指令。
147.转码集群管理131把关闭解码器的指令发送到解码集群133,解码集群133接到启动指令后停止转码。
148.步骤420、发送原始压缩帧。
149.由转码集群管理131把原始压缩帧发送给解码集群133。
150.步骤421、返回解码帧。
151.由解码集群133把处理后的解码帧返回给转码集群管理131。
152.以上401-421步骤的相关细节也可参照前文的描述。
153.图9是本技术实施例提供的一次云手机购物直播场景下可能涉及到云终端数据处理的方法示意图。在一些实施例中,首先,要按照云手机使用场景及规模,购买一定数量的云手机及相应配比的云服务器集群,该云服务器集群可以提供前文描述的编解码服务,云手机直播比移动办公场景需要的云服务器集群规模要大。然后,需要完成云手机对接外部转码集群的配置,例如云手机上socket的ip和端口配置等。最后,使用配置好的云手机和云服务器集群进行直播、移动办公。在图9所示的方法示意图中,序号501-514代表本实施例中
涉及的关键步骤,描述了在一次云手机购物直播中,从用户a开始直播、购物直播应用发出软件编码请求一直到用户a关闭直播的过程中,本方法的一个实施例是如何基于云手机进行远程硬件视频编码的服务。
154.步骤501、用户a在云手机上打开购物直播应用软件,开始直播。在一些可能的实施例中,用户可以是基于图4所示的终端005的可视化界面远程操控云终端001上的应用。示例的,终端005上可以为一个智能手机,包括摄像头或其他拍摄装置,用于实时采集直播过程中用户的视频流,并将视频流同步传送给云手机。
155.步骤502、购物直播应用调用mediacodec接口启动视频编码操作。直播应用接收到视频流,向mediacodec接口发出软件编码的请求,请求云服务器集群的编码服务;
156.步骤503-404、mediacodec进程基于软件编码插件调用编码器控制单元,创建编码线程。
157.步骤505、编码器控制单元生成相关指令,该指令包括编码规则,并将编码规则中的编码方式由软件编码修改为硬件编码。接着,编码器控制单元通过客户端套接字与外部转码集群建立套接字连接,并把启动外部硬件编码器的请求发送给服务端套接字。
158.步骤506、云服务器集群的服务端套接字把接收到硬件编码的指令后,转发给转码集群管理节点,转码集群管理节点接收到启动具体的外部编码器的指令后,创建线程启动编码集群。
159.步骤507、云手机编码器控制单元发送获取编码头信息的请求,客户端套接字转发该请求至云服务器集群的客户端套接字。
160.步骤508、转码集群管理节点向编码集群中某个具体的服务器的编码器模块请求并获取编码头,通过网络转发给云手机。
161.步骤509、云手机编码器控制单元接收到该编码头信息的响应。
162.步骤510、云手机编码器控制模块向云服务器集群的转码管理节点发送原始视频帧数据,请求外部编码集群进行硬件编码。
163.步骤511、转码集群管理节点负责分配编码服务器给云手机,云手机向具体的服务器的编码器发送原始视频帧。
164.步骤512、编码器把编码后的压缩视频帧返回给转码集群管理节点,通过网络转发给云手机。
165.步骤513、云手机的编码器模块通过套接字接收到压缩后的视频帧数据,并返回给直播应用使用。云手机上的直播应用将接到压缩帧数据流络转发到公有云,更多的网络用户可以在自己的手机或pc等终端上下载压缩帧数据流,在本地进行解码后,可以实时观看本场购物直播。
166.步骤514、用户a在云手机上关闭购物直播应用,结束直播。
167.步骤515、购物直播应用软件通过调用mediacodec接口结束视频编码操作。
168.步骤516-517、mediacodec进程基于软件编码插件调用编码器控制单元,请求结束编码;
169.步骤518、编码器控制单元释放远程的编码器,发送关闭服务器的编码器的请求并关闭和云服务器集群的套接字连接。
170.步骤519、转码集群管理节点关闭具体服务器的编码服务。
171.图10是本技术实施例提供的一种部署在服务器002上的装置300,装置300包括接收单元301、处理单元302、发送单元303。
172.接收单元301,用于从云终端001接收数据。在一些实施例中,该数据可以是待编码或待解码的数据。在另一些实施例中,该数据还可以包括用于指示编码或解码任务的指令,指令的内容请参考前文的相关描述。
173.处理单元302,用于对数据进行编码或解码。一种实现场景举例,处理单元对待编码的数据进行编码,编码的方式包括硬件编码或软件编码,请参考前文的描述。一种实现场景举例,处理单元对待解码的数据进行解码,解码的方式包括硬件解码或软件解码,请参考前文的描述。
174.发送单元303,用于向云终端001发送数据。发送的数据是已经解码或编码后的数据。
175.可选地,处理单元302,用于对所述数据进行硬件编码或者对所述数据进行软件编码。
176.可选地,处理单元302,用于对所述数据进行硬件解码或者对所述数据进行软件解码。
177.本技术实施例还提供了一种计算设备600,如图11。该计算设备600可以是用于部署云终端001的设备,或者该计算设备600可以是服务器002。
178.图11提供了一种计算设备600的结构示意图,计算设备600包括总线601、处理器602和存储器603。处理器602、存储器603之间通过总线601通信。
179.总线601可以是外设部件互连标准总线或扩展工业标准结构总线等。处理器602可以为中央处理器(central processing unit,cpu),此外,还可以有图形处理器(graphics processing unit,gpu)、神经网络处理器(neural network processing unit,npu)、fpga(field programmable gate array)中的一种或多种。存储器603可以包括随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom),快闪存储器,机械硬盘(hard drive drive,hdd)或固态硬盘(solid state drive,ssd)中的一种或多种。存储器603中存储有可执行的程序代码,处理器602执行该可执行的程序代码以实现前述云终端001的功能或者服务器002的功能,或者执行前述实施例描述的方法中由终端001执行的步骤或者由服务器002执行的步骤。
180.上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。
技术特征:
1.一种处理数据的方法,其特征在于,包括:云终端发送数据;服务器接收所述数据;所述服务器对所述数据进行处理,所述处理为对所述数据进行编码或者对所述数据进行解码;所述服务器向所述云终端发送处理后的数据。2.根据权利要求1所述的方法,其特征在于,所述对所述数据进行编码包括:对所述数据进行硬件编码;或者,对所述数据进行软件编码。3.根据权利要求1所述的方法,其特征在于,所述对所述数据进行解码包括:对所述数据进行硬件解码;或者,对所述数据进行软件解码。4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法包括:所述云终端向所述服务器发送处理规则;所述处理规则用于确定对所述数据进行硬件编码或者软件解码,或者所述处理规则用于确定对所述数据进行软件编码或者软件解码。5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法包括:在所述云终端发送所述数据之前,所述云终端获取终端对所述数据进行处理的请求。6.根据权利要求1至4任一项所述的方法,其特征在于,所述方法包括:在所述云终端发送所述数据之前,所述云终端获取对所述数据进行处理的请求,所述请求是所述云终端上的应用触发的。7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法包括:所述云终端向终端发送根据所述数据得到的虚拟桌面。8.一种处理数据的系统,其特征在于,所述系统包括:云终端,用于向服务器发送数据;所述服务器,用于接收所述数据,所述服务器对所述数据进行处理,向所述云终端发送处理后的数据,所述处理为对所述数据进行编码或者对所述数据进行解码。9.根据权利要求8所述的系统,其特征在于,所述服务器,用于对所述数据进行硬件编码,或者对所述数据进行硬件编码。10.根据权利要求8所述的系统,其特征在于,所述服务器,用于对所述数据进行软件编码,或者对所述数据进行软件编码。11.根据权利要求8至10任一项所述的系统,其特征在于,所述云终端,用于向所述服务器发送处理规则,其中,所述处理规则用于确定对所述数据进行硬件编码或者软件解码,或者所述处理规则用于确定对所述数据进行软件编码或者软件解码。12.根据权利要求8至11任一项所述的系统,其特征在于,所述云终端,用于获取终端对所述数据进行处理的请求。13.根据权利要求8至11任一项所述的系统,其特征在于,所述云终端,用于获取对所述数据进行处理的请求,所述请求是所述云终端上的应用
触发的。14.根据权利要求8至13任一项所述的系统,其特征在于,所述云终端,用于向终端发送根据所述数据得到的虚拟桌面。15.根据权利要求8至14任一项所述的系统,其特征在于,所述云终端是云手机。16.一种云终端,其特征在于,所述云终端为所述权利要求8至15任一项所述的云终端。17.一种服务器,其特征在于,所述云终端为所述权利要求8至15任一项所述的服务器。18.一种计算设备,其特征在于,所述计算设备包括处理器和存储器;所述处理器执行所述存储器中的指令,使得所述计算设备实现权利要求8至15任一项所述的云终端或者服务器。19.一种计算机程序产品,所述计算机程序产品包括指令,所述指令用于实现权利要求1至7任一项所述的方法中由云终端执行的步骤,或者用于实现权利要求1至7任一项所述的方法中由服务器执行的步骤。
技术总结
本申请实施例提供的一种处理数据的方法、系统、云终端、服务器、计算设备和计算机程序产品,可以解决云终端CPU资源不足和软件兼容性问题。所述方法包括:云终端发送数据;服务器接收该数据;服务器对该数据进行处理,其中,该处理为对该数据进行编码或对该数据进行解码;服务器向云终端发送处理后的数据。务器向云终端发送处理后的数据。务器向云终端发送处理后的数据。
技术研发人员:龙长春 王坤铭 吴子侠 李海跃
受保护的技术使用者:华为云计算技术有限公司
技术研发日:2020.09.18
技术公布日:2022/3/7