投屏方法和电子设备与流程

文档序号:29208380发布日期:2022-03-12 03:01阅读:344来源:国知局
投屏方法和电子设备与流程
投屏方法和电子设备
1.本技术要求于2021年09月26日提交国家知识产权局、申请号为202111127517.3、申请名称为“投屏方法和pc”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及投屏技术领域,具体涉及一种投屏方法和电子设备。


背景技术:

3.当前,较多的电子设备支持无线投屏技术,即将电子设备a的显示界面投屏显示到另一个电子设备b的屏幕上,用户可通过电子设备b观看显示内容,例如,将个人计算机(personal computer,pc)的显示界面投屏至智能电视上进行显示。
4.因此,需要研究如何将pc的显示界面投屏至智能电视。


技术实现要素:

5.本技术提供了一种投屏方法和电子设备,能够实现将电子设备的显示界面投屏至另一个电子设备,并减少投屏时延。
6.第一方面,本技术提供一种投屏方法,该方法应用于第一电子设备,包括:显示包含有第二电子设备的标识的第一界面;接收用户在第一界面上作用于第二电子设备的标识的第一操作;响应于第一操作,建立与第二电子设备的通信连接;获取第一电子设备的当前显示界面对应的图像数据,对图像数据进行编码,得到编码后的图像数据,编码后的图像数据包括i帧或者p帧;向第二电子设备发送编码后的图像数据。
7.其中,第一电子设备可以为pc,第二电子设备可以为智能电视,即实现的是pc到智能电视的投屏过程。第二电子设备的标识可以为设备名称,第一界面可以为显示设备名称的可用设备列表的界面。pc中可提供用于用户输入投屏操作的入口,例如控件等。用户输入第一操作后,例如是对第二电子设备的标识的选中操作,pc根据接收到的选中操作建立与智能电视的通信连接,以将当前显示界面对应的图像数据发送至智能电视,最终实现将pc的显示界面投屏至智能电视。与此同时,pc得到的编码数据中只包括i帧和p帧,i帧解码时不需要参考其他帧,p帧只需参考前一帧。那么,智能电视接收到编码后的图像数据后,可直接对该图像数据进行解码即可,无需再进行缓存,大大减少了帧的端对端时延。
8.结合第一方面,在第一方面的有些实现方式中,上述第一电子设备包括编码器,上述对图像数据进行编码,包括:调用编码器对图像数据进行编码。
9.结合第一方面,在第一方面的有些实现方式中,在调用编码器对图像数据进行编码之前,上述方法还包括:通过第一线程调用initencoder接口对编码器进行初始化,在初始化的过程中,设置initencoder接口中的hasbframeingop参数的值为0,其中,hasbframeingop参数的值为0指示编码器对图像数据进行编码时不编码b帧。
10.其中,第一电子设备的编码器在初始化时设置不编码b帧,则发送至第二电子设备
的编码数据中也没有b帧,使得第二电子设备不需要等待解码b帧,从而减少了帧的端对端时延。
11.结合第一方面,在第一方面的有些实现方式中,上述获取第一电子设备的当前显示界面对应的图像数据,对图像数据进行编码,包括:创建第一线程;通过第一线程获取第一电子设备的当前显示界面对应的图像数据,以及对图像数据进行编码。
12.其中,第一线程可以为抓屏编码线程,在pc与智能电视建立通信连接后,可创建一个抓屏编码线程,抓屏编码线程可以通过windows api接口从显卡(gpu)中获取当前显示界面对应的图像数据,并对该图像数据进行格式转换,比如将红绿蓝(rgb)数据转换为nv12格式。然后,抓屏编码线程调用编码器,对格式转换后的图像数据进行压缩编码,编码为h264格式的图像数据,且编码后的数据不包括b帧。
13.此实现方式中,pc在获取图像数据及对图像数据进行编码时,仅开启了一个抓屏编程线程,在抓屏编码线程获取一帧图像数据后,即刻调用编码器对该图像数据进行编码,并发送至智能电视进行解码显示。那么,在抓屏编码线程工作时,抓屏过程和编码过程为串行执行,会分别独占gpu资源,由此,抓屏过程和编码过程不会进入因抢占gpu资源而相互等待的困境,可以减少投屏过程的时延。同时,pc编码得到的编码数据只包括i帧和p帧,智能电视接收到该编码数据后无需进行缓存,进而也减少了帧的端对端时延。
14.结合第一方面,在第一方面的有些实现方式中,上述第一电子设备包括gpu,第一电子设备的当前显示界面对应的图像数据存储于gpu中。
15.结合第一方面,在第一方面的有些实现方式中,第一电子设备安装有第一应用,第一界面为通过第一应用显示的界面。
16.结合第一方面,在第一方面的有些实现方式中,上述接收用户在第一界面上作用于第二电子设备的标识的第一操作,包括:第一应用接收用户对第二电子设备的标识的选中操作。
17.其中,pc中安装的第一应用可以为电脑管家应用程序(application,app),该电脑管家app的显示界面上可以包括一个“立即连接”控件,用户可通过鼠标点击该控件,以输入上述第二操作,进而显示出包含第二电子设备的标识的第一界面。然后,用户可通过该第一界面输入对第二电子设备的标识的选中操作。由此,可提高用户进行投屏操作的简易度。
18.结合第一方面,在第一方面的有些实现方式中,第一电子设备包括第一发现连接模块、蓝牙芯片和无线保真(wireless fidelity,wi-fi)芯片,上述响应于第一操作,建立与第二电子设备的通信连接,包括:第一应用响应于第一操作,指示第一发现连接模块与第二电子设备建立通信连接;第一发现连接模块通过蓝牙芯片与第二电子设备建立蓝牙连接;第一发现连接模块生成服务集标识(service set identifier,ssid)和密码,并通过wi-fi芯片建立模拟热点(soft acce point,softap);第一发现连接模块通过蓝牙连接对应的通道将ssid和密码发送至第二电子设备,与第二电子设备建立wi-fi p2p连接。
19.其中,pc调用wi-fi芯片建立一个softap,该softap具有ssid和密码,进而pc通过建立的蓝牙连接通道将ssid和密码发送至智能电视,使智能电视调用自身的wi-fi芯片根据接收到的ssid和密码与pc建立wi-fi p2p连接。同时,pc和智能电视之间还建立起一个socket数据通道,以供后续pc与智能电视相互传输数据。
20.结合第一方面,在第一方面的有些实现方式中,第一电子设备还包括第一通信模
块,上述向第二电子设备发送编码后的图像数据,包括:第一通信模块通过wi-fi p2p连接对应的通道向第二电子设备发送编码后的图像数据。
21.结合第一方面,在第一方面的有些实现方式中,在第一线程获取第一电子设备的当前显示界面对应的图像数据之前,上述方法还包括:第一应用获取第一电子设备当前使用的分辨率以及第一发现连接模块发送的第一分辨率,第一分辨率为第二电子设备发送的分辨率;第一应用确定第一电子设备当前使用的分辨率与第一分辨率不同,将第一电子设备当前使用的分辨率切换为第一分辨率,以第一分辨率显示当前显示界面。
22.其中,因pc投屏至智能电视时,所传输的待投屏数据需要适配于智能电视的显示屏,因此,若pc当前的分辨率与智能电视的分辨率不同,则可以将pc的分辨率切换为智能电视的分辨率,这样,所获取的图像数据即为适配智能电视的图像数据,以提高智能电视的显示画面的美观度。
23.结合第一方面,在第一方面的有些实现方式中,在显示包含有第二电子设备的标识的第一界面之前,上述方法还包括:显示包含有投屏控件的第二界面;接收用户在第二界面上作用于投屏控件的第二操作;上述显示包含有第二电子设备的标识的第一界面,包括:响应于第二操作,显示包含有第二电子设备的标识的第一界面。
24.其中,投屏控件可以为“立即连接”控件,用户通过鼠标点击该控件时,即输入了第二操作(该第二操作也可称为执行投屏时的投屏操作),然后pc可以搜索附近可用的投屏设备,以显示在第一界面上。
25.结合第一方面,在第一方面的有些实现方式中,上述第二界面为第一应用启动后的显示界面,上述响应于第二操作,显示包含有第二电子设备的标识的第一界面,包括:第一应用响应于第二操作,指示第一发现连接模块搜索可用的投屏设备;第一发现连接模块通过蓝牙芯片搜索可用的投屏设备,将搜索到的可用的投屏设备的标识发送至第一应用;第一应用显示包含有可用的投屏设备的标识的第一界面,可用的投屏设备包括第二电子设备。
26.其中,pc的蓝牙芯片搜索附近可用的投屏设备时,可用的投屏设备的蓝牙芯片可以接收到pc的扫描信号,并向pc反馈自身的设备信息(包括设备标识),进而pc可通过电脑管家app展示可用的投屏设备的设备信息,比如通过可用设备列表进行展示,以方便用户对智能电视进行确认选择。
27.第二方面,本技术提供一种投屏方法,该方法应用于第二电子设备,包括:接收第一电子设备发送的编码后的图像数据,该编码后的图像数据包括i帧或者p帧;对编码后的图像数据进行解码,将解码后的图像数据存入第一缓存队列;将第一缓存队列中的解码后的图像数据进行送显。
28.其中,第一电子设备与第二电子设备建立通信连接后,第二电子设备可接收第一电子设备发送的编码后的图像数据并对其进行解码,以存入第一缓存队列中(即缓存队列b),供后续显示对应的图像。在解码过程中,因编码后的图像数据仅包括i帧或者p帧,没有b帧,则不需要等待解码b帧,减少了帧的端对端时延。
29.结合第二方面,在第二方面的有些实现方式中,上述对编码后的图像数据进行解码,将解码后的图像数据存入第一缓存队列,包括:对接收到的编码后的图像数据不执行存入第二缓存队列的操作;在编码后的图像数据为i帧的情况下,对i帧进行解码,将解码后的
i帧存入第一缓存队列;在编码后的图像数据为p帧的情况下,从第一缓存队列中获取p帧的上一帧的解码数据,根据p帧的上一帧的解码数据对p帧进行解码,将解码后的p帧存入第一缓存队列。
30.其中,第二电子设备在接收到编码后的图像数据时,不需要将其存入第二缓存队列(即缓存队列a),在接收到i帧时直接对其进行解码即可,在接收到p帧时根据其上一帧的解码结果对p帧进行解码,由此还可以减少缓存占用空间。
31.结合第二方面,在第二方面的有些实现方式中,上述第二电子设备包括第二通信模块,接收第一电子设备发送的编码后的图像数据,包括:第二通信模块接收第一电子设备发送的编码后的图像数据。
32.结合第二方面,在第二方面的有些实现方式中,上述对编码后的图像数据进行解码,包括:创建第二线程;通过第二线程对编码后的图像数据进行解码。
33.结合第二方面,在第二方面的有些实现方式中,上述第二电子设备包括解码器,通过第二线程对编码后的图像数据进行解码,包括:通过第二线程调用解码器对编码后的图像数据进行解码。
34.其中,第二线程可以为解码线程,解码线程获取到编码后的图像数据后,可以调用解码器对其进行解码,在接收到i帧时直接对其进行解码即可,在接收到p帧时根据其上一帧的解码结果对p帧进行解码,由此在没有b帧的情况下,则不需要等待解码b帧,减少了帧的端对端时延。
35.第三方面,本技术提供一种装置,该装置包含在电子设备中,该装置具有实现上述第一方面及上述第一方面的可能实现方式中电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块或单元。例如,接收模块或单元、处理模块或单元等。
36.第四方面,本技术提供一种投屏系统,包括第一电子设备和第二电子设备,第一电子设备执行第一方面的技术方案中任意一种方法,第二电子设备执行第二方面的技术方案中任意一种方法。
37.第五方面,本技术提供一种电子设备,该电子设备包括:处理器、存储器和接口;处理器、存储器和接口相互配合,使得电子设备执行第一方面的技术方案中任意一种方法或者执行第二方面的技术方案中任意一种方法。
38.第六方面,本技术提供一种芯片,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面及其任意可能的实现方式中的方法或者执行第二方面及其任意可能的实现方式中的方法。
39.可选地,芯片还包括存储器,存储器与处理器通过电路或电线连接。
40.进一步可选地,芯片还包括通信接口。
41.第七方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得该处理器执行第一方面的技术方案中任意一种方法或者执行第二方面的技术方案中任意一种方法。
42.第八方面,本技术提供一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码在电子设备上运行时,使得该电子设备执行第一方面的技术方案中任意一种方法或者执行第二方面的技术方案中任意一种方法。
附图说明
43.图1是本技术实施例提供的一例电子设备的结构示意图;
44.图2是本技术实施例提供的一例pc的桌面界面示意图;
45.图3是本技术实施例提供的一例电脑管家app的打开界面示意图;
46.图4是本技术实施例提供的一例电脑管家app的搜索设备界面示意图;
47.图5中的(a)图是本技术实施例提供的一例电脑管家app的连接界面示意图;
48.图5中的(b)图是本技术实施例提供的一例智能电视的连接界面示意图;
49.图6中的(a)图是本技术实施例提供的一例pc投屏至智能电视的对比显示示意图;
50.图6中的(b)图是本技术实施例提供的另一例pc投屏至智能电视的对比显示示意图;
51.图7是本技术实施例提供的一例pc和智能电视的系统架构示意图;
52.图8是本技术实施例提供的一例pc与智能电视建立连接过程中,pc中各模块与智能电视中各模块之间进行数据交互的过程示意图;
53.图9是本技术实施例提供的一例pc与智能电视传输数据过程中,pc中各模块与智能电视中各模块之间进行数据交互的过程示意图;
54.图10中的(a)图是相关技术中智能电视对编码后的图像数据进行解码的示意图;
55.图10中的(b)图是本技术实施例提供的一例智能电视对编码后的图像数据进行解码的示意图;
56.图11是本技术实施例提供的一例投屏方法的流程示意图;
57.图12是本技术实施例提供的一例电脑管家app的断开连接界面示意图;
58.图13中的(a)图是本技术实施例提供的一例电脑管家app的扩展模式界面示意图;
59.图13中的(b)图是本技术实施例提供的一例扩展模式下pc投屏至智能电视的对比显示示意图。
具体实施方式
60.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。其中,在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,在本技术实施例的描述中,“多个”是指两个或多于两个。
61.以下,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者更多个该特征。
62.本技术实施例提供的投屏方法可以应用于手机、平板电脑、pc、超级移动个人计算机(ultra-mobile personal computer,umpc)、车载设备、上网本、个人数字助理(personal digital assistant,pda)等具有投屏功能且可以安装应用程序(application,app)的电子设备上,本技术实施例对电子设备的具体类型不作任何限制。
63.示例性的,图1是本技术实施例提供的一例电子设备100的结构示意图。以电子设备100是pc为例,电子设备100可以包括处理器110、存储器120和通信模块130等。
64.其中,处理器110可以包括一个或多个处理单元,存储器120用于存储程序代码和数据。在本技术实施例中,处理器110可执行存储器120存储的计算机执行指令,用于对电子设备100的动作进行控制管理。
65.通信模块130可以用于电子设备100的各个内部模块之间的通信、或者电子设备100和其他外部电子设备之间的通信等。示例性的,如果电子设备100通过有线连接的方式和其他电子设备通信,通信模块130可以包括接口等,例如usb接口,usb接口可以是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如增强现实(augmented reality,ar)设备等。
66.或者,通信模块130可以包括音频器件、射频电路、蓝牙芯片、无线保真(wireless fidelity,wi-fi)芯片、近距离无线通讯技术(near-field communication,nfc)模块等,可以通过多种不同的方式实现电子设备100与其他电子设备之间的交互。
67.可选地,电子设备100还可以包括显示屏140,显示屏140可以显示人机交互界面中的图像或视频等。
68.可选地,电子设备100还可以包括外设设备150,例如鼠标、键盘、扬声器、麦克风等。
69.应理解,除了图1中列举的各种部件或者模块之外,本技术实施例对电子设备100的结构不做具体限定。在本技术另一些实施例中,电子设备100还可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
70.本技术实施例中的“投屏”是指,将一个电子设备上的界面数据传输至另一电子设备上进行显示,为了便于理解,将上述的“另一电子设备”称为投屏设备。本技术实施例可以实现pc投屏至智能电视、pc投屏至平板、平板投屏至pc等过程,下面以电子设备为pc、投屏设备为智能电视为例进行说明。
71.首先,pc上可以安装一个供用户执行投屏操作的app,例如可以为电脑管家app,如图2所示,该电脑管家app可以以一个桌面图标形式展现在pc的桌面上。用户通过鼠标双击该桌面图标,可将电脑管家app启动,该电脑管家app的启动界面可以参见图3。如图3所示,电脑管家app打开界面的左侧包括驱动管理、我的手机、电脑投屏、故障排查等选项控件;当用户通过pc的鼠标点击电脑投屏选项控件后,在打开界面的右侧可以显示出电脑投屏选项对应的功能界面,该功能界面上包括“立即连接”控件、以及pc支持的投屏模式介绍,例如pc当前支持的是镜像模式和扩展模式。在该界面上,用户点击“立即连接”控件后,跳转至如图4所示的显示界面,pc开始搜索附近可用的投屏设备,这些可用的投屏设备可与pc进行短距通信,比如蓝牙通信。假设当前可用的投屏设备有设备1和设备2,则pc可将设备1和设备2的基本信息(如设备名称)显示在图4所示的可用设备列表中。然后,用户可点击选中可用设备列表中的一个设备(假设选择的是设备2),pc上显示如图5中的(a)图所示的连接界面;同时,pc向设备2发送连接请求,设备2上显示如图5中的(b)图所示的确认界面。用户在图5中的(b)图所示的界面上点击了“同意”控件后,即可完成pc与设备2的投屏连接过程,进而pc可将当前的显示界面的数据发送至设备2,设备2上便显示出pc当前的显示界面。其中,以设
备2为智能电视为例,在pc与智能电视建立投屏连接时,pc当前显示的界面仍是电脑管家app的界面,那么智能电视上也显示出该界面,如图6中的(a)图所示;当pc上打开了视频播放界面后,智能电视上同时也显示出该视频播放界面,如图6中的(b)图所示。
72.基于上述用户执行投屏操作的过程,下面结合pc和智能电视的系统架构以及系统架构中各模块之间的数据交互过程对本技术实施例提供的投屏方法进行描述。图7为pc和智能电视的系统架构示意图,图8为pc与智能电视建立连接过程中,pc中各模块与智能电视中各模块之间进行数据交互的过程示意图,图9为pc与智能电视传输数据过程中,pc中各模块与智能电视中各模块之间进行数据交互的过程示意图。
73.如图7所示,pc至少包括:应用程序层的电脑管家app,系统层的第一发现连接模块、抓屏编码线程和第一通信模块,硬件层的显卡(gpu)、编码器、第一蓝牙芯片和第一wi-fi芯片。智能电视至少包括:系统层的协同服务(service)模块、第二发现连接模块、第二通信模块、解码线程和显示驱动,硬件层的解码器、第二蓝牙芯片、第二wi-fi芯片和显示屏。
74.如图8所示,pc与智能电视建立连接的过程可以包括:
75.s1,用户点击电脑管家app中的“立即连接”控件。
76.s2,电脑管家app向第一发现连接模块发送指示搜索投屏设备的消息。
77.其中,电脑管家app接收到用户输入的“立即连接”操作后,可以向第一发现连接模块发送一个进程间通信(inter-process communication,ipc)消息,可选地,该ipc消息可以携带搜索指示指令,用于指示第一发现连接模块调用第一蓝牙芯片的能力搜索发现附近可用的投屏设备。
78.s3,第一发现连接模块调用第一蓝牙芯片的能力搜索发现附近可用的投屏设备。
79.此步骤中,第一发现连接模块调用第一蓝牙芯片的能力,也即是利用第一蓝牙芯片搜索可用的投屏设备的蓝牙信号。
80.s4,可用的投屏设备的蓝牙芯片接收到pc的搜索信号,并将搜索信号发送至第二发现连接模块。
81.其中,图8中仅示出智能电视这一个可用的投屏设备,对应的蓝牙芯片即第二蓝牙芯片,其余可用的投屏设备的原理类似,图8中未示出。
82.s5,智能电视的第二发现连接模块向pc的第一发现连接模块反馈自身的基本信息。
83.其中,设备的基本信息包括设备标识,比如设备名称、媒体存取控制地址(media access control address,mac地址)等,第二发现连接模块可以存储有设备的基本信息。
84.s6,pc的第一发现连接模块接收到的投屏设备的基本信息(如设备名称、mac地址)发送至电脑管家app。
85.s7,电脑管家app将这些可用的投屏设备的基本信息展示在可用设备列表中。
86.s8,用户选中可用设备列表中的设备2(即智能电视)。
87.s9,电脑管家app接收到用户的选中操作,向第一发现连接模块发送指示建立连接的消息。
88.其中,该消息也可以为ipc消息,用于指示第一发现连接模块调用第一蓝牙芯片与智能电视建立蓝牙连接(ble连接);可选地,该ipc消息可以携带智能电视的标识。
89.s10,第一发现连接模块调用第一蓝牙芯片的能力与智能电视的第二蓝牙芯片进
行蓝牙连接。
90.s11,第一蓝牙芯片与第二蓝牙芯片建立蓝牙连接。
91.s12,在pc与智能电视(即设备2)建立了蓝牙连接后,第一蓝牙芯片向第一发现连接模块发送建立蓝牙连接成功的消息。
92.s13,第一发现连接模块生成ssid和密码。
93.s14,第一发现连接模块调用第一wi-fi芯片建立一个softap。
94.s15,第一wi-fi芯片创建softap。
95.其中,该softap对应有上述创建的ssid和密码。
96.s16,第一发现连接模块通过建立的蓝牙连接的通道将ssid和密码发送至智能电视的第二发现连接模块。
97.s17,第二发现连接模块调用第二wi-fi芯片根据接收到的ssid和密码与pc建立wi-fi p2p连接。同时,pc和智能电视之间还建立起一个socket数据通道,以供后续pc与智能电视相互传输数据。需要说明的是,上述pc和智能电视之间所建立连接的类型不限于蓝牙连接和wi-fi p2p连接,也可以是其他类型的连接方式,只要能实现两者之间传输数据即可。
98.s18,第一wi-fi芯片向第一发现连接模块发送建立连接成功的消息,第二wi-fi芯片向第二发现连接模块发送建立连接成功的消息。
99.在pc与智能电视建立了wi-fi p2p连接之后,如图9所示,pc与智能电视传输投屏数据的过程可以包括:
100.在pc端:s19,第一连接发现模块将上述接收到的建立连接成功的消息发送至电脑管家app。
101.s20,电脑管家app创建抓屏编码线程。
102.s21,抓屏编码线程初始化编码器,编码器完成初始化。
103.在对编码器初始化时,可以设置编码图像的分辨率以及默认的h264编码格式。
104.同时,在智能电视端:s22,第二连接发现模块将上述接收到的建立连接成功的消息发送至协同服务模块。
105.s23,协同服务模块创建解码线程。
106.s24,解码线程初始化解码器,解码器完成初始化。
107.接下来,s25,第一发现连接模块从显卡中获取pc所支持显示图像的分辨率。
108.s26,第一发现连接模块将pc所支持显示图像的分辨率发送至智能电视的第二发现连接模块。
109.s27,第二发现连接模块从接收到的分辨率中选择其中一个分辨率,作为第一分辨率。
110.s28,第二发现连接模块将第一分辨率发送至pc的第一发现连接模块。
111.其中,对于s25-s28步骤,pc的第一发现连接模块可以向智能电视的第二发现连接模块发送pc所支持显示图像的分辨率,例如发送宽高为1920
×
1080和2520
×
1680两个分辨率。智能电视接收到这两个分辨率后,可以根据自身的分辨率选择其中的一个分辨率,并通过第二发现连接模块返回给pc的第一发现连接模块。例如,智能电视支持2520
×
1680分辨率,则将该分辨率返回给pc;对于pc发送至智能电视的分辨率中没有智能电视所支持的分
辨率的情况,则智能电视可以选择一个与其分辨率较接近的分辨率。对于此步骤,作为另一种可实现的方式,智能电视可以主动通过第二发现连接模块将自身的分辨率发送至pc的第一发现连接模块,例如第二发现连接模块直接将2520
×
1680分辨率发送至第一发现连接模块,减少了s25-s28的选择过程。
112.需要说明的是,上述s19-s24初始化编码器和初始化解码器的过程,与s25-s28确定第一分辨率的过程,执行顺序不做限制,可以先执行s19-s24再执行s25-s28,也可以先执行s25-s28再执行s19-s24。在先执行s19-s24的情况下,对编码器初始化时,可以先设置编码图像的分辨率为pc当前使用的分辨率,并在获取到第一分辨率后将其更新为第一分辨率。在先执行s25-s28的情况下,对编码器初始化时,可直接设置编码图像的分辨率为第一分辨率。
113.s29,pc的第一发现连接模块向电脑管家app发送第一分辨率(如2520
×
1680)。
114.s30,电脑管家app从显卡中获取pc当前使用的分辨率。
115.s31,电脑管家app判断pc当前使用的分辨率与第一分辨率是否相同。
116.s32,如果上述判断结果是不同的,则电脑管家app设置pc当前使用的分辨率为第一分辨率。
117.比如,电脑管家app调用接口切换pc显卡的分辨率为2520
×
1680,以使pc投屏至智能电视的数据适配于智能电视的显示屏。
118.s33,电脑管家app指示抓屏编码线程获取图像数据。
119.s34,抓屏编码线程通过windows api接口从显卡(gpu)中获取图像数据。
120.因上述已将pc当前使用的分辨率设置为2520
×
1680,则此时所获取到的图像数据的分辨率即为2520
×
1680。其中,显卡(gpu)中可以存储有一个图像队列,该图像队列包括需要显示在pc显示屏上的图像数据,这些图像数据可以是由gpu对需要显示在pc显示屏上的数据进行绘制渲染后送显的图像数据。可选地,上述图像数据可以为红绿蓝rgb图像数据,抓屏编码线程获取到该rgb图像数据后,可以将其转换为nv12格式。
121.s35,抓屏编码线程调用编码器。
122.s36,编码器对获取到的图像数据进行编码。此时,编码器编码得到的数据即为h264格式的图像数据。
123.s37,编码器向抓屏编码线程返回编码后的图像数据。
124.s38,抓屏编码线程通过第一通信模块沿上述socket数据通道将编码后的图像数据发送至智能电视的第二通信模块。
125.s39,智能电视的第二通信模块将编码后的图像数据发送至解码线程。
126.s40,解码线程调用解码器。
127.s41,解码器对该图像数据进行解码。例如解码为nv12格式的图像数据。
128.s42,解码器向解码线程返回解码后的图像数据。
129.s43,解码线程将解码后的图像数据发送至显示驱动,进而交由显示屏进行显示图像。需要说明的是,本技术实施例对编码器进行编码的格式、以及解码器进行解码的格式不做限制,只要能实现编码解码并显示的过程即可。
130.至此,经过上述过程,完成了pc将显示内容投屏至智能电视的过程。由图7所示的系统架构示意图可知,pc在获取图像数据及对图像数据进行编码时,仅开启了一个抓屏编
程线程,在抓屏编码线程获取一帧图像数据后,即刻调用编码器对该图像数据进行编码,并发送至智能电视进行解码显示。那么,在抓屏编码线程工作时,抓屏过程和编码过程为串行执行,会分别独占gpu资源,由此,抓屏过程和编码过程不会进入因抢占gpu资源而相互等待的困境,可以减少投屏过程的时延。经过实验论证,单独抓屏和编码过程的耗时不足10毫秒(ms),即使是对播放视频进行投屏,也能够满足时延要求。
131.其中,对于上述编码器对图像数据进行编码的过程,相关技术中,编码得到的h264格式的图像数据中通常包括i帧、p帧和b帧。
132.i帧:帧内编码帧,又称intra picture,i帧通常是每个画面组(group of pictures,gop)的第一个帧。解码i帧时可以通过视频解压算法解压成一张单独的完整的图片,无需参考其他帧。
133.p帧:前向预测编码帧,又称predictive-frame,通过充分降低在图像序列中前面已编码帧的时间冗余信息(运动预测、运动补偿等方式)来压缩传输数据量的编码图像,也叫预测帧。解码p帧时需要参考其前面的一个帧来生成一张完整的图片。
134.b帧:双向预测内插编码帧,又称bi-directional interpolated prediction frame,既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧。解码b帧时需要参考其前面的一个帧及其后面的一个帧来生成一张完整的图片。
135.相关技术中,假设当前编码得到的帧序列为i、p、b、p,如图10中的(a)图所示,智能电视的第二通信模块接收到该帧序列后,先将其存储于解码线程的缓存队列a(图7中未示出)中,再由解码线程从缓存队列a中依次读取帧进行解码,一般情况下,该缓存队列a中可缓存4-5帧数据。首先解码的是i帧,解码线程从缓存对列a中读取i帧,调用解码器进行解码,将i帧从h264格式解码成nv12格式(或rgb格式),并且将解码后的数据存储在缓存队列b(图7中未示出)中进行缓存。然后解码的是p帧,解码线程从缓存对列a中读取p帧,调用解码器进行解码,因解码p帧需参考其前面的一个帧,则解码器从缓存队列b中获取上一帧(即i帧)的解码数据,对p帧解码后将解码数据也存在缓存队列b。接下来解码的是b帧,解码线程从缓存队列a中读取b帧,因解码b帧需要参考其前面的一个帧和其后面的一个帧,但其后面的一个帧(即p帧)还未解码,因此解码线程不对b帧进行解码,继续将b帧留在缓存队列a中,继而读取最后一个p帧进行解码。在解码最后一个p帧时,解码线程调用解码器,解码器从缓存队列b中获取上一帧(即第一个p帧)的解码数据,对最后一个p帧解码后将解码数据也存在缓存队列b。最后,解码线程再从缓存队列a读取b帧并调用解码器,解码器从缓存队列b中获取前一个p帧和后一个p帧的解码数据,对b帧解码后将解码数据存在缓存队列b。对于解码后缓存队列b中的帧序列,解码线程可调用显示驱动,以显示屏进行显示。
136.由此可以看出,智能电视接收到编码数据后需要先将编码数据缓存至缓存队列a中,并且,pc的编码器编码得到的帧序列为i、p、b、p,但智能电视的解码器解码得到的帧序列却为i、p、p、b,其中的b帧需要先缓存在缓存队列a中,等到最后一个p帧解码后才进行解码,这个缓存过程会导致帧的端到端时延增大,在b帧显示在智能电视的显示屏上时可能已过了需要显示的时间,这样容易出现视频卡顿等现象。
137.其中,因b帧是由pc的编码器编码所得到的,通常情况下,该编码器在初始化时会调用initencoder接口,设置hasbframeingop参数的值为1,则可编码得到b帧。针对上述相
关技术中的问题,本技术实施例中,pc的编码器在初始化时,除了设置编码图像的分辨率以及默认的h264编码格式之外,还可以调用initencoder接口,设置hasbframeingop参数的值为0,即设置编码过程不编码b帧,则本技术实施例中pc的编码器得到编码后的图像数据中只包括i帧或者p帧。因解码i帧时不需要参考其他帧,解码p帧只需参考前一帧,那么,智能电视的第二通信模块接收到编码数据后,可直接交由解码线程调用解码器进行解码即可,无需再进行将其缓存至缓存队列a中,大大减少了帧的端对端时延。
138.也即是说,如图10中的(b)图所示,pc的编码器编码得到i帧后,通过第一通信模块发送至智能电视的第二通信模块,第二通信模块随即交由解码线程调用解码器对该i帧进行解码,将解码后的数据存储至缓存队列b中。然后,pc的编码器又编码得到p帧,通过第一通信模块发送至智能电视的第二通信模块,智能电视的解码器从缓存队列b中获取上一帧(i帧)的解码数据,根据i帧的解码数据对p帧解码后,将p帧的解码数据也存在缓存队列b。接下来,pc的编码器又编码得到p帧时,执行和上一个p帧同样的动作。当需要将解码后的数据送显时,则显示驱动从缓存队列b中获取解码数据,送至显示屏进行显示。那么,本技术实施例的此过程,智能电视不需要等待解码b帧,减少了帧的端对端时延,并且也不需要接收到的编码数据缓存至缓存队列a中,即不再需要建立缓存队列a,由此也减少了缓存占用空间。
139.下面通过具体的实施例对本技术涉及的投屏方法进行详细说明。下面的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
140.图11为本技术实施例提供的投屏方法的一种流程示意图,该方法可以应用于如图7所示的pc上。如图11所示,本技术实施例提供的投屏方法,可以包括:
141.s101,接收用户输入的投屏操作。
142.其中,用户所输入的投屏操作可以为通过pc上的电脑管家app输入的,例如通过点击上述图3中的“立即连接”控件,在此我们将包含“立即连接”控件的界面称为第二界面。需要说明的是,本技术实施例以“电脑管家app”的命名为例示出,但其他具有相同或相似功能的app同样适用于本技术实施例,比如“电脑投屏app”、“设备互联app”等;另外,本技术实施例以“立即连接”的命名为例示出,但其他具有相同或相似功能的命名同样适用于本技术实施例,比如“一键投屏”、“开启投屏”等。
143.在一些实施例中,若pc上具有其他开启投屏功能的入口,也可通过其他入口输入投屏操作。比如,在windows设置界面,具有开启投屏的功能控件。
144.在一些实施例中,用户可以通过pc的鼠标点击上述“立即连接”控件,以输入投屏操作。在另一些实施例中,若pc的显示屏具有触摸功能,则用户可以触摸点击上述“立即连接”控件,以输入投屏操作。
145.在一些场景中,如果用户想要将手机的显示内容投屏至智能电视,则可以通过手机中的“无线投屏”或“镜像投屏”开关输入上述投屏操作。
146.s102,响应于上述投屏操作,扫描并展示可用的投屏设备。
147.其中,电脑管家app接收到用户输入的投屏操作后,第一发现连接模块可以调用蓝牙芯片的能力扫描附近可用的投屏设备。在本技术实施例中,当扫描到可用的投屏设备后,第一发现连接模块可以获取到投屏设备的互联网协议地址(internet protocol address,ip地址)、mac地址、通用唯一识别码(universally unique identifier,uuid)、设备标识以
及设备名称等信息。可选地,第一发现连接模块可以将投屏设备的上述信息发送至电脑管家app,以显示给用户查看。
148.在一些实施例中,鉴于pc显示屏显示尺寸的大小,电脑管家app可能无法将可用的投屏设备的上述信息都显示在可用设备列表上。因此,可用设备列表上可以仅显示可用的投屏设备的设备标识(如设备名称),例如上述图4所示,在此我们可以将该显示界面称为第一界面。若用户想要查看某一投屏设备的其它信息,则可以对设备名称进行长按操作或双击操作,电脑管家app接收到长按操作或双击操作后,可显示出该投屏设备的其他信息。
149.在一些实施例中,电脑管家app所显示的可用设备列表中,包括了pc附近已开启蓝牙功能的所有设备,比如智能电视、手机或穿戴设备。在另一些实施例中,电脑管家app在接收到已开启蓝牙功能的所有设备的信息后,可以筛选出支持投屏的设备以进行显示,比如穿戴设备不支持pc投屏,则电脑管家app在可用设备列表中不再显示穿戴设备。
150.s103,接收用户对可用的投屏设备中的智能电视的选中操作。
151.用户通过电脑管家app所显示的可用设备列表,可以确定自己想要将pc进行投屏的设备。例如上述图4所示,可用的投屏设备有设备1和设备2,用户想要将pc投屏至设备2(即智能电视),则可以点击该设备名称所在的区域。电脑管家app便可以接收到用户对该智能电视的选中操作。
152.在一些实施例中,用户还可以通过语音输入对智能电视的选择操作,例如,用户通过pc的麦克风语音输入“设备2”,麦克风接收到该声音信号后,可以转换为电信号并发送至电脑管家app。
153.s104,响应于上述选中操作,建立与智能电视的通信连接。
154.其中,电脑管家app接收到上述选中操作后,可以向第一发现连接模块发送消息,以指示第一发现连接模块调用第一蓝牙芯片与智能电视建立蓝牙连接,并通过建立的蓝牙通道向智能电视发送所建立的softap的ssid和密码,以建立与智能电视的wi-fi p2p连接。
155.s105,创建抓屏编码线程,通过抓屏编码线程获取pc的当前显示界面对应的图像数据,以及对该图像数据进行编码,得到的编码后的图像数据仅包括i帧或p帧。
156.s106,向智能电视发送编码后的图像数据,以使智能电视显示图像数据对应的图像。
157.待pc与智能电视建立了通信连接之后,pc便需要将显示屏上的图像数据发送至智能电视进行显示。正常情况下,pc显示屏上的当前显示界面是由gpu对图像数据进行绘制渲染后送显得到的,为了将此图像数据发送至智能电视,gpu可将图像数据存储在一个图像队列中。抓屏编码线程可从该图像队列中依次获取一帧图像数据,随即调用编码器对该帧图像数据进行编码,并由第一通信模块将编码数据发送至智能电视,智能电视的第二通信模块接收到编码数据后,调用解码器进行解码,进而由智能电视的显示屏显示图像数据对应的图像。
158.需要说明的是,本技术实施例中pc的编码器对图像数据进行编码时,只编码得到i帧和p帧,进而由第一通信模块将i帧和p帧发送至智能电视的第二通信模块。第二通信模块接收到编码数据后,即刻由解码线程调用解码器进行解码,无需对i帧和p帧进行缓存,以减少帧的端对端时延。
159.在一些实施例中,图像队列中可存储预设数量(如6帧)的图像数据,抓屏编码线程
从中获取了一帧图像数据后,可将该图像数据移出图像队列,并将新的图像数据存储至图像队列。抓屏编码线程对第一帧图像数据进行编码后,可以接着获取第二帧图像数据、第三帧图像数据进行编码,由此不断的执行获取数据并编码过程。
160.在一些场景中,若用户不再需要将pc投屏至智能电视,如图12所示,可在电脑管家app的界面上点击“断开连接”控件,电脑管家app接收到断开操作后,向第一发现连接模块发送断开消息,第一发现连接模块调用wi-fi芯片的能力断开与智能电视的wi-fi p2p连接。
161.在一些场景中,若用户不再需要使用镜像模式进行投屏,而是需要使用扩展模式进行投屏,则可以点击图13中的(a)图上的“扩展模式”控件,扩展模式下pc与智能电视的显示界面对比图可参见图13中的(b)图,即智能电视上显示了与pc显示界面不同的界面。
162.上述投屏方法中,pc在获取图像数据及对图像数据进行编码时,仅开启了一个抓屏编程线程,在抓屏编码线程获取一帧图像数据后,即刻调用编码器对该图像数据进行编码,并发送至智能电视进行解码显示。那么,在抓屏编码线程工作时,抓屏过程和编码过程为串行执行,会分别独占gpu资源,由此,抓屏过程和编码过程不会进入因抢占gpu资源而相互等待的困境,可以减少投屏过程的时延。同时,pc的编码器编码得到i帧和p帧,使智能电视直接进行解码即可,无需再进行缓存,也大大减少了帧的端对端时延。
163.上文详细介绍了本技术实施例提供的投屏方法的示例。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
164.本技术实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分为各个功能模块,例如检测单元、处理单元、显示单元等,也可以将两个或两个以上的功能集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
165.需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
166.本实施例提供的电子设备,用于执行上述投屏方法,因此可以达到与上述实现方法相同的效果。
167.在采用集成的单元的情况下,电子设备还可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对电子设备的动作进行控制管理。存储模块可以用于支持电子设备执行存储程序代码和数据等。通信模块,可以用于支持电子设备与其他设备的通信。
168.其中,处理模块可以是处理器或控制器。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,dsp)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、wi-fi
芯片等与其他电子设备交互的设备。
169.在一个实施例中,当处理模块为处理器,存储模块为存储器时,本实施例所涉及的电子设备可以为具有图1所示结构的设备。
170.本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得处理器执行上述任一实施例的投屏方法。
171.本技术实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的投屏方法。
172.另外,本技术的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的投屏方法。
173.其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
174.通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
175.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
176.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
177.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
178.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
179.以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何
熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1