一种直播方法及装置与流程

文档序号:25614166发布日期:2021-06-25 15:42阅读:517来源:国知局
一种直播方法及装置与流程

1.本申请实施例涉及数据处理技术,尤其涉及一种直播方法及装置。


背景技术:

2.随着网络直播的发展,直播开始走进办公领域,在办公领域的直播,幻灯片(又称为ppt)是最常见的直播内容之一。一般幻灯片可以分为三种模式,分别对应三个不同的窗口画面。第一种为普通窗口模式,主要用于编辑、预览等操作,所有对ppt的修改、美化等操作,都处于这个模式中;第二种为放映模式,入口在普通窗口模式中,点击后即可全屏显示ppt,点击自动切换下一页,期间可以使用画笔等辅助演示功能,放映模式的窗口为主播在直播时主要想展示演示的窗口;第三种为演讲者模式,在多个屏幕下可以启动该模式,用于向演讲者展示备注内容,有提词、节奏控制等作用,一般不对外展示。
3.在相关技术中,直播软件在直播时都只对普通窗口模式进行图像捕获,在演讲者进行放映时并不会进行自动切换捕获的窗口,而这时屏幕进入了全屏模式,演讲者通常不会留意到直播的窗口依旧是普通窗口模式,而不是所需要的全屏模式的窗口,从而造成使用上的不便。


技术实现要素:

4.本申请提供一种直播方法及装置,以解决现有技术中窗口捕获目标进程进行直播时,捕获画面不能自动跟随目标进程的画面进行切换的问题。
5.第一方面,本申请实施例提供了一种直播方法,所述方法应用于直播应用程序中,所述方法包括:
6.当检测到所述直播应用程序的窗口捕获功能被触发时,确定需要进行窗口捕获的目标进程;
7.对所述目标进程进行窗口捕获,并将捕获到的窗口图像加入直播流中进行推送;
8.当监听到所述目标进程从第一窗口模式切换至第二窗口模式时,进行窗口捕获的切换,以捕获所述第二窗口模式下的窗口图像。
9.第二方面,本申请实施例还提供了一种直播装置,所述装置应用于直播应用程序中,所述装置包括:
10.目标进程确定模块,用于当检测到所述直播应用程序的窗口捕获功能被触发时,确定需要进行窗口捕获的目标进程;
11.窗口捕获模块,用于对所述目标进程进行窗口捕获,并将捕获到的窗口图像加入直播流中进行推送;
12.窗口捕获切换模块,用于当监听到所述目标进程从第一窗口模式切换至第二窗口模式时,进行窗口捕获的切换,以捕获所述第二窗口模式下的窗口图像。
13.第三方面,本申请实施例还提供了一种电子设备,所述电子设备包括:
14.一个或多个处理器;
15.存储装置,用于存储一个或多个程序,
16.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的方法。
17.第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的方法。
18.本申请所提供的技术方案,具有如下有益效果:
19.在本实施例中,当直播应用程序检测到其窗口捕获功能被触发时,可以确定需要进行窗口捕获的目标进程,然后对目标进程进行窗口捕获,并将捕获到的窗口图像加入直播流中进行推送,同时,直播应用程序还可以监听目标进程的窗口显示模式的变化,当监听到目标进程从第一窗口模式切换至第二窗口模式时,进行窗口捕获的切换,以捕获第二窗口模式下的窗口图像,从而根据目标进程的窗口模式的变化及时切换捕获的图像,从而更加完善了在办公领域直播的功能,提升了用户的使用体验。
附图说明
20.图1是本申请实施例一提供的一种直播方法实施例的流程图;
21.图2是本申请实施例一提供的编辑窗口模式下的直播界面示意图;
22.图3是本申请实施例一提供的放映窗口模式下的直播界面示意图;
23.图4是本申请实施例二提供的一种直播方法实施例的流程图;
24.图5是本申请实施例二提供的目标进程伪代码示意图;
25.图6是本申请实施例二提供的wineventproc类型的函数签名示意图;
26.图7是本申请实施例二提供的捕获窗口切换时序图;
27.图8是本申请实施例三提供的一种直播装置实施例的结构框图;
28.图9是本申请实施例四提供的一种电子设备的结构示意图。
具体实施方式
29.下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
30.实施例一
31.图1为本申请实施例一提供的一种直播方法实施例的流程图,本实施例可以由直播应用程序执行,具体可以包括如下步骤:
32.步骤110,当检测到直播应用程序的窗口捕获功能被触发时,确定需要进行窗口捕获的目标进程。
33.在该实施例中,直播应用程序中可以包括窗口捕获功能。窗口捕获功能所指的窗口捕获,是指在终端上进行视频直播时,选择终端上开启的指定软件的窗口进行捕获,获取被捕获窗口的图像数据并把该图像数据合成到视频画面中发送出去。
34.在一种实现中,直播应用程序的界面上可以有窗口捕获按钮,当用户点击该窗口捕获按钮时就触发窗口捕获功能。当直播应用程序检测到其窗口捕获功能被触发时,则进一步确定用户指定的需要进行窗口捕获的目标进程。
35.在一种例子中,用户可以用户如下方式指定需要进行窗口捕获的目标进程:当直播应用程序检测到窗口捕获功能被触发时,可以获取当前运行的且在桌面显示的进程的进程信息(如进程名称等),然后将获取的进程信息组织成进程列表显示给用户。用户可以在进程列表中选择至少一个进程作为目标进程。
36.步骤120,对所述目标进程进行窗口捕获,并将捕获到的窗口图像加入直播流中进行推送。
37.在该步骤中,当直播应用程序确定了需要进行窗口捕获的目标进程以后,则开始对该目标进程进行窗口捕获,获得该目标进程的窗口图像,然后将该窗口图像加入直播流中进行推送。同时,在该直播应用程序的客户端侧,可以将该捕获的窗口图像显示在该客户端的直播窗口中。例如,假设应用场景为使用幻灯片进行直播授课的场景,若目标进程为幻灯片(又称ppt)进程,对当前开启的幻灯片窗口进行捕获得到窗口图像后,可以将该幻灯片窗口的窗口图像显示在直播app的直播界面中,同时在直播界面中还可以显示进行直播的主播(如主讲人)的窗口,如图2所示的直播界面,可以包括幻灯片窗口图像10以及主讲人窗口20。
38.步骤130,当监听到所述目标进程从第一窗口模式切换至第二窗口模式时,进行窗口捕获的切换,以捕获所述第二窗口模式下的窗口图像。
39.在该实施例中,目标进程可以包括第一窗口模式和第二窗口模式等至少两种显示模式(或称窗口模式)。示例性地,第一窗口模式可以为非全屏的编辑窗口模式,第二窗口模式可以为全屏窗口模式。例如,若目标进程为幻灯片进程,第一窗口模式可以为普通的非全屏窗口模式,该模式下,可以对幻灯片内容进行编辑、预览等,如图2的窗口图像10所示的具有工具栏的窗口模式。第二窗口模式可以为幻灯片的放映模式,即全屏显示ppt的模式。在其他实施例中,第二窗口模式还可以为幻灯片的演讲者模式,用于向演讲者展示备注内容、提词、节奏控制等作用,但由于演讲者模式一般不对外展示,所以一般情况下第二窗口模式为幻灯片的放映模式,当有需要时,也可以将演讲者模式作为第二窗口模式。
40.在该实施例中,直播应用程序在对目标进程进行捕获的过程中,还可以对目标进程进行监听,以及时获知目标进行的显示模式的变化。当直播应用程序监听到目标进程从第一窗口模式切换至第二窗口模式时,则可以进行窗口捕获的及时切换,以捕获第二窗口模式下的窗口图像,并将第二窗口模式下的窗口图像加入直播流中进行推送,以及,将第二窗口模式下的窗口图像显示在当前客户端的直播界面中。例如,如图2所示的直播界面,当幻灯片进程从普通的编辑窗口模式切换为全屏的放映模式时,直播app可以及时监听到该切换,然后捕获放映模式下的幻灯片的窗口图像,并将该放映模式下的幻灯片的窗口图像显示在直播界面中,如图3的窗口图像30所示,从而实现窗口图像因被监听进程的显示模式的变化而变化。其中,窗口图像30在直播界面中也可以全屏显示,还可以调整主讲人窗口20的的层级关系,例如,调整其一直显示在上层。
41.在实现时,直播应用程序对目标进程进行监听的方法,可以包括但不限于如下方式:利用操作系统的消息机制来在目标进程中设置消息钩子来对目标进程进行监听,监听目标进程的所有创建、销毁、鼠标响应等行为,从而筛选出切换至第二窗口模式的事件;或者,进行系统窗口的轮询,每隔一定时间便去扫描全局的可视窗口,一旦发现有一个切换至第二窗口模式的窗口,便可认为切换至第二窗口模式。
42.在本实施例中,当直播应用程序检测到其窗口捕获功能被触发时,可以确定需要进行窗口捕获的目标进程,然后对目标进程进行窗口捕获,并将捕获到的窗口图像加入直播流中进行推送,同时,直播应用程序还可以监听目标进程的窗口显示模式的变化,当监听到目标进程从第一窗口模式切换至第二窗口模式时,进行窗口捕获的切换,以捕获第二窗口模式下的窗口图像,从而根据目标进程的窗口模式的变化及时切换捕获的图像,从而更加完善了在办公领域直播的功能,提升了用户的使用体验。
43.实施例二
44.图4为本申请实施例二提供的一种直播方法实施例的流程图,在本实施例中,直播应用程序可以包括主线程和监听线程,其中,监听线程主要负责对目标进程的显示模式的变化进行监听和判断,主线程主要负责与直播相关的内容处理和显示。本实施例具体可以包括如下步骤:
45.步骤410,当检测到直播应用程序的窗口捕获功能被触发时,确定需要进行窗口捕获的目标进程。
46.在该步骤中,当直播应用程序的主线程检测到其窗口捕获按钮被点击时,则判定窗口捕获功能被触发,然后直播应用程序可以确定用户指定的需要进行窗口捕获的目标进程。
47.在一种实施方式中,上述确定需要进行窗口捕获的目标进程的步骤,进一步可以包括如下步骤:
48.步骤410

1,确定用户指定的目标进程的进程名称。
49.在该步骤中,当直播应用程序的主线程检测到窗口捕获功能被触发时,可以获取当前运行的且在桌面显示的进程的进程名称,然后将获取的进程名称组织成进程列表显示给用户。用户可以在进程列表中选择至少一个进程作为目标进程。主线程可以获得用户选定的目标进程的进程名称。
50.步骤410

2,根据所述进程名称调用系统提供的接口获得对应的第一窗口句柄。
51.在该步骤中,当主线程获得目标进程的进程名称以后,可以调用操作系统提供的接口api来获取与该进程名称对应的第一窗口句柄。拥有第一窗口句柄以后,主线程可以根据该第一窗口句柄查询与目标进程相关的信息。
52.步骤410

3,查询与所述第一窗口句柄对应的类名。
53.在一种实现中,主线程获得目标进程的第一窗口句柄以后,可以调用getclassname去获取该第一窗口句柄对应的类名。
54.步骤410

4,若所述第一窗口句柄对应的类名为与目标进程相关的类名,则判定为检测到目标进程。
55.在该步骤中,当根据第一窗口句柄获得对应的类名以后,主线程可以判断该类名是不是与目标进程相关的类名,如果是,则主线程就可以判定为检测到目标进程。
56.例如,若目标进程为微软幻灯片进程,微软幻灯片经过多年的发展,形成了很多个流行的版本,如03、07、10、13、16、19等版本,在这些版本中,幻灯片的放映模式或者演讲者模式的类名都是screenclass;普通的非全屏窗口模式(或称为普通窗口模式)的类名都是pp*frameclass,其中,“*”表示版本号对应的版本代码,比如,对于03版本,它就是“pp11frameclass”,对于07版本,它就是“pp12frameclass”,对于13及以后的版本,则改为

pptframeclass”。因此,微软幻灯片进程相关的类名可以包括screenclass或pp*frameclass,当当根据窗口句柄获得对应的类名以后,可以判断该类名是不是screenclass或pp*frameclass,若不是上述两者,则判定当前判断的进程不是目标进程;否则,若窗口句柄对应的类名是上述两者之一,则判定当前判断的进程是目标进程。该判断过程的对应的伪代码可以参考图5所示,在图5中,target.classname为根据窗口句柄获得的对应的类名。
57.步骤420,在所述目标进程中挂入指定消息钩子。
58.在一种实现中,当检测到目标进程以后,主线程可以给监听线程发送监听通知,该监听通知可以包括目标进程的相关信息,如目标进程的进程名称、类名等,以通知监听线程对目标进程进行监听。
59.监听线程收到该监听通知以后,可以通过操作系统的消息机制,调用相关的系统api来在目标进程中挂入指定消息钩子并指定回调函数,操作系统记录该指定消息钩子的回调函数。
60.示例性地,指定消息钩子可以包括全局钩子(如windows操作系统的setwindowshook),也可以包括轻量级的消息钩子(如windows操作系统的setwineventhook)。其中,全局钩子可以监听目标进程的所有创建、销毁、鼠标响应等行为,但全局钩子会影响到系统的运行稳定性,稍微不注意便可能导致宕机,而且各大安全软件对此系统api有严密的监控,很容易被认为是病毒软件从而被删除,影响用户观感。因此,本实施例优选可以在目标进程中注入轻量级的消息钩子,设置全局钩子的方法允许监听者进行消息的处理,监听者可以中断消息的继续传递,而轻量级的消息钩子能指定具体的线程,对线程的少量基本消息进行监听,而不用插手消息的处理,即不能中断消息继续传递。
61.步骤430,对所述目标进程进行窗口捕获,并将捕获到的窗口图像加入直播流中进行推送。
62.当检测到目标进程以后,主线程可以对目标进程进行窗口捕获,从而得到目标进程实时显示的窗口的窗口图像,然后将实时捕获到的窗口图像加入直播流中进行推送。例如,若目标进程为幻灯片进程,当前幻灯片进行在桌面显示的窗口模式为非全屏的普通窗口模式,则主线程可以捕获该普通窗口模式对应的窗口图像。
63.在一种实现中,主线程可以将捕获到的窗口图像和摄像头采集的主播的图像进行合成,生成合成图像,然后将合成图像加入直播流中进行推送,则观众客户端在接收到推流后,可以直接对直播流进行解码,得到合成图像展示在观众客户端中。
64.步骤440,通过所述指定消息钩子监听所述目标进程的目标窗口创建消息。
65.在该步骤中,当用户在目标进程中点击切换按钮时,则目标进程可以创建新的模式的窗口,并产生窗口创建消息。例如,在幻灯片进程的普通窗口模式下,当用户点击放映按钮,则幻灯片进程可以创建全屏窗口,并产生窗口创建消息。操作系统捕获到该窗口创建消息,通过回调函数将该窗口创建消息发送给直播应用程序的监听线程,监听线程可以进一步判断该窗口创建消息是否为目标窗口创建消息。
66.在一种实施方式中,步骤440进一步可以包括如下步骤:
67.步骤440

1,通过所述指定消息钩子监听所述目标进程的对象创建消息。
68.在实际中,目标进程在运行过程中有很多操作都涉及到对象创建,例如窗口创建时可以触发对象创建、菜单创建时也可以触发对象创建、标题创建时也可以触发对象创建,
等等。指定消息钩子可以监听目标进程的所有对象创建消息,并通过回调函数将监听到的所有对象创建消息回调至监听线程中。
69.步骤440

2,判断所述对象创建消息是否为窗口创建消息。
70.在该步骤中,监听线程收到系统回调的对象创建消息以后,会进一步判断该对象创建消息是否为窗口创建消息。例如,对于幻灯片进程,其放映模式是有一个窗口提供的,因此,监听线程可以首先过滤掉非窗口创建消息,保留由窗口创建产生的窗口创建消息event_object_create。
71.步骤440

3,若所述对象创建消息为窗口创建消息,判断所述窗口创建消息是否由窗口对象创建;若所述窗口创建消息由窗口对象创建,则判定为监听到目标窗口创建消息。
72.如果当前的对象创建消息为窗口创建消息,则监听线程需要进行进一步的判断,判断该窗口创建消息是否由窗口对象创建。具体的,由于创建消息可能由对象本身创建产生,也可以由该对象的子对象创建产生。但本实施例只关注窗口对象本身创建产生的创建消息,因为窗口对象的子对象创建产生的消息,如创建弹窗、工具条等,是基于窗口对象创建后的动作,因此,可以将窗口对象的子对象创建产生的消息过滤掉。
73.如果监听线程判定当前窗口创建消息由窗口对象创建,则判定为监听到目标窗口创建消息。
74.步骤450,判断所述目标窗口创建消息所对应的窗口创建,是否为所述第二窗口模式对应的窗口,若是,则执行步骤460。
75.在该步骤中,当监听线程监听到目标窗口创建消息以后,则可以进一步进行更细的窗口属性筛查,来确定用户本次操作触发的窗口创建,是否为第二窗口模式对应的窗口,如果为第二窗口模式对应的窗口,则执行步骤460。
76.在一种实施方式中,步骤450进一步可以包括如下步骤:
77.步骤450

1,获取所述目标窗口创建消息的第二窗口句柄。
78.在该步骤中,目标窗口创建消息中可以包括第二窗口句柄,可以从目标窗口创建消息中拿到该第二窗口句柄。
79.在一种实现中,若指定消息钩子为setwineventhook,可以根据setwineventhook函数的签名,注册一个类型为wineventproc类型的函数,该函数的完整签名可以如图6所示。从图6可以看出,当消息钩子捕获到目标窗口创建消息以后,可以拿到该消息的第二窗口句柄hwnd,根据这个第二窗口句柄,可以查询很多相关的消息。
80.步骤450

2,根据所述第二窗口句柄查询对应的窗口类名以及窗口风格。
81.监听线程获得第二窗口句柄以后,可以调用getclassname去获取该第二窗口句柄对应的类名。
82.步骤450

3,判断所述窗口类名是否为指定窗口类名。
83.其中,指定窗口类名为与第二窗口模式相关的类名。例如,若第一窗口模式为幻灯片的非全屏的普通窗口模式;所述第二窗口模式为全屏窗口模式(或称为放映模式)。如步骤410

4所述,普通窗口模式的类名一般是pp*frameclass,放映窗口模式的类名一般是screenclass。当获得第二窗口句柄对应的窗口类名以后,如果该类名为pp*frameclass,则可以判定目前的窗口创建为普通窗口;如果该类名为screenclass,则可以初步判定目前的窗口创建为放映模式的窗口。
84.步骤450

4,若所述窗口类名为指定窗口类名,则判断所述窗口风格为具有最大化及最小化的窗口风格,若所述窗口风格不为具有最大化及最小化的窗口风格,则判定所述目标窗口创建消息所对应的窗口创建为所述第二窗口模式对应的窗口。
85.在上述步骤450

3中之所以说是初步判定目前的窗口创建为放映模式的窗口,是因为演讲者模式的窗口类名也是screenclass,因此,需要结合窗口风格来进一步判断。
86.例如,对于幻灯片进程而言,放映窗口是不能进行最小化及最大化,而演讲者模式窗口有一个最大化及最小化的属性风格,根据这点,可以判断当前窗口为放映模式的窗口还是演讲者窗口。如果根据第二窗口句柄获得的窗口风格不为具有最大化及最小化的窗口风格,则可以判定目标窗口创建消息所对应的窗口创建为放映模式对应的窗口。
87.步骤460,判定所述目标进程从第一窗口模式切换至第二窗口模式,进行窗口捕获的切换,以捕获所述第二窗口模式下的窗口图像。
88.在该步骤中,当监听线程判定目标窗口创建消息所对应的窗口创建,为第二窗口模式对应的窗口,则可以向主线程发送切换通知。主线程收到切换通知以后,则可以判定目标进程从第一窗口模式切换至第二窗口模式,因而可以及时进行窗口捕获的切换,以捕获到第二窗口模式下的窗口图像,并在客户端的直播界面中及时更新目标进程的画面为第二窗口模式下的窗口图像,同时,将该第二窗口模式下的窗口图像加入到直播流中进行推流。
89.步骤470,通过指定消息钩子监听所述目标进程的目标窗口销毁消息。
90.在该实施例中,指定消息钩子还可以监听目标进程的目标窗口销毁消息。其过程与监听目标窗口创建消息类似。具体的,监听线程可以通过指定消息钩子监听目标进程的所有对象销毁消息,然后判断各对象销毁消息是否为窗口销毁消息,如果为窗口销毁消息且该窗口销毁消息由窗口对象而非窗口子对象产生,则可以判定监听到目标进程的目标窗口销毁消息。
91.步骤480,判断所述目标窗口销毁消息所对应的窗口销毁,是否为所述第二窗口模式对应的窗口,若是,则执行步骤490。
92.当监听线程监听到目标窗口销毁消息以后,则可以进一步进行更细的窗口属性筛查,来确定用户本次操作触发的窗口销毁,是否为第二窗口模式对应的窗口,如果为第二窗口模式对应的窗口,则执行步骤490。
93.在一种实施方式中,步骤480的判断过程可以如下:获取所述目标窗口销毁消息的第三窗口句柄,根据该第三窗口句柄查询对应的窗口类名以及窗口风格,如果该窗口类名为指定窗口类名且窗口风格不为具有最大化及最小化的窗口风格,则可以判定该目标窗口销毁消息所对应的窗口销毁为第二窗口模式对应的窗口。
94.步骤490,判定所述目标进程从第二窗口模式切换回第一窗口模式,进行窗口捕获的切换,以捕获所述第一窗口模式下的窗口图像。
95.在该步骤中,当监听线程判定目标窗口销毁消息所对应的窗口创建,为第二窗口模式对应的窗口,则可以向主线程发送销毁切换通知。主线程收到销毁切换通知以后,则可以判定目标进程从第二窗口模式切换至第一窗口模式,因而可以及时进行窗口捕获的切换,以捕获到第一窗口模式下的窗口图像,并在客户端的直播界面中及时更新目标进程的画面为第一窗口模式下的窗口图像,同时,将该第一窗口模式下的窗口图像加入到直播流中进行推流。
96.为了使本领域技术人员能够更好地理解本实施例,以下通过一个具体实例对本实施例进行示例性说明,本实例的应用场景为在终端的操作系统上实现窗口捕获ppt进程进行直播时,捕获画面自动跟随ppt进行全屏幻灯片放映切换。上述的应用场景的实现过程,从大方向可以分成两步操作:第一步是检测ppt的“动作”,一旦能感知到它进行全屏放映就发出通知;第二步就是接收通知的例程作出响应,把窗口捕获区域从普通的编辑窗口切换到全屏放映窗口上,从而实现推流内容自动跟随幻灯片程序状态切换。
97.需要说明的是,本实施例对具体的操作系统不作限定,可以包括windows操作系统、mac操作系统、安卓操作系统等,本实例以windows为例进行示例性说明,详细的过程参考图7的时序图所示,包括如下过程:
98.1、用户打开ppt主线程;
99.2、用户开启直播应用程序,并启动窗口捕获功能,指定需要进行窗口捕获的目标进程为ppt主线程;
100.3、直播应用程序的主线程检测ppt进程;
101.4、ppt主线程创建编辑窗口(即普通模式窗口),并显示编辑窗口;
102.5、主线程在检测到ppt进程后,进行窗口图像捕获,以获得编辑窗口的窗口图像,并将该窗口图像显示在客户端的直播界面中(如图2所示),以及,将该窗口图像加入直播流中进行推流;
103.6、主线程在检测到ppt进程后,通知直播应用程序的监听线程对该ppt进程进行监听;
104.7、监听线程引用windows系统机制,对ppt进程挂入轻量级消息钩子;
105.8、windows系统记录该消息钩子的回调;
106.9、用户在ppt主线程中点击放映按钮,则ppt主线程创建全屏演讲窗口(即放映模式窗口),产生对应的窗口创建消息发送至操作系统;
107.10、操作系统通过消息钩子监听到该窗口创建消息,通过回调函数将该窗口创建消息发送至监听线程;
108.11、监听线程对该窗口创建消息进行消息过滤,判断该窗口创建消息所对应的窗口创建,是否为放映模式对应的窗口(即上述的步骤440和450的过程),若是,则监听线程生成切换通知发送至主线程;
109.12、主线程根据该切换通知,对ppt主线程的全屏窗口进行窗口捕获,得到全屏窗口的窗口图像,并将该全屏窗口的窗口图像显示在客户端的直播界面中(如图3所示),以及,将该窗口图像加入直播流中进行推流。
110.在本实施例中,提出了一种在直播应用程序中窗口捕获自动跟随目标进程的窗口切换方案,当确定需要进行窗口捕获的目标进程以后,在目标进程中挂入指定消息钩子,并通过该指定消息钩子监听目标进程的目标窗口创建消息,如果该目标窗口创建消息所对应的窗口创建为第二窗口模式对应的窗口,则直播应用程序可以判定为检测到目标进程从第一窗口模式切换至第二窗口模式,并及时进行窗口捕获的切换,以捕获第二窗口模式下的窗口图像,实现窗口捕获目标进程进行直播时,捕获画面自动跟随目标进程的窗口模式变化而切换,完善了直播应用程序的窗口捕获功能。
111.实施例三
112.图8为本申请实施例三提供的一种直播装置实施例的结构框图,所述装置可以应用于直播应用程序中,可以包括如下模块:
113.目标进程确定模块810,用于当检测到所述直播应用程序的窗口捕获功能被触发时,确定需要进行窗口捕获的目标进程;
114.窗口捕获模块820,用于对所述目标进程进行窗口捕获,并将捕获到的窗口图像加入直播流中进行推送;
115.第一窗口捕获切换模块830,用于当监听到所述目标进程从第一窗口模式切换至第二窗口模式时,进行窗口捕获的切换,以捕获所述第二窗口模式下的窗口图像。
116.在一种实施方式中,所述第一窗口模式为非全屏的编辑窗口模式;所述第二窗口模式为全屏窗口模式。
117.在一种实施方式中,所述装置还包括:
118.挂钩模块,用于在所述确定需要进行窗口捕获的目标进程之后,在所述目标进程中挂入指定消息钩子。
119.在一种实施方式中,所述装置还包括:
120.目标窗口创建消息监听模块,用于通过所述指定消息钩子监听所述目标进程的目标窗口创建消息;
121.第一窗口判断模块,用于判断所述目标窗口创建消息所对应的窗口创建,是否为所述第二窗口模式对应的窗口;若是,则调用窗口切换模块;若否,则调用窗口捕获模块820;
122.窗口切换模块,用于判定所述目标进程从第一窗口模式切换至第二窗口模式。
123.在一种实施方式中,所述目标窗口创建消息监听模块具体用于:
124.通过所述指定消息钩子监听所述目标进程的对象创建消息;
125.判断所述对象创建消息是否为窗口创建消息;
126.若所述对象创建消息为窗口创建消息,判断所述窗口创建消息是否由窗口对象创建;
127.若所述窗口创建消息由窗口对象创建,则判定为监听到目标窗口创建消息。
128.在一种实施方式中,所述第一窗口判断模块具体用于:
129.获取所述目标窗口创建消息的第二窗口句柄;
130.根据所述第二窗口句柄查询对应的窗口类名以及窗口风格;
131.判断所述窗口类名是否为指定窗口类名;
132.若所述窗口类名为指定窗口类名,则判断所述窗口风格为具有最大化及最小化的窗口风格;
133.若所述窗口风格不为具有最大化及最小化的窗口风格,则判定所述目标窗口创建消息所对应的窗口创建为所述第二窗口模式对应的窗口。
134.在一种实施方式中,所述装置还包括:
135.第二窗口捕获切换模块,用于当监听到所述目标进程从第二窗口模式切换回第一窗口模式时,进行窗口捕获的切换,以捕获所述第一窗口模式下的窗口图像。
136.在一种实施方式中,所述装置还包括:
137.目标窗口销毁消息监听模块,用于通过指定消息钩子监听所述目标进程的目标窗
口销毁消息;
138.第二窗口判断模块,用于判断所述目标窗口销毁消息所对应的窗口销毁,是否为所述第二窗口模式对应的窗口;若是,则判定所述目标进程从第二窗口模式切换回第一窗口模式。
139.在一种实施方式中,所述目标进程确定模块810具体用于:
140.确定用户指定的目标进程的进程名称;
141.根据所述进程名称调用系统提供的接口获得对应的第一窗口句柄;
142.查询与所述第一窗口句柄对应的类名;
143.若所述第一窗口句柄对应的类名为与目标进程相关的类名,则判定为检测到目标进程。
144.本申请实施例所提供的一种直播装置可执行本申请实施例一或实施例二所提供的直播方法,具备执行方法相应的功能模块和有益效果。
145.实施例四
146.图9为本申请实施例四提供的一种电子设备的结构示意图,其中,该电子设备可以为pc计算设备,或者为平板电脑或者其他的移动设备,本实施例对此不作限制。如图9所示,该电子设备包括处理器910、存储器920、输入装置930和输出装置940;电子设备中处理器910的数量可以是一个或多个,图9中以一个处理器910为例;电子设备中的处理器910、存储器920、输入装置930和输出装置940可以通过总线或其他方式连接,图9中以通过总线连接为例。
147.存储器920作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的上述实施例对应的程序指令/模块。处理器910通过运行存储在存储器920中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的方法实施例中提到的方法。
148.存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器920可进一步包括相对于处理器910远程设置的存储器,这些远程存储器可以通过网络连接至设备/终端/服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
149.输入装置930可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置940可包括显示屏等显示设备。
150.实施例五
151.本申请实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行上述方法实施例中的方法。
152.当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本申请任意实施例所提供的方法中的相关操作。
153.通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请
可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
154.值得注意的是,上述装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
155.注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1