本技术属于终端,尤其涉及投屏方法、终端设备及计算机可读存储介质。
背景技术:
1、终端设备之间的投屏分享,已经成为人们日常生活中的常用功能。其中,现有投屏的主要流程是:发送端的投屏应用进行图层绘制,并在绘制完成后,通知surfaceflinger组件对绘制得到的图层数据进行合成。surfaceflinger组件在合成完成后,通知编码器对合成得到的图像进行编码。编码器在编码完成后,通知投屏应用将编码得到的视频流等编码数据发送给接收端。但现有投屏的投屏过程中,存在时延较大等问题,影响用户体验。
技术实现思路
1、本技术实施例提供了一种投屏方法、终端设备及计算机可读存储介质,可以解决现有投屏的时延较大的问题。
2、第一方面,本技术实施例提供了一种投屏系统,包括第一终端设备和第二终端设备;
3、所述第一终端设备,用于在检测到投屏指令时,对待投屏界面进行图层绘制,得到所述待投屏界面对应的图层数据;
4、所述第一终端设备,还用于根据所述图层数据的第一部分进行图像合成,得到第一图像;
5、所述第一终端设备,还用于根据所述第一图像进行编码,得到第一编码数据,并向所述第二终端设备发送所述第一编码数据;
6、所述第一终端设备,还用于在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,并根据所述第二图像进行编码,得到第二编码数据;
7、所述第一终端设备,还用于向所述第二终端设备发送所述第二编码数据;
8、所述第二终端设备,用于获取所述第一编码数据和所述第二编码数据,并对所述第一编码数据和所述第二编码数据进行解码,得到所述第一图像和所述第二图像;
9、所述第二终端设备,还用于根据所述第一图像和所述第二图像,得到所述待投屏界面,并对所述待投屏界面进行显示。
10、通过上述的投屏系统,在检测到投屏指令时,第一终端设备可以对待投屏界面进行图层绘制,得到待投屏界面对应的图层数据,并根据图层数据的第一部分进行图像合成,得到第一图像。第一终端设备可以根据第一图像进行编码,得到第一编码数据,并向第二终端设备发送第一编码数据。在根据第一图像进行编码或在向第二终端设备发送第一编码数据时,第一终端设备还可以继续根据图层数据的第二部分进行图像合成,得到第二图像,根据第二图像进行编码,得到第二编码数据,并向第二终端设备发送第二编码数据。第二终端设备接收到第一终端设备发送的第一编码数据和第二编码数据时,可以对第一编码数据和第二编码数据进行解码,得到第一图像和第二图像,并根据第一图像和第二图像得到待投屏界面。即第一终端设备可以分别根据第一部分和第二部分进行合成、编码和发送等处理,而且根据第二部分进行的合成、编码、发送等处理过程与根据第一部分对应的第一图像进行的编码、发送等处理过程可以并行执行,以实现投屏时,图像合成过程、编码过程和发送过程三者的并行执行,从而可以有效降低投屏的时延,提升用户的投屏体验。
11、示例性的,所述第一终端设备包括图像合成模块、编码器和第一应用,所述第一应用为所述待投屏界面对应的应用。
12、所述第一终端设备,用于通过所述图像合成模块根据所述第一部分进行图像合成,得到所述第一图像。
13、所述第一终端设备,用于通过所述编码器根据所述第一图像进行编码,得到所述第一编码数据。
14、所述第一终端设备,用于通过所述第一应用向所述第二终端设备发送所述第一编码数据。
15、在一种可能的实现方式中,所述图像合成模块,具体用于在所述编码器根据所述第一图像进行编码时,根据所述第二部分进行图像合成,得到所述第二图像。
16、在另一种可能的实现方式中,所述图像合成模块,具体用于在所述第一应用向所述第二终端设备发送所述第一编码数据时,根据所述第二部分进行图像合成,得到所述第二图像。
17、在另一种可能的实现方式中,所述编码器,具体用于在所述第一应用向所述第二终端设备发送所述第一编码数据时,根据所述第二图像进行编码,得到第二编码数据。
18、示例性的,所述图像合成模块,还用于响应于所述图层数据,根据所述图层数据的第一部分进行图像合成,得到所述第一图像。
19、在一种可能的实现方式中,所述第一终端设备,还用于确定所述第一图像对应的第一划分信息,并根据所述第一图像和所述第一划分信息进行编码,得到所述第一编码数据,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数。
20、在另一种可能的实现方式中,所述第一终端设备,还用于确定所述图层数据对应的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;向所述第二终端设备发送所述第三划分信息。
21、示例性的,所述第二终端设备包括解码器。所述解码器,具体用于对所述第一编码数据进行解码,得到所述第一图像和所述第一图像对应的第一划分信息,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数;对所述第二编码数据进行解码,得到所述第二图像和所述第二图像对应的第二划分信息,所述第二划分信息包括所述图层数据对应的划分方式、所述第二图像对应的图像序号和所述图层数据对应的图像总数。
22、在一个示例中,所述第二终端设备,具体用于根据所述第一划分信息和所述第二划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
23、在另一个示例中,所述第二终端设备,还用于获取所述第一终端设备发送的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;根据所述第三划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
24、第二方面,本技术实施例提供了一种投屏方法,应用于第一终端设备,所述方法可以包括:
25、在检测到投屏指令时,对待投屏界面进行图层绘制,得到所述待投屏界面对应的图层数据;
26、根据所述图层数据的第一部分进行图像合成,得到第一图像;
27、根据所述第一图像进行编码,得到第一编码数据;
28、向第二终端设备发送所述第一编码数据;
29、在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,并根据所述第二图像进行编码,得到第二编码数据;
30、向所述第二终端设备发送所述第二编码数据。
31、在上述的投屏方法中,待投屏界面对应的图层数据至少可以包括第一部分和第二部分,第一终端设备可以分别根据第一部分和第二部分进行图像合成、编码和发送等处理,而且根据第二部分进行的图像合成、编码、发送等处理过程与根据第一部分对应的第一图像进行的编码、发送等处理过程可以并行执行,以实现投屏时,图像合成、编码和发送三者的并行执行,从而有效降低投屏的时延,提升用户的投屏体验。
32、示例性的,所述根据所述图层数据的第一部分进行图像合成,得到第一图像,可以包括:
33、通过图像合成模块根据所述第一部分进行图像合成,得到所述第一图像;
34、所述根据所述第一图像进行编码,得到第一编码数据,包括:
35、通过编码器根据所述第一图像进行编码,得到所述第一编码数据;
36、所述向第二终端设备发送所述第一编码数据,包括:
37、通过第一应用向所述第二终端设备发送所述第一编码数据。
38、在一种可能的实现方式中,所述在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,包括:
39、在所述编码器根据所述第一图像进行编码时,所述图像合成模块根据所述第二部分进行图像合成,得到所述第二图像。
40、在该实现方式提供的投屏方法中,第一终端设备可以通过图像合成模块进行图像合成,通过编码器根据合成的第一图像或第二图像进行编码,并通过第一应用将编码得到的第一编码数据或第二编码数据发送给第二终端设备。因此,在编码器根据第一图像进行编码时,图像合成模块可以继续根据图层数据的第二部分进行图像合成,使得编码器根据第一图像进行编码的过程与图像合成模块根据第二部分进行图像合成的过程,可以同时进行,以降低第一终端设备的投屏时延,提升用户体验。
41、在另一种可能的实现方式中,所述在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,可以包括:
42、在所述第一应用向所述第二终端设备发送所述第一编码数据时,所述图像合成模块根据所述第二部分进行图像合成,得到所述第二图像。
43、在该实现方式提供的投屏方法中,在第一应用向第二终端设备发送第一编码数据时,图像合成模块可以继续根据图层数据的第二部分进行图像合成,使得第一应用发送第一编码数据的过程与图像合成模块根据第二部分进行图像合成的过程,可以同时进行,以降低第一终端设备的投屏时延,提升用户体验。
44、在另一种可能的实现方式中,所述根据所述第二图像进行编码,得到第二编码数据,可以包括:
45、在所述第一应用向所述第二终端设备发送所述第一编码数据时,所述编码器根据所述第二图像进行编码,得到第二编码数据。
46、在该实现方式提供的投屏方法中,在第一应用向第二终端设备发送第一编码数据时,编码器可以继续根据第二图像进行编码,使得第一应用发送第一编码数据的过程与编码器根据第二图像进行编码的过程,可以同时进行,以降低第一终端设备的投屏时延。
47、在一个示例中,所述根据所述图层数据的第一部分进行图像合成,得到第一图像,可以包括:
48、响应于所述图层数据,通过图像合成模块根据所述图层数据的第一部分进行图像合成,得到所述第一图像。
49、在该实现方式提供的投屏方法中,在投屏过程时,第一终端设备可以实时获取第一终端设备当前的显示状态。当显示状态为熄屏状态时,表明第一终端设备不需要对待投屏界面进行同步显示,因此,图像合成模块获取图层数据后,可以直接根据图层数据的第一部分进行图像合成,而不需要等待vsync信号,以有效减少图像合成模块的等待时间,降低投屏的时延。
50、在一种可能的实现方式中,所述根据所述第一图像进行编码,得到第一编码数据,可以包括:
51、确定所述第一图像对应的第一划分信息,并根据所述第一图像和所述第一划分信息进行编码,得到所述第一编码数据,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数。
52、在该实现方式提供的投屏方法中,为使得第二终端设备在解码得到第一图像和第二图像后,可以正确得到待投屏界面,避免待投屏界面在第二终端设备中显示存在乱序问题,第一终端设备在通过编码器根据第一图像或第二图像进行编码时,可以增加对应的划分信息。因此,第二终端设备解码得到第一图像和第二图像时,可以得到第一图像对应的第一划分信息和第二图像对应的第二划分信息,从而可以根据第一划分信息和第二划分信息准确得到待投屏界面。
53、在另一种可能的实现方式中,所述方法还可以包括:
54、确定所述图层数据对应的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;
55、向所述第二终端设备发送所述第三划分信息。
56、在该实现方式提供的投屏方法中,第一终端设备确定划分方式后,可以将划分方式对应的划分信息单独发送给第二终端设备。例如,在进行投屏之前,第一终端设备可以先将划分信息发送给第二终端设备。因此,在对各图像进行编码时,编码器不需要再单独为各图像添加划分信息,以减少编码过程中的信息添加,从而提高编码速度。
57、第三方面,本技术实施例提供了一种投屏方法,应用于第二终端设备,所述方法可以包括:
58、获取第一终端设备分别发送的第一编码数据和第二编码数据,所述第一编码数据为图层数据的第一部分对应的编码数据,所述第二编码数据为所述图层数据的第二部分对应的编码数据,所述图层数据为所述第一终端设备的待投屏界面对应的图层数据;
59、分别对所述第一编码数据和所述第二编码数据进行解码,得到第一图像和第二图像;
60、根据所述第一图像和所述第二图像,得到所述待投屏界面,并对所述待投屏界面进行显示。
61、示例性的,所述分别对所述第一编码数据和所述第二编码数据进行解码,得到第一图像和第二图像,可以包括:
62、对所述第一编码数据进行解码,得到所述第一图像和所述第一图像对应的第一划分信息,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数;
63、对所述第二编码数据进行解码,得到所述第二图像和所述第二图像对应的第二划分信息,所述第二划分信息包括所述图层数据对应的划分方式、所述第二图像对应的图像序号和所述图层数据对应的图像总数。
64、在一个示例中,所述根据所述第一图像和所述第二图像,得到所述待投屏界面,可以包括:
65、根据所述第一划分信息和所述第二划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
66、在另一个示例中,所述方法还可以包括:
67、获取所述第一终端设备发送的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;
68、所述根据所述第一图像和所述第二图像,得到所述待投屏界面,包括:
69、根据所述第三划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
70、第四方面,本技术实施例提供了一种投屏装置,应用于第一终端设备,所述装置可以包括:
71、图层绘制模块,用于在检测到投屏指令时,对待投屏界面进行图层绘制,得到所述待投屏界面对应的图层数据;
72、图像合成模块,用于根据所述图层数据的第一部分进行图像合成,得到第一图像;
73、编码模块,用于根据所述第一图像进行编码,得到第一编码数据;
74、发送模块,用于向第二终端设备发送所述第一编码数据;
75、图像合成模块,还用于在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像;
76、编码模块,还用于根据所述第二图像进行编码,得到第二编码数据;
77、发送模块,还用于向所述第二终端设备发送所述第二编码数据。
78、在一种可能的实现方式中,所述图像合成模块,具体用于在所述编码模块根据所述第一图像进行编码时,根据所述第二部分进行图像合成,得到所述第二图像。
79、在另一种可能的实现方式中,所述图像合成模块,具体用于在所述发送模块向所述第二终端设备发送所述第一编码数据时,根据所述第二部分进行图像合成,得到所述第二图像。
80、在另一种可能的实现方式中,所述编码模块,具体用于在所述发送模块向所述第二终端设备发送所述第一编码数据时,根据所述第二图像进行编码,得到第二编码数据。
81、在一个示例中,所述图像合成模块,还用于响应于所述图层数据,根据所述图层数据的第一部分进行图像合成,得到所述第一图像。
82、在一种可能的实现方式中,所述编码模块,还用于确定所述第一图像对应的第一划分信息,并根据所述第一图像和所述第一划分信息进行编码,得到所述第一编码数据,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数。
83、在另一种可能的实现方式中,所述装置还可以包括:
84、划分信息确定模块,用于确定所述图层数据对应的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;
85、划分信息发送模块,用于向所述第二终端设备发送所述第三划分信息。
86、第五方面,本技术实施例提供了一种投屏装置,应用于第二终端设备,所述装置可以包括:
87、编码数据获取模块,用于获取第一终端设备分别发送的第一编码数据和第二编码数据,所述第一编码数据为图层数据的第一部分对应的编码数据,所述第二编码数据为所述图层数据的第二部分对应的编码数据,所述图层数据为所述第一终端设备的待投屏界面对应的图层数据;
88、解码模块,用于分别对所述第一编码数据和所述第二编码数据进行解码,得到第一图像和第二图像;
89、界面显示模块,用于根据所述第一图像和所述第二图像,得到所述待投屏界面,并对所述待投屏界面进行显示。
90、示例性的,所述解码模块,具体用于对所述第一编码数据进行解码,得到所述第一图像和所述第一图像对应的第一划分信息,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数;
91、对所述第二编码数据进行解码,得到所述第二图像和所述第二图像对应的第二划分信息,所述第二划分信息包括所述图层数据对应的划分方式、所述第二图像对应的图像序号和所述图层数据对应的图像总数。
92、在一个示例中,所述界面显示模块,具体用于根据所述第一划分信息和所述第二划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
93、在另一个示例中,所述装置还可以包括:
94、划分信息获取模块,用于获取所述第一终端设备发送的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;
95、所述界面显示模块,还用于根据所述第三划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
96、第六方面,本技术实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,使所述终端设备实现上述第二方面中任一项所述的投屏方法,或者实现上述第三方面中任一项所述的投屏方法。
97、第七方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被计算机执行时,使所述计算机实现上述第二方面中任一项所述的投屏方法,或者实现上述第三方面中任一项的投屏方法。
98、第八方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第二方面中任一项所述的投屏方法,或者执行上述第三方面中任一项所述的投屏方法。
99、可以理解的是,上述第三方面至第八方面的有益效果可以参见上述第一方面和第二方面中的相关描述,在此不再赘述。