发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的呈现游戏直播的方法、装置、系统、存储介质及设备。
本发明实施例提供一种呈现游戏直播的方法,应用于主播端,所述方法包括:
在利用直播软件在目标直播间内对目标游戏进行直播的过程中,所述直播软件向所述目标游戏的游戏进程中注入预设配置程序;
所述直播软件利用所述预设配置程序从所述游戏进程中获取用于表征所述目标游戏当前进展情况的游戏进展数据;
将所述游戏进展数据发送给与所述直播软件对应的直播服务器。
优选的,所述游戏进展数据包括游戏当前存活人数和/或游戏距离结束的时间。
优选的,在所述直播软件利用所述预设配置程序从所述游戏进程中,获取用于表征所述目标游戏当前进展情况的游戏进展数据之前,所述方法还包括:
在所述直播软件中创建命名管道;
在所述游戏进程中所述预设配置程序通过所述命名管道的名称与所述直播软件建立通信连接,以使所述直播软件和所述游戏进程能够通过所述命名管道进行通信。
本发明实施例提供一种呈现游戏直播的方法,应用于直播服务器端,所述方法包括:
接收主播端发送的用于表征所述目标游戏当前进展情况的游戏进展数据;
将所述游戏进展数据添加到与所述主播端对应的目标直播间的直播间封面中;
将添加有所述游戏进展数据的直播间封面推送给观众端。
本发明实施例提供一种呈现游戏直播的装置,应用于主播端,所述装置包括:
注入模块,用于在利用直播软件在目标直播间内对目标游戏进行直播的过程中,所述直播软件向所述目标游戏的游戏进程中注入预设配置程序;
获取模块,用于所述直播软件利用所述预设配置程序从所述游戏进程中,获取用于表征所述目标游戏当前进展情况的游戏进展数据;
发送模块,用于将所述游戏进展数据发送给与所述直播软件对应的直播服务器。
本发明实施例提供一种呈现游戏直播的装置,应用于直播服务器端,所述装置包括:
接收模块,用于接收主播端发送的用于表征所述目标游戏当前进展情况的游戏进展数据;
添加模块,用于将所述游戏进展数据添加到与所述主播端对应的目标直播间的直播间封面中;
推送模块,用于将添加有所述游戏进展数据的直播间封面推送给观众端。
本发明实施例提供一种呈现游戏直播的系统,所述系统包括主播端、直播服务器端和观众端;
所述主播端,用于在利用直播软件在目标直播间内对目标游戏进行直播的过程中,所述直播软件向所述目标游戏的游戏进程中注入预设配置程序;所述直播软件利用所述预设配置程序从所述游戏进程中,获取用于表征所述目标游戏当前进展情况的游戏进展数据;将所述游戏进展数据发送给与所述直播软件对应的直播服务器;
所述直播服务器端,用于接收所述主播端发送的所述游戏进展数据;将所述游戏进展数据添加到与所述主播端对应的目标直播间的直播间封面中;将添加有所述游戏进展数据的直播间封面推送给观众端;
所述观众端,用于接收并向用户呈现添加有所述游戏进展数据的直播间封面。
优选的,所述游戏进展数据包括游戏当前存活人数和/或游戏距离结束的时间。
本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前述实施例所述的方法步骤。
本发明实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如前述实施例所述的方法步骤。
本发明实施例中的一个或多个技术方案,至少具有如下技术效果或优点:
本发明对于主播端,通过利用直播软件向目标游戏的游戏进程中注入预设配置程序,直播软件再利用预设配置程序从游戏进程中获取用于表征目标游戏当前进展情况的游戏进展数据,最后主播端将游戏进展数据发送给与直播软件对应的直播服务器,而直播服务器端接收主播端发送的用于表征目标游戏当前进展情况的游戏进展数据,并将游戏进展数据添加到与主播端对应的目标直播间的直播间封面中,最后将添加有游戏进展数据的直播间封面推送给观众端,从而使得观众端的用户能够直观地了解到游戏进展情况,能够针对性对直播间进行选择。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本申请的第一实施例提供一种呈现游戏直播的方法,如图1所示,应用于主播端,主播端的电子设备为该呈现游戏直播的方法的执行主体,所述方法包括:
步骤101:在利用直播软件在目标直播间内对目标游戏进行直播的过程中,直播软件向目标游戏的游戏进程中注入预设配置程序。
步骤102:直播软件利用预设配置程序从游戏进程中,获取用于表征目标游戏当前进展情况的游戏进展数据。
步骤103:将游戏进展数据发送给与直播软件对应的直播服务器。
具体来讲,在主播端,主播利用直播软件对目标游戏进行直播,且当前直播所在的直播间为目标直播间。在主播直播的过程中,主播端的直播软件向目标游戏的游戏进程中注入预设配置程序,本申请中的预设配置程序为用于获取游戏进展数据的程序。本申请中的游戏进展数据包括游戏当前存活人数和/或游戏距离结束的时间。
进一步,对于如何将预设配置程序注入到游戏进程,在本申请中,可以在直播软件中编写将预设配置程序注入到游戏进程中的程序,本申请通过调用Windows系统提供的API函数来将预设配置程序注入到游戏进程中。具体地,通过Windows系统API函数CreateRemoteThread在游戏进程中创建一个远程线程,该远程线程为主播端的直播软件进程在游戏进程中创建的线程,通过该远程线程去调用系统函数LoadLibrary来加载需要注入的预设配置程序,其具体实现过程如下:
首先,通过WindowsAPI函数VirtualAllocEx函数在游戏进程的内存空间中分配内存,接着,通过WindowsAPI函数WriteProcessMemory来将预设配置程序的磁盘路径写入到已经分配的内存中,然后,调用WindowsAPI函数CreateRemoteThread函数在游戏进程中创建一个线程,线程的执行逻辑就是调用WindowsAPI函数LoadLibrary来加载预设配置程序的磁盘路径,通过上述过程实现了在游戏进程中开启一个线程,通过该线程来加载预设配置程序,从而实现了预设配置程序的注入。
进一步,在完成预设配置程序的注入之后,需要实现直播软件和游戏进程之间的通信,具体地,本申请通过命名管道(Named Pipes)实现直播软件和游戏进程之间的通信,命名管道通过网络来完成进程间的通信,其能够屏蔽底层的网络协议细节,预设配置程序相当于命名管道的客户端,从而,主播端的直播软件相当于命名管道的服务端。进一步,首先,在直播软件中创建命名管道,接着,在游戏进程中预设配置程序通过命名管道的名称与直播软件建立通信连接,以使直播软件和游戏进程能够通过命名管道进行通信。在建立直播软件和游戏进程之间的通信关系的过程中,首先,在主播端的直播软件中创建命名管道,具体地,服务端调用WindowsAPI函数CreateNamedPipe创建具有预设名称的命名管道,该预设名称唯一,不与系统中的其他进程的管道存在重名,从而客户端能够通过预设名称来连接命名管道,服务端接着通过调用ConnectNamedPipe来等待客户端的连接,对应地,客户端调用函数CreateFile来连接命名管道,并调用函数WaitNamedPipe来等待服务端的响应,从而完成服务端与客户端之间的连接。
在完成预设配置程序的注入以及通过命名管道实现直播软件和游戏进程之间的通信之后,直播软件利用预设配置程序从游戏进程中获取游戏进展数据,优选地,可以利用反汇编方式从游戏进程中获取游戏进展数据,以游戏进展数据包括游戏当前存活人数为例,具体地:反汇编分析游戏进程中获取游戏当前存活人数的数据内容会存储在游戏的全局变量中,可以通过Windows提供的动态调试工具WinDbg来动态调试游戏进程,以寻找游戏中哪个变量存储了当前游戏的存活人数信息。游戏的每种数据都会使用一个全局变量来存储其数据内容,而一个全局变量对应于游戏进程则是一个内存地址,最终分析得到的结果则是全局变量NumAlivePlayers存储的是游戏的“当前存活的玩家格式”,那么则找到了所需的当前存活人数数据。其中,可以通过调用汇编语言的形式来调用游戏的获取游戏战况的数据存储地址,具体实现如下:
其中,asm{}括起来的内容表示在C语言中内嵌入汇编代码,XXX参数的值则是一个内存地址,内存地址具体则是通过WinDbg动态调试分析找到。
进一步,在获取到游戏进展数据之后,将游戏进展数据发送给与直播软件对应的直播服务器。
基于同一发明构思,本申请的第二实施例还提供一种呈现游戏直播的方法,如图2所示,应用于直播服务器端,直播服务器端的直播服务器为该呈现游戏直播的方法的执行主体,所述方法包括:
步骤201:接收主播端发送的用于表征目标游戏当前进展情况的游戏进展数据。
步骤202:将游戏进展数据添加到与主播端对应的目标直播间的直播间封面中。
步骤203:将添加有游戏进展数据的直播间封面推送给观众端。
具体来讲,在直播服务器端,直播服务器首先接收主播端发送的游戏进展数据,接着将游戏进展数据添加到与主播端对应的目标直播间的直播间封面中,使得直播间封面包含游戏进展数据,最后直播服务器将添加有游戏进展数据的直播间封面推送给观众端,使得观众端的用户能够根据直播间封面获得游戏进展数据。例如,当游戏进展数据包含游戏当前存活人数时,直播服务器将游戏当前存活人数添加到直播间封面中,并将添加有游戏当前存活人数的直播间封面推送给观众端。
基于同一发明构思,本申请的第三实施例还提供一种呈现游戏直播的系统,如图3所示,所述系统包括主播端301、直播服务器端302和观众端303。
主播端301,用于在利用直播软件在目标直播间内对目标游戏进行直播的过程中,直播软件向目标游戏的游戏进程中注入预设配置程序;直播软件利用预设配置程序从游戏进程中,获取用于表征目标游戏当前进展情况的游戏进展数据;将游戏进展数据发送给与直播软件对应的直播服务器;
直播服务器端302,用于接收主播端发送的游戏进展数据;将游戏进展数据添加到与主播端对应的目标直播间的直播间封面中;将添加有游戏进展数据的直播间封面推送给观众端;
观众端303,用于接收并向用户呈现添加有游戏进展数据的直播间封面。
基于同一发明构思,本申请的第四实施例还提供一种呈现游戏直播的装置,如图4所示,应用于主播端,所述装置包括:
注入模块401,用于在利用直播软件在目标直播间内对目标游戏进行直播的过程中,所述直播软件向所述目标游戏的游戏进程中注入预设配置程序;
获取模块402,用于所述直播软件利用所述预设配置程序从所述游戏进程中,获取用于表征所述目标游戏当前进展情况的游戏进展数据;
发送模块403,用于将所述游戏进展数据发送给与所述直播软件对应的直播服务器。
基于同一发明构思,本申请的第五实施例还提供一种呈现游戏直播的装置,如图5所示,应用于直播服务器端,所述装置包括:
接收模块501,用于接收主播端发送的用于表征所述目标游戏当前进展情况的游戏进展数据;
添加模块502,用于将所述游戏进展数据添加到与所述主播端对应的目标直播间的直播间封面中;
推送模块503,用于将添加有所述游戏进展数据的直播间封面推送给观众端。
基于同一发明构思,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述第一实施例和第二实施例中任一方法步骤。
基于同一发明构思,本发明第六实施例还提供了一种计算机设备,如图6所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机设备可以为包括手机、平板电脑、PDA(Personal DigitalAssistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以计算机设备为手机为例:
图6示出的是与本发明实施例提供的计算机设备相关的部分结构的框图。参考图6,该计算机设备包括:存储器601和处理器602。本领域技术人员可以理解,图6中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对计算机设备的各个构成部件进行具体的介绍:
存储器601可用于存储软件程序以及模块,处理器602通过运行存储在存储器601的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器601可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储数据(比如音频数据、电话本等)等。此外,存储器601可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器602是计算机设备的控制中心,通过运行或执行存储在存储器601内的软件程序和/或模块,以及调用存储在存储器601内的数据,执行各种功能和处理数据。可选的,处理器602可包括一个或多个处理单元;优选的,处理器602可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。
在本发明实施例中,该计算机设备所包括的处理器602可以具有前述第一实施例和第二实施例中任一方法步骤所对应的功能。
总之,本发明对于主播端,通过利用直播软件向目标游戏的游戏进程中注入预设配置程序,直播软件再利用预设配置程序从游戏进程中获取用于表征目标游戏当前进展情况的游戏进展数据,最后主播端将游戏进展数据发送给与直播软件对应的直播服务器,而直播服务器端接收主播端发送的用于表征目标游戏当前进展情况的游戏进展数据,并将游戏进展数据添加到与主播端对应的目标直播间的直播间封面中,最后将添加有游戏进展数据的直播间封面推送给观众端,从而使得观众端的用户能够直观地了解到游戏进展情况,能够针对性对直播间进行选择。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。