发明内容
为解决以上问题,本公开提供了能够高效地进行远程设备访问同时降低网络带宽使用的方法和装置。根据本公开,第一设备可接收来自第二设备的远程访问命令以在第一设备和第二设备之间建立远程访问连接,该远程访问命令指示第二设备要获取第一设备的屏幕显示。第一设备可抓取与第一设备的屏幕显示相对应的屏幕截图,所抓取的屏幕截图是图片格式的。可由第一设备或服务器将该屏幕截图从图片格式编码成视频格式以生成视频流数据;以及将视频流数据传送给第二设备以供在第二设备上呈现第一设备的屏幕显示。本公开还提供了对应的远程设备访问装置和远程设备访问系统。
根据本公开的一个实施例,提供了一种远程设备访问方法,其包括在第一设备处接收来自第二设备的远程访问命令以在第一设备和第二设备之间建立远程访问连接,所述远程访问命令指示所述第二设备要获取所述第一设备的屏幕显示;在所述第一设备处抓取与所述第一设备的屏幕显示相对应的屏幕截图,所抓取的屏幕截图是图片格式的;将所述屏幕截图从图片格式编码成视频格式以生成视频流数据;以及将所述视频流数据从所述第一设备传送给第二设备以供在所述第二设备上呈现所述第一设备的屏幕显示。
在一方面,该远程设备访问方法还包括:在抓取到与第一设备的屏幕显示相对应的一张新屏幕截图时,将该新屏幕截图与先前的屏幕截图进行联合编码,以生成与该新屏幕截图相对应的视频流数据,并将与该新屏幕截图相对应的视频流数据传送给第二设备。
在一方面,该远程设备访问方法还包括:根据网络状况、来自所述第二设备的指令、和所述第一设备的屏幕显示的动态性中的至少一者来调整在所述第一设备处抓取所述屏幕截图的帧率和/或分辨率。
在一方面,所述第二设备能从所述视频流数据解码出所述屏幕截图,并在所述第二设备上呈现所述屏幕截图。
在一方面,该远程设备访问方法还包括:在第一设备处接收来自所述第二设备的操作指令以根据所述操作指令在所述第一设备上执行对应的操作。
在一方面,所述屏幕截图的帧率为20~35帧/秒。
根据本公开的另一个实施例,提供了一种用于远程设备访问的第一设备,其包括:远程访问模块,其接收来自第二设备的远程访问命令以在第一设备和第二设备之间建立远程访问连接,所述远程访问命令指示所述第二设备要获取所述第一设备的屏幕显示;屏幕抓取模块,其抓取与所述第一设备的屏幕显示相对应的屏幕截图,所抓取的屏幕截图是图片格式的;以及视频编码器,其从所述屏幕抓取模块接收屏幕截图并将所述屏幕截图从图片格式编码成视频格式以生成视频流数据,其中所述传输模块将所述视频流数据传送给第二设备以供在所述第二设备上呈现所述第一设备的屏幕显示。
在一方面,所述视频编码器在接收到与第一设备的屏幕显示相对应的一张新屏幕截图时,将该新屏幕截图与先前的屏幕截图进行联合编码,以生成与该新屏幕截图相对应的视频流数据,并将与该新屏幕截图相对应的视频流数据传送给第二设备。
在一方面,所述屏幕抓取模块根据网络状况、来自所述第二设备的指令、和所述第一设备的屏幕显示的动态性中的至少一者来调整抓取所述屏幕截图的帧率和/或分辨率。
在一方面,所述传输模块接收来自所述第二设备的操作指令,所述第一设备还包括:操作模块,其根据所述操作指令在所述第一设备上执行对应的操作。
在一方面,所述屏幕截图的帧率为20~35帧/秒。
根据本公开的另一个实施例,提供了一种由服务器执行的远程设备访问方法,其包括:在服务器处从第二设备接收远程访问命令以在第一设备和第二设备之间建立远程访问连接,所述远程访问命令指示所述第二设备要获取第一设备的屏幕显示;将所述远程访问命令传送给所述第一设备;从所述第一设备接收与所述第一设备的屏幕显示相对应的屏幕截图,所述屏幕截图是图片格式的;将所述屏幕截图从图片格式编码成视频格式以生成视频流数据;以及将所述视频流数据从所述服务器传送给第二设备以供在所述第二设备上呈现所述第一设备的屏幕显示。
在一方面,该远程设备访问方法还包括:在从所述第一设备接收到与第一设备的屏幕显示相对应的一张新屏幕截图时,将该新屏幕截图与先前的屏幕截图进行联合编码,以生成与该新屏幕截图相对应的视频流数据,并将与该新屏幕截图相对应的视频流数据传送给第二设备。
在一方面,该远程设备访问方法还包括:在所述服务器处从所述第二设备接收操作指令;以及将所述操作指令传送给所述第一设备,以使得所述第一设备根据所述操作指令来执行对应的操作。
在一方面,所述屏幕截图的帧率为20~35帧/秒。
根据本公开的另一个实施例,提供了一种用于远程设备访问的服务器,其包括:传输模块,其从第二设备接收远程访问命令以在第一设备和第二设备之间建立远程访问连接,所述远程访问命令指示所述第二设备要获取第一设备的屏幕显示,所述传输模块将所述远程访问命令传送给所述第一设备并从所述第一设备接收与所述第一设备的屏幕显示相对应的屏幕截图,所述屏幕截图是图片格式的;视频编码器,其从所述传输模块接收所述屏幕截图并将所述屏幕截图从图片格式编码成视频格式以生成视频流数据,其中所述传输模块将所述视频流数据从所述服务器传送给第二设备以供在所述第二设备上呈现所述第一设备的屏幕显示。
在一方面,所述视频编码器在接收到与第一设备的屏幕显示相对应的一张新屏幕截图时,将该新屏幕截图与先前的屏幕截图进行联合编码,以生成与该新屏幕截图相对应的视频流数据,并将与该新屏幕截图相对应的视频流数据传送给第二设备。
在一方面,所述传输模块接收来自所述第二设备的操作指令,并将所述操作指令传送给所述第一设备,以使得所述第一设备根据所述操作指令来执行对应的操作。
在一方面,所述屏幕截图的帧率为20~35帧/秒。
根据本公开的另一个实施例,提供了一种由第二设备执行的远程设备访问方法,其包括:在第二设备处生成并传送远程访问命令以在第一设备和第二设备之间建立远程访问连接,所述远程访问命令指示所述第二设备要获取第一设备的屏幕显示;在第二设备处接收来自第一设备的视频流数据,所述视频流数据是通过将与第一设备的屏幕显示相对应的屏幕截图从图片格式编码成视频格式来生成的;解码所述视频流数据以生成图片格式的屏幕截图;以及在第二设备上呈现所述屏幕截图。
在一方面,所述远程设备访问方法还包括:在第二设备处接收到新的视频流数据时,将该新的视频流数据与先前的视频流数据进行联合解码,以生成新的屏幕截图并在第二设备上呈现该新的屏幕截图。
在一方面,所述远程设备访问方法还包括:在所述第二设备处接收来自用户的操作指令并将所述操作指令传送给所述第一设备以在所述第一设备上执行对应的操作。
根据本公开的另一个实施例,提供了一种用于远程设备访问的第二设备,其包括:远程访问模块,其生成远程访问命令以在第一设备和第二设备之间建立远程访问连接,所述远程访问命令指示所述第二设备要获取第一设备的屏幕显示;传输模块,其传送所述远程访问命令并接收来自第一设备的视频流数据,所述视频流数据是通过将与第一设备的屏幕显示相对应的屏幕截图从图片格式编码成视频格式来生成的;视频解码器,其解码所述视频流数据以生成图片格式的屏幕截图;以及呈现模块,其在第二设备上呈现所述屏幕截图。
在一方面,所述视频解码器在接收到新的视频流数据时,将该新的视频流数据与先前的视频流数据进行联合解码,以生成新的屏幕截图并呈现该新的屏幕截图。
在一方面,所述第二设备还包括:操作捕捉模块,其在所述第二设备处接收来自用户的操作指令并经由所述传输模块将所述操作指令传送给所述第一设备以在所述第一设备上执行对应的操作。
根据本公开的另一个实施例,提供了一种远程设备访问系统,其包括:处理器;以及用于存储处理器可执行指令的存储器,其中所述处理器执行所述处理器可执行指令以实现如上所述的远程设备访问方法。
本公开可以通过本地设备(例如,通过网页、专用app)来访问远程设备(手机/屏幕设备)。相比现有的技术,本公开可以在相同网络环境下传输质量更好的画面,或者在相同画面质量的情况下大大减少对网络带宽的要求,使访问更流畅,从而提供更好的操作体验。
具体实施方式
下面结合具体实施例和附图对本公开作进一步说明,但不应以此限制本公开的保护范围。
在进行远程设备访问时希望在本地设备显示的画面延迟尽量低,屏幕分辨率尽量高,对网络带宽的消耗尽量小,这样操作体验才会接近真正的本地机器。本公开提供了一种低延迟远程设备访问方法和装置,其中第一设备可接收来自第二设备的远程访问命令以在第一设备和第二设备之间建立远程访问连接,该远程访问命令指示第二设备要获取第一设备的屏幕显示。第一设备可抓取与第一设备的屏幕显示相对应的屏幕截图,所抓取的屏幕截图是图片格式的。可由第一设备或服务器将该屏幕截图从图片格式编码成视频格式以生成视频流数据;以及将视频流数据传送给第二设备以供在第二设备上呈现第一设备的屏幕显示。本公开还提供了对应的远程设备访问装置和远程设备访问系统。本公开所提供的技术可以在相同网络环境下传输质量更好的画面,或者在相同画面的情况下,大大减少对网络带宽的要求,使访问更流畅。
图1是根据本公开一个实施例的远程设备访问装置的框图。图1示出了第一设备110和第二设备120。第一设备110和第二设备120可以是能够有线和/或无线地联网的任何电子设备,例如手机、平板、计算机、或者其他具有显示屏的电子设备。根据本公开,第二设备120的用户可以通过第二设备120来访问第一设备110,并且可以在第二设备120上呈现第一设备110的屏幕内容。此外,作为示例而非限定,第二设备120的用户可以在第二设备120上提供操作指令,并使得第一设备110运行该操作指令。
第二设备120可以与第一设备110建立远程访问连接,并由此在第二设备120的屏幕上显示第一设备110的屏幕界面。例如,第二设备120可在本地屏幕所显示的网页的一个区域、本地屏幕的一部分、整个本地屏幕等等上显示第一设备110的屏幕界面。虽然本文描述了远程访问,但这并不意味着第一设备110和第二设备120在物理上是远离的。本领域技术人员可以理解,第一设备110和第二设备120可以是彼此远离的,也可以是彼此靠近的(例如,在同一个房间、同一个办公室、同一幢楼等等)。
如图1所示,第一设备110可包括传输模块111、远程访问模块112、屏幕抓取模块114、视频编码器116、和可选的操作模块118。第二设备120可包括传输模块121、远程访问模块122、视频解码器124、呈现模块126、和可选的操作捕捉模块128。第一设备110的传输模块111可用于与第二设备120的传输模块121进行通信,例如根据任何合适的有线(如以太网、光纤、电力线、双绞线等)或无线(如W-CDMA、3GPP、LTE、3G、4G、5G、Wi-Fi、蓝牙、Zigbee、微波等)方式进行通信,本发明在这方面不受限制。
第一设备110的远程访问模块112可用于与第二设备120的远程访问模块122建立远程访问连接。远程访问模块112和远程访问模块122可以实现为网页组件、专用app等,并且可实现任何合适的远程访问协议,例如,TCP/IP、IPX、PPP、SLIP等,或是根据需要定制的握手协议。
根据一个实施例,远程访问模块122可生成远程访问命令以在第一设备和第二设备之间建立远程访问连接,该远程访问命令可指示第二设备120要获取第一设备110的屏幕显示。远程访问模块122经由传输模块121将远程访问命令传送给第一设备110的传输模块111,传输模块111可将接收到的远程访问命令传递给第一设备110的远程访问模块112,远程访问模块112可以决定是否与第二设备120建立远程访问连接。如果远程访问模块112同意与第二设备120建立远程访问连接,则可以进一步在第一设备110和第二设备120之间执行认证,并在认证成功的情况下在第一设备110和第二设备120建立远程访问连接。如果认证不成功,可以不建立远程访问连接。
在其他示例中,如果在建立远程访问连接之前第一设备110和第二设备120已经以其他方式相互成功认证,则第一设备110的远程访问模块112在接收到来自第二设备120的远程访问命令时可以直接在第一设备110和第二设备120建立远程访问连接而无需进一步认证。
在第一设备110和第二设备120建立远程访问连接之后,第一设备110的屏幕抓取模块114可以抓取第一设备110的屏幕显示内容并生成相对应的屏幕截图。该屏幕截图可以是任何图片格式,例如.jpg、.jpeg、.gif、.png、.bmp等。此时,第一设备110可处于任何状态,例如待机、主屏幕、正在运行某个应用程序等。屏幕抓取模块114可按指定帧率来抓取第一设备110在不同时间的多张屏幕截图。抓取屏幕截图的帧率可以由远程访问协议规定,由视频编码器116决定,或者也可以根据实际需要和网络状况来设置或选择。帧率越高,屏幕截图就越连贯,所传递的数据量就越大,用户的实时体验也越好。根据本公开的一个实施例,屏幕抓取模块114抓取屏幕的帧率可以为例如10~40帧/秒,优选地为20~35帧/秒。
在一方面,可以根据第一设备110即将或正在运行的应用来设置抓取屏幕截图的帧率,为高动态应用(例如,游戏应用等)设置较高帧率,为低动态应用(例如,文字处理等)设置较低帧率。例如,可在建立远程访问连接之时或之后、在命令第一设备110运行特定应用时等等设置抓取屏幕截图的帧率。替换地,也可以在远程访问过程中根据实际情况调整帧率,比如当第一设备110正在或即将显示高动态内容时、网络空闲时、和/或用户希望提高帧率时等等,由第一设备110或第二设备120指示屏幕抓取模块114提高帧率。相反,当第一设备110正在或即将显示低动态内容时、网络繁忙时、和/或用户希望降低帧率时等等,由第一设备110或第二设备120指示屏幕抓取模块114降低帧率。
类似地,屏幕抓取模块114抓取屏幕截图的分辨率可以由远程访问协议规定,也可以根据实际需要和网络状况来设置或选择。分辨率越高,所显示的屏幕界面就越清晰。一般来说,所提供的分辨率越接近第一设备110的原始分辨率,体验就越好。但是因为使用原始分辨率传输的数据量很大,所以可以在一定程度上降低分辨率。第一设备110或第二设备120可根据所显示的内容、网络状况、用户体验等指示屏幕抓取模块114提高或降低屏幕截图的分辨率。
屏幕抓取模块114可以将所抓取的屏幕截图提供给视频编码器116。例如,屏幕抓取模块114每当抓取一张新的屏幕截图时,就将该新的屏幕截图提供给视频编码器116。视频编码器116可以将所接收的屏幕截图从图片格式编码成视频格式以生成视频流数据。视频编码器116可以使用任何合适的视频编码技术,例如H.261、H.263、H.264、M-JPEG、MPEG等。视频编码器116可以采用变换编码来消除每张屏幕截图中的空间冗余信息,和/或可以采用预测编码来消除连贯屏幕截图之间的冗余性。
例如,当视频编码器116接收到第一张屏幕截图时,可以独立地将第一张屏幕截图编码成视频流数据。当视频编码器116接收到第二张屏幕截图时,可以将第二张屏幕截图与第一张屏幕截图联合地编码,使得第二张屏幕截图中与第一张屏幕截图相似或相同的内容部分产生的视频流数据将显著减少。当视频编码器116接收到第N张屏幕截图时,可以将第N张屏幕截图与先前的一张或多张屏幕截图(例如,参考屏幕截图)联合地编码,以生成对应于第N张屏幕截图的视频流数据。视频编码器116可根据各种方式来选择参考屏幕截图,例如选择第N-t张先前屏幕截图作为第N张屏幕截图的参考帧(t为指定的正整数),选择与第N张屏幕截图最接近(或局部相似)的一张或多张先前屏幕截图作为第N张屏幕截图的参考帧等等。
进一步,视频编码器116在视频编码过程中可以确定屏幕动态性(例如,相继屏幕截图之间的相似性),并在屏幕动态性高时指示屏幕抓取模块114提高帧率,而在屏幕动态性低时指示屏幕抓取模块114降低帧率。
由此,视频编码器116可将屏幕截图依次编码成视频流数据,并且可以逐帧地向传输模块111输出与每张屏幕截图相对应的视频流数据。此后,传输模块111可将视频编码器116生成的视频流数据传送给第二设备120。在一个实施例中,传输模块111可将与每张屏幕截图相对应的视频流数据尽可能实时地传送给第二设备120,实现逐张屏幕截图的及时传输,由此减少与缓存或等待相关联的延迟。
第二设备120的传输模块121可接收来自第一设备110的与屏幕截图相对应的视频流数据,并将接收到的视频流数据提供给视频解码器124进行解码。在一方面,视频解码器124可以实现与视频编码器116相对应的编解码技术,由此解码出由视频编码器116进行编码的视频流。在另一方面,视频解码器124可以实现多种编解码技术,并通过读取视频流的配置参数来确定其采用的编码技术并相应地进行解码。
视频解码器124可从视频流数据解码出原始的屏幕截图。如上所述,第一设备110可将与每张屏幕截图相对应的视频流数据传送给第二设备120。当第二设备120接收到与第一张屏幕截图相对应的视频流数据时,视频解码器124可基于该视频流数据独立地解码出第一张屏幕截图。随后当第二设备120接收到与第二张屏幕截图相对应的视频流数据时,视频解码器124可将该视频流数据与先前视频流数据的解码结果(即,第一张屏幕截图)联合地解码出第二张屏幕截图。当第二设备120接收到与第N张屏幕截图相对应的视频流数据时,可以将该视频流数据与先前解码出的用于第N张屏幕截图的参考帧联合地解码出第N张屏幕截图。视频解码器124可从视频流数据的配置参数来确定视频编码器116在编码时用于第N张屏幕截图的参考帧。
视频解码器124可将解码出的屏幕截图提供给呈现模块126,呈现模块126可在第二设备120的显示器上依次呈现所接收的屏幕截图。例如,视频解码器124每当解码出一张屏幕截图时就将该屏幕截图提供给呈现模块126,由此呈现模块126依次呈现所接收的每张屏幕截图。呈现模块126将屏幕截图逐帧连续显示出来,就可以还原在第一设备110的显示屏上的内容。呈现模块126可以在第二设备120的整个屏幕或一部分屏幕上呈现这些屏幕截图。
根据本公开的采用视频编解码的远程访问技术与图片传输相比能够提高帧率并减少延迟。例如,采用图片传输或压缩图片传输的远程访问可达成的帧率一般小于等于15帧/秒,在高动态画面显示过程中存在人眼可感知的停顿。而根据本公开的远程访问技术能够达成大于15帧/秒的帧率,例如20~40帧/秒,由此可以消除在高动态画面显示过程中人眼可感知的停顿。当然,根据实际需要,本公开也能够实现小于20帧/秒或小于15帧/秒的帧率,且带宽占用量显著更小。在不发生网络拥塞的情况下,本公开的远程访问延迟(例如,从第一设备110上显示某一界面到第二设备120上显示该界面之间的时间差)可小于150ms,优选地小于100ms,这可以提供良好的用户体验。因此,第二设备120能够动态且接近实时地显示第一设备110的屏幕界面。
根据本公开的一方面,第二设备120的用户还可以输入操作指令以使得第一设备110执行该操作指令。在第二设备120显示第一设备110的屏幕截图之后,第二设备120的操作捕捉模块128可以捕捉来自第二设备120的用户的操作指令。例如,第二设备120的用户可以点击(例如,单击、双击)所显示的屏幕截图的特定位置(例如,菜单、按钮、选项等),进行拖曳、选择等操作,也可以通过键盘等输入信息。第二设备120的用户可以利用鼠标、键盘、触摸屏等输入装置,也可以利用手势输入等向第二设备120提供输入信息。相应地,操作捕捉模块128可以捕捉用户操作和发生操作的位置,并将相关操作指令经由传输模块121传回至第一设备110。
第一设备110的操作模块118可以根据所接收的来自第二设备120的操作指令在第一设备110上执行对应的操作。例如,操作模块118可将用户操作指令进行回放,模拟相同的用户操作(比如点击特定位置、启动特定应用、在输入栏输入文字等),使第二设备120的用户进行的操作可以在第一设备110上生效。
虽然图1示出了第一设备110中的远程访问模块112、屏幕抓取模块114、视频编码器116、和可选的操作模块118是分开的模块,但这些模块中的一个或多个模块可以实现在一起。类似地,第二设备120中的远程访问模块122、视频解码器124、呈现模块126、和可选的操作捕捉模块128中的一者或多者也可以分开实现或在一起实现。以上任何一个模块或以上多个模块的组合可以用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、晶体管逻辑、或其任何组合来实现或执行。
图2是根据本公开一个实施例的远程设备访问方法的流程图。在一个实施例中,图2所示的方法可由以上描述的第一设备110、第二设备120来执行。
在步骤202,可在第二设备处生成远程访问命令以在第一设备和第二设备之间建立远程访问连接,该远程访问命令指示第二设备要获取第一设备的屏幕显示。第二设备可将该远程访问命令传送给第一设备。
在步骤204,第一设备可接收来自第二设备的远程访问命令。随后,第一设备可与第二设备建立远程访问连接。
在步骤206,第一设备可抓取与第一设备的屏幕显示相对应的屏幕截图,所抓取的屏幕截图可以是图片格式的。
在步骤208,第一设备可将该屏幕截图从图片格式编码成视频格式以生成视频流数据。在抓取到与第一设备的屏幕显示相对应的一张新屏幕截图时,可将该新屏幕截图与先前的屏幕截图进行联合编码,以生成与该新屏幕截图相对应的视频流数据。随后,第一设备可将该视频流数据传送给第二设备。
在步骤210,第二设备可接收该视频流数据并将该视频流数据解码成图片格式以恢复出原始的屏幕截图。在第二设备处接收到新的视频流数据时,可将该新的视频流数据与先前的视频流数据(或先前解码出的屏幕截图)进行联合解码,以生成新的屏幕截图。
在步骤212,第二设备可呈现该屏幕截图。例如,第二设备可在其显示器上全屏地、或在一部分屏幕上呈现该屏幕截图。
在可选步骤214,第二设备可接收用户操作并生成操作指令。例如,第二设备的用户可点击该屏幕截图上的特定按钮,第二设备可生成包含点击操作和点击位置的操作指令。随后,第二设备可将该操作指令传送给第一设备。
在步骤216,第一设备可从第二设备接收该操作指令。
在步骤218,第一设备可根据该操作指令来执行操作。例如,第一设备的操作模块可根据该操作指令在第一设备上执行与第二用户的操作相对应的操作,例如点击第一设备屏幕上的该特定按钮。
步骤206-212(以及可选的步骤214-218)可重复地执行,直至第一设备和第二设备结束该远程访问。在替换实施例中,第二设备可以仅显示第一设备的屏幕界面而不向第一设备提供操作指令,由此步骤214-218可被省略。
图3是根据本公开一个实施例的远程设备访问场景的示意图。图3作为示例而非限定示出了第一设备310和第二设备320分别为移动设备,但在其他示例中,第一设备310和第二设备320各自可以是任何合适的能够联网且具有显示屏的电子设备,例如台式计算机、笔记本电脑、平板设备、手机等。
在根据本公开的一个实施例中,第二设备320可以发起远程访问请求以与第一设备310建立远程访问连接并访问第一设备310的屏幕。在建立远程访问连接之后,第一设备310可抓取第一设备310的显示屏的屏幕截图1(例如,主屏幕),将该屏幕截图编码成视频流数据1,并将该视频流数据传送给第二设备320。如果屏幕截图1是第一设备310在该远程访问过程中生成的第一张屏幕截图,则可以独立地将第一张屏幕截图编码成视频流数据1,并将视频流数据1传送给第二设备。
第二设备320可将该视频流数据1解码成图片格式以恢复出原始的屏幕截图1。由此,可在第二设备320的显示器上(例如,在网页的一个区域中、在整个屏幕或部分屏幕上)呈现该屏幕截图1,即第一设备310的屏幕内容(例如,主屏幕)。由于第一设备310对屏幕截图1的编码和传输、以及第二设备320对视频流数据的解码引入了延迟,因此第二设备320可以在一些延迟之后显示屏幕截图1。
第一设备310在抓取屏幕截图1之后,可以按照指定间隔(例如,根据所设置的帧率)继续抓取屏幕截图2。当抓取到屏幕截图2时,可以将屏幕截图2与先前的屏幕截图(例如,屏幕截图1)联合地进行编码(例如,使用预测编码、运动估计等),以生成与屏幕截图2相对应的视频流数据2,并且可以将视频流数据2传送给第二设备。本领域技术人员可以理解,由于将屏幕截图2与屏幕截图1联合地编码,可以显著减少视频流数据2中的冗余信息。例如,如果第一设备310在此阶段的动态性很低(例如,停留在主屏幕,即屏幕截图2也显示主屏幕),则屏幕截图1和屏幕截图2之间的相似性非常高,则通过视频编码生成的视频流数据2将包含很少数据量。
第二设备320在接收到视频流数据2时可以从视频流数据2的配置数据中知晓视频流数据2是参考屏幕截图1来编码的屏幕截图2,并且可以相应地联合先前解码出的屏幕截图1来从视频流数据2解码出屏幕截图2。随后,第二设备可以呈现屏幕截图2。
当第一设备310抓取到第N张屏幕截图时,可以将第N张屏幕截图与先前的一张或多张屏幕截图(例如,参考帧)联合地编码,以生成对应于第N张屏幕截图的视频流数据。如上所述,视频编码器可根据各种方式来选择参考帧,例如选择第N-t张先前屏幕截图作为第N张屏幕截图的参考帧(t为指定的正整数),选择与第N张屏幕截图最接近(或局部相似)的一张或多张先前屏幕截图作为第N张屏幕截图的参考帧等等。
此过程可以重复进行,从而第一设备310继续抓取屏幕截图3、4等等,并生成视频流数据3、4等等。第二设备320可以相应地接收这些视频流数据并恢复和显示对应的屏幕截图。由此,视频编码器可顺序地接收多张屏幕截图,并且可以在每张屏幕截图的处理延迟之后逐帧地输出与每张屏幕截图相对应的视频流,减少了与缓存或等待相关联的延迟。
在该远程访问过程中的任何时间,第二设备320的用户可针对所显示的屏幕截图提供操作,例如点击屏幕截图上的特定应用所在的位置(对应于启动该应用的操作)。第二设备320可以捕捉该点击操作和点击位置,并将包含这些操作信息的操作指令302传送给第一设备310。由此,第一设备310可以针对其所显示的屏幕内容执行所接收的操作指令302,例如启动并运行所点击位置处的特定应用。
第一设备310执行该操作指令可引起第一设备310的显示屏变化。根据本公开,第一设备310的屏幕内容被持续地提供给第二设备320,由此第一设备310执行该操作指令引起的变化的显示内容(例如,该特定应用被点击、启动并运行的状态)也在第二设备320上展示给用户。例如,如果第一设备310在抓取屏幕截图3之后执行该操作指令(启动某个应用),则屏幕截图4将对应于该应用启动之后的屏幕显示状态。相应地,第二设备320接收到的屏幕截图3和屏幕截图4将分别对应于第一设备310在该应用启动之前和之后的屏幕状态。
如果该应用的某个运行阶段提供选项供用户操作,例如“确认”按钮,则第二设备320上相应地也会显示带有“确认”按钮的该界面,第二设备320的用户可点击该“确认”按钮以生成操作指令304,并使得第一设备310接收操作指令304并执行对“确认”按钮的点击。
本领域技术人员应理解,需要与用户交互的界面通常会停留一段时间,例如,显示“确认”按钮后等待用户操作。即使是使用本机操作,等待用户点击“确认”按钮可能需要例如1秒以上,由此该等待界面可维持1秒以上。根据本公开的屏幕显示延迟可例如在100ms左右,从第二设备320向第一设备310传送操作指令的延迟例如约为30ms左右。即,屏幕显示延迟加上操作指令传送延迟显著少于人类反应时间,因此在第二设备320上提供操作指令(例如,点击“确认”按钮)不会使得第一设备310等待比本地操作显著更长的时间,由此本公开的远程设备访问不会明显影响人机交互的体验。本公开可以减少屏幕截图传输延时和网络带宽使用,提供接近实时的远程设备访问体验。
图4是根据本公开另一个实施例的远程设备访问装置的框图。图4示出了第一设备410、第二设备420和服务器430。第一设备410和第二设备420可以与以上关于图1描述的第一设备110和第二设备120相似,不同之处在于第二设备420通过服务器430来访问第一设备410,并且可在服务器430中实现视频编码器434。
如图4所示,第一设备410可包括传输模块411、远程访问模块412、屏幕抓取模块414、和可选的操作模块418,它们分别与图1所示的第一设备110中对应的模块执行相似的功能。第二设备420可包括传输模块421、远程访问模块422、视频解码器424、呈现模块426、和可选的操作捕捉模块428,它们分别与图1所示的第二设备120中对应的模块执行相似的功能。服务器430可包括传输模块432和视频编码器434,其中传输模块432用于与第一设备410和第二设备420通信,视频编码器434可与图1所示的第一设备110中的视频编码器116执行相似的功能。
在第一设备410和第二设备420通过服务器430建立远程访问连接之后,第一设备410的屏幕抓取模块414可以捕捉第一设备410的屏幕显示内容并生成相对应的屏幕截图。屏幕抓取模块414可以将所抓取的屏幕截图通过传输模块411提供给服务器430。服务器430的传输模块432可接收来自第一设备410的屏幕截图,并将其提供给视频编码器434。作为示例而非限定,屏幕抓取模块414每当抓取一张新的屏幕截图时,就将该新的屏幕截图提供给视频编码器434,由此减少提供屏幕截图的延迟。视频编码器434可以如上参考图1中的视频编码器116所述地将所接收的屏幕截图编码成视频流数据。随后,服务器430可通过传输模块432将该视频流数据传送给第二设备420。第二设备420如上参考图1中的第二设备120所述地解码该视频流数据并呈现恢复出的屏幕截图。
此外第二设备420的操作捕捉模块428可以捕捉来自第二设备420的用户的操作指令,并将该操作指令传送给服务器430。服务器430的传输模块432可接收来自第二设备420的操作指令,并将该操作指令转发给第一设备410。第一设备410的操作模块418可如上参照图1中的操作模块118所描述地执行该操作指令。
根据一个实施例,为了减少第一设备410向服务器430传送屏幕截图的延迟,第一设备410和服务器430优选地位于同一个局域网中。例如,第一设备410可通过有线接口或无线接口连接到服务器430,由此可以非常快速地将第一设备410捕捉的屏幕截图提供给服务器430,避免了数据在因特网上传输造成的延迟以及大量图片数据带来的网络拥塞。
因为视频编码器对性能要求较高,在服务器430上运行视频编码器可以减少对第一设备410的硬件配置、性能和功耗等的要求。同时,服务器430可以处理多个云端设备的屏幕截图数据,从而提高远程访问效率。服务器430还可以根据所处理的数据量、网络拥塞程度等指示第一设备410(和/或其他通过服务器430进行远程访问的设备)调整抓取屏幕截图的分辨率和/或帧率。
图5是根据本公开另一个实施例的远程设备访问方法的流程图。在一个实施例中,图5所示的方法可由以上参考图4描述的第一设备410、第二设备420和服务器430来执行。
在步骤502,可在第二设备处生成远程访问命令以在第一设备和第二设备之间建立远程访问连接,该远程访问命令指示第二设备要获取第一设备的屏幕显示。第二设备可将该远程访问命令传送给服务器。
在步骤503,服务器可接收来自第二设备的远程访问命令并将其转发给第一设备。
在步骤504,第一设备可接收来自服务器的远程访问命令。随后,第一设备可经由该服务器与第二设备建立远程访问连接。
在步骤506,第一设备可抓取与第一设备的屏幕显示相对应的屏幕截图,所抓取的屏幕截图可以是图片格式的。第一设备可将该屏幕截图传送给服务器。
在步骤508,服务器可将该屏幕截图从图片格式编码成视频格式以生成视频流数据。服务器在从第一设备接收到与第一设备的屏幕显示相对应的一张新屏幕截图时,可将该新屏幕截图与先前的屏幕截图进行联合编码,以生成与该新屏幕截图相对应的视频流数据,并将与该新屏幕截图相对应的视频流数据传送给第二设备。
在步骤510,第二设备可接收该视频流数据并将该视频流数据解码成图片格式以恢复出原始的屏幕截图。在第二设备处接收到新的视频流数据时,可将该新的视频流数据与先前的视频流数据进行联合解码,以生成新的屏幕截图。
在步骤512,第二设备可呈现该屏幕截图。例如,第二设备可在其显示器上全屏地、或在一部分屏幕上呈现该屏幕截图。
在可选步骤514,第二设备可接收用户操作并生成操作指令。随后,第二设备可将该操作指令传送给服务器。
在步骤515,服务器可接收来自第二设备的操作指令并将其转发给第一设备。
在步骤516,第一设备可从服务器接收该操作指令。
在步骤518,第一设备可根据该操作指令来执行操作。例如,第一设备的操作模块可根据该操作指令在第一设备上执行与第二用户的操作相对应的操作,例如点击第一设备屏幕上的该特定按钮。
步骤506-512(以及可选的步骤514-518)可重复地执行,直至第一设备和第二设备结束该远程访问。在替换实施例中,第二设备可以仅显示第一设备的屏幕界面而不向第一设备提供操作指令,由此步骤514-518可被省略。
图6是根据本公开另一个实施例的远程设备访问场景的示意图。用户可在本地设备602上通过服务器604访问一个或多个远程设备606、608、610。应理解,图6所示的本地设备602和远程设备606、608、610不限于图6中所示形式的设备,而是可以各自是任何合适的能够联网且具有显示屏的电子设备,例如台式计算机、笔记本电脑、平板设备、手机等。
本地设备602可通过服务器604依次或同时访问一个或多个远程设备606、608、610,并在本地设备602的屏幕上显示所访问的远程设备的屏幕截图。作为示例而非限定,本地设备602可在本地屏幕上的一个区域中显示所访问的一个远程设备的屏幕截图。或者,本地设备602可在本地屏幕上的不同区域中分别显示所访问的多个远程设备的屏幕截图,如612、614、616等。
在开发移动端应用(app)时,经常需要测试某种应用在多种手机/平板上的兼容性。利用本发明,可以由服务提供方将多种型号的设备(例如,设备606、608、610等)放在云上供大家共享使用,而无需每个开发/测试人员配备多种不同型号的设备。在把云端设备提供给用户(例如,开发/测试人员)使用时,用户可在本地设备(例如,602)上访问云端设备,实现对云端设备的操作并在本地设备上显示云端设备的显示屏界面(例如,屏幕截图),从而能够方便地完成在多种型号的设备上的测试操作。
本公开将独立的屏幕截图编码成视频流数据进行传输,依赖于视频编码技术,可以减少很多冗余信息的传递,例如某一张屏幕截图和上一张屏幕截图相比变动很少,那么就只需要传输有变动的内容,很大程度上减少了数据量。在屏幕截图传输的过程中引入了屏幕截图到视频再回到屏幕截图的步骤,压缩了实际在网络上传输的数据量。同时通过低延时的视频编码和解码技术,使得两次转换过程带来的延时在可接受的范围内,基本不影响用户体验。与现有技术相比,本公开可以在相同网络环境下传输质量更好的画面(更高帧率和/或更高分辨率),或者在相同画面质量的情况下大大减少对网络带宽的要求,使访问更流畅。
本公开可以实现屏幕截图的快速传输,减少了传输延时和网络带宽使用,提供了接近实时的远程设备访问体验。本公开提供的远程设备访问方法和装置不仅适用于从一个电子设备(例如,计算机、平板设备、手机等)访问云端设备,也适用于从一个电子设备访问任何其他联网设备。此外,还可以在一个电子设备上同时访问并显示多个其他设备的屏幕内容(例如,在本地设备显示器的多个区域中显示不同的远程设备屏幕),由此减少用户需要分别操作不同设备的繁琐性并提高操作效率。
以上描述的远程访问方法和装置的各个步骤和模块可以用硬件、软件、或其组合来实现。如果在硬件中实现,结合本公开描述的各种说明性步骤、模块、以及电路可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或其他可编程逻辑组件、硬件组件、或其任何组合来实现或执行。通用处理器可以是处理器、微处理器、控制器、微控制器、或状态机等。如果在软件中实现,则结合本公开描述的各种说明性步骤、模块可以作为一条或多条指令或代码存储在计算机可读介质上或进行传送。实现本公开的各种操作的软件模块可驻留在存储介质中,如RAM、闪存、ROM、EPROM、EEPROM、寄存器、硬盘、可移动盘、CD-ROM、云存储等。存储介质可耦合到处理器以使得该处理器能从/向该存储介质读写信息,并执行相应的程序模块以实现本公开的各个步骤。而且,基于软件的实施例可以通过适当的通信手段被上载、下载或远程地访问。这种适当的通信手段包括例如互联网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或者其他这样的通信手段。
还应注意,这些实施例可能是作为被描绘为流程图、流图、结构图、或框图的过程来描述的。尽管流程图可能会把诸操作描述为顺序过程,但是这些操作中有许多操作能够并行或并发地执行。另外,这些操作的次序可被重新安排。
所公开的方法、装置和系统不应以任何方式被限制。相反,本公开涵盖各种所公开的实施例(单独和彼此的各种组合和子组合)的所有新颖和非显而易见的特征和方面。所公开的方法、装置和系统不限于任何具体方面或特征或它们的组合,所公开的任何实施例也不要求存在任一个或多个具体优点或者解决特定或所有技术问题。
上面结合附图对本公开的实施例进行了描述,但是本公开并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本公开的启示下,在不脱离本公开宗旨和权利要求所保护的范围情况下,还可做出很多更改,这些均落在本公开的保护范围之内。