CN109821235A - 游戏录像方法、装置及服务器 - Google Patents
游戏录像方法、装置及服务器 Download PDFInfo
- Publication number
- CN109821235A CN109821235A CN201910185783.8A CN201910185783A CN109821235A CN 109821235 A CN109821235 A CN 109821235A CN 201910185783 A CN201910185783 A CN 201910185783A CN 109821235 A CN109821235 A CN 109821235A
- Authority
- CN
- China
- Prior art keywords
- game
- game state
- state data
- data
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Television Signal Processing For Recording (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请公开了一种游戏录像方法、装置及服务器,该方法包括:在满足游戏的录像条件时,在服务器中创建与该游戏关联的虚拟通信端口,该虚拟通信端口为模拟该游戏的客户端的通信端口;截获该服务器向该虚拟通信端口传输的游戏状态数据,游戏状态数据属于该服务器向该游戏的客户端进行状态同步的数据;将截获到的该游戏状态数据存储到游戏录像文件。本申请的方案可以更为合理的存储作为游戏录像文件的数据,使得客户端无需依靠服务器也可以对游戏录像进行回放。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种游戏录像方法、装置及服务器。
背景技术
游戏录像是指获取游戏玩家在游戏中交互以及场景数据。通过对游戏录像进行回放可以将游戏录像加载后播放,以还原出游戏中游戏玩家的交互以及游戏场景等信息。游戏录像不仅可以用于满足游戏玩家之间相互分享游戏单局的需求,还可以用于辅助客户端程序重现、对游戏进行性能测试以及定位游戏中存在的漏洞等。
目前,游戏录像的方式是在服务器端将游戏中各个游戏客户端的上报命令存储为游戏录像文件。然而,由于游戏录像文件中仅仅包含了游戏中各个游戏客户端上报的命令,客户端必须依靠服务器的运算环境,才可以将各个客户端的上报命令转换为游戏的状态数据,从而无法实现完全在客户端进行录像回放。
发明内容
有鉴于此,本申请提供了一种游戏录像方法、装置及服务器,以更为合理的存储作为游戏录像文件的数据,使得客户端无需依靠服务器也可以对游戏录像进行回放。
为实现上述目的,本申请提供了如下方案:
一种游戏录像方法,包括:
在满足游戏的录像条件时,在服务器中创建与所述游戏关联的虚拟通信端口,所述虚拟通信端口为模拟所述游戏的客户端的通信端口;
截获所述服务器向所述虚拟通信端口传输的游戏状态数据,所述游戏状态数据属于所述服务器向所述游戏的客户端进行状态同步的数据;
将截获到的所述游戏状态数据存储到游戏录像文件。
优选的,所述将截获到的所述游戏状态数据存储到游戏录像文件,包括:
检测是否存在截获到的所述游戏状态数据对应的上一帧游戏状态数据,所述上一帧游戏状态数据为在截获所述游戏状态数据之前且最近一次截获到的游戏状态数据;
在存在所述上一帧游戏状态数据的情况下,确定所述游戏状态数据与所述上一帧游戏状态数据之间的差异数据,并将所述差异数据存储到游戏录像文件;
在不存在所述上一帧游戏状态数据的情况下,将所述游戏状态数据存储到所述游戏录像文件。
又一方面,本申请还提供了一种游戏录像装置,包括:
端口模拟单元,用于在满足游戏的录像条件时,在服务器中创建与所述游戏关联的虚拟通信端口,所述虚拟通信端口为模拟所述游戏的客户端的通信端口;
数据截获单元,用于截获所述服务器向所述虚拟通信端口传输的游戏状态数据,游戏状态数据属于所述服务器向所述游戏的客户端进行状态同步的数据;
录像存储单元,用于将截获到的所述游戏状态数据存储到游戏录像文件。
又一方面,本申请还提供了一种服务器,包括:
处理器和存储器;
所述处理器,用于调用并执行所述存储器中存储的程序;
所述存储器用于存储所述程序,所述程序至少用于:
在满足游戏的录像条件时,在服务器中创建与所述游戏关联的虚拟通信端口,所述虚拟通信端口为模拟所述游戏的客户端的通信端口;
截获所述服务器向所述虚拟通信端口传输的游戏状态数据,游戏状态数据属于所述服务器向所述游戏的客户端进行状态同步的数据;
将截获到的所述游戏状态数据存储到游戏录像文件。
可见,本申请实施例,在需要对游戏进行录像时,会在服务器中创建用于模拟该游戏中客户端的虚拟通信端口,使得服务器中游戏程序在向游戏的各个客户端同步游戏状态时,会向该虚拟通信端口传输同步的游戏状态数据,在该种情况下,通过截获向该虚拟通信端口传输的游戏状态数据并存储到游戏录像文件,就可以获取到包含游戏运行中的游戏状态的游戏录像文件,从而可以获得更为全面反映游戏整个过程的游戏录像文件,实现了更为合理的游戏录像。而且,由于游戏录像文件中存储的是游戏中已经经过逻辑运算所得到的游戏状态数据,而不单单是客户端的命令,因此,客户端也就不需要再依靠服务器对命令进行逻辑运算,从而可以直接游戏录像文件进行回放,提高了游戏录像文件回放的便捷性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本申请的方案所适用的一种游戏系统的组成架构示意图;
图2示出了本申请的游戏录像方法所适用的服务器的一种组成结构示意图;
图3示出了本申请一种游戏录像方法一个实施例的流程示意图;
图4示出了服务器向虚拟通信端口同步游戏状态以及向真实的客户端同步游戏状态的对比示意图;
图5示出了本申请一种游戏录像方法又一个实施例的流程示意图;
图6示出了处理截获到的游戏状态数据的一种流程框架示意图;
图7示出了本申请一种游戏录像回放方法一个实施例的流程示意图;
图8示出了本申请一种游戏录像装置的一种组成结构示意图。
具体实施方式
本申请实施例的方案适用于游戏录像,以获得包含游戏运行中的游戏状态数据的游戏录像文件。
为了便于理解本申请的方案,先对本申请的方案所涉及到的游戏系统进行介绍。
如图1,其示出了本申请一种游戏系统的组成架构示意图。
由图1可以看出,该游戏系统包括:由至少一台服务器101组成的服务器系统100,以及与该服务器系统通过网络相连的至少一台游戏客户端200。
其中,该服务器101可以运行有用于为终端提供游戏服务的游戏程序,该游戏程序可以对游戏过程中,游戏客户端上报的命令进行逻辑运算并转换为游戏状态,并将游戏状态同步给游戏对应的各个游戏客户端。
该游戏客户端200中可以安装并运行游戏应用的移动终端、笔记本电脑以及台式电脑等。游戏客户端基于游戏应用与该服务器系统中的服务器建立通信连接,以获取并更新游戏数据。
在本申请实施例中,该服务器可以基于状态同步向游戏的各个游戏客户端同步游戏的游戏状态。
其中,服务器中可以运行有录像程序,通过该录像程序可以截获服务器同步给客户端的游戏状态数据,并将获取到的游戏状态数据存储为游戏录像文件,从而获取到包含游戏状态的游戏录像文件。
为了便于理解,本申请中该服务器的构成,可以参见图2,其示出了本申请的方案所适用的服务器的一种组成结构示意图。
在图2中,该服务器200可以包括:处理器201、存储器202、通信接口203、输入单元204和显示器205和通信总线206。
处理器201、存储器202、通信接口203、输入单元204、显示器205、均通过通信总线206完成相互间的通信。
在本申请实施例中,该处理器201,可以为中央处理器(Central ProcessingUnit,CPU)或者可编程逻辑器件等。
该处理器可以调用存储器202中存储的程序,具体的,处理器可以执行如下图3以及图6所示流程中的操作。
存储器202中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于实现以下功能的程序:
在满足游戏的录像条件时,在服务器中创建与该游戏关联的虚拟通信端口,该虚拟通信端口为模拟该游戏的客户端的通信端口;
截获该服务器向该虚拟通信端口传输的游戏状态数据,游戏状态数据属于该服务器向该游戏的客户端进行状态同步的数据;
将截获到的该游戏状态数据存储到游戏录像文件。
在一种可能的实现方式中,该存储器202可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统等;存储数据区可存储根据计算机的使用过程中所创建的数据。
此外,存储器202可以包括高速随机存取存储器,还可以包括非易失性存储器等。
该通信接口203可以为通信模块的接口。
本申请还可以包括显示器204和输入单元205,该显示器204包括显示面板,如触摸显示面板等;该输入单元可以触摸感应单元、键盘等等。
当然,图2所示的服务器结构并不构成对本申请实施例中服务器的限定,在实际应用中服务器可以包括比图2所示的更多或更少的部件,或者组合某些部件。
结合以上共性,下面对本申请的一种游戏录像方法进行介绍。
如,参见图3,其示出了本申请一种游戏录像方法的一种流程示意图,本实施例的方法可以应用于前面提到的服务器。本实施例的方法可以包括:
S301,在满足游戏的录像条件时,在服务器中创建与该游戏关联的虚拟通信端口。
其中,游戏的录像条件可以根据需要设定。如,可以在服务器开启一局游戏时,确定满足该局游戏的录像条件。又如,还可以是服务器侧的用户通过输入指令,来触发游戏进入录像状态,从而确定满足录像条件。当然,游戏的录像条件还可以有其他可能,在此不加限制。
在本申请实施例中,服务器中可以运行有录像程序,通过运行该录像程序可以在确定满足游戏的录像条件时,触发执行本实施例的各个步骤,以生成游戏录像文件。
在本申请实施例中,为了获取到游戏的游戏状态,可以基于状态同步来实现获取游戏的游戏状态。其中,状态同步是指服务器获取到游戏中各个客户端输入的命令之后,对命令进行逻辑运算转换成游戏状态,并将游戏状态广播给游戏中的各个客户端,以使得客户端通过这些状态同步数据进行及时处理,以便达到客户端中游戏效果一致。
但是,由于游戏的客户端与服务器之间是通过网络相连,而由于网络波动可能会带来冗余包;且一旦出现断网而导致客户端与服务器之间的网络终端,则会导致游戏录像中断,从而无法完整、可靠的获取到游戏的完整录像文件。
为了避免由于网络波动以及断网等因素而导致无法完整、可靠的生成游戏录像文件,在本申请实施例中,会在服务器中创建一个与该游戏关联的虚拟游戏端口。其中,虚拟通信端口为模拟该游戏的客户端的通信端口。如,录像程序通过在服务器中搭建一个虚拟的且与游戏建立虚拟通信通道的端口,从而使得服务器会将该虚拟游戏端口确认为一个需要同步游戏状态的客户端端口。
可见,通过创建该虚拟通信端口,相当于在服务器中创建了一个待同步状态的虚拟客户端。这样,服务器会将该虚拟通信端口作为需要下发同步状态的一个客户端的端口,从而使得服务器会将游戏中的游戏状态同步传输给该虚拟通信端口。
可以理解的是,录像程序在服务器中创建了虚拟通信端口的同时,服务器与该虚拟通信端口之间会搭建出一条虚拟通信通道,该虚拟通信通道去除了网络传输层,从而可以不受任何网络质量的影响。
S302,截获该服务器向虚拟通信端口传输的游戏状态数据。
如,通过录像程序截获该服务器通过虚拟通信通道向该虚拟通信端口传输的游戏状态数据。
由前面的介绍可知,服务器会向为其他真实客户端同步游戏状态一样,向该虚拟通信端口下发状态同步的数据,在本申请实施例中,游戏状态数据属于该服务器向该游戏的客户端进行状态同步的数据。
可以理解的是,在服务器向游戏的客户端同步的数据仅仅包括游戏的游戏状态的情况下,该游戏状态数据就是服务器向游戏的客户端同步的数据,因此,该游戏状态数据为服务器基于状态同步机制向虚拟通信端口同步的游戏状态。
其中,游戏状态数据为服务器基于游戏中游戏玩家的输入经过逻辑运算,转换出的游戏状态的数据,基于游戏状态数据可以还原游戏中角色以及场景的状态数据。如,游戏状态数据可以包括:游戏中的游戏对象的属性数值,如,游戏中游戏对象的血量以及怒气值等;还可以包括,游戏画面相关参数,如,游戏对象相关的动画参数(不同的动画参数可以产生不同的画面效果)等。
S303,将截获到的该游戏状态数据存储到游戏录像文件。
如,将截获到的游戏状态数据存储到文件,直至完成游戏录像,将该文件作为游戏录像文件。
可以理解的是,在服务器启动并运行游戏的过程中,服务器会每隔一定时刻向客户端同步一次游戏状态,如,服务器每秒会同步30帧游戏状态,相应的,服务器也会不断向虚拟通信端口同步游戏状态,因此,只要是检测到服务器向该虚拟通信端口传输了游戏状态数据,该录像程序均会截获游戏状态数据并存储到游戏录像文件。即,该步骤S302和S303会被多次重复执行,直至该局游戏结束或者当前满足其他游戏录像结束的条件。
可以理解的是,在截获到游戏状态数据之后,将游戏状态数据存储到游戏录像文件的具体实现方式可以有多种可能。如,可以采用流式存储的方式,具体的,每次截获到游戏状态数据都经内存直接存储到游戏录像文件中。
但是采用流式存储对需求性能要求较高,可选的,本申请可以采用缓存存储的方式,即,将截获到的游戏状态数据缓存到内存,在满足数据存储条件时,将内存中缓存的游戏状态数据序列化到游戏录像文件。
其中,该数据存储条件可以根据需要设定,具体还可以结合游戏所能产生的游戏状态数据的总数据量来综合确定。
如,在一种实现方式中,在确认满足游戏录制条件时,可以确定游戏所能产生的游戏状态数据的总数据量预估值,例如,根据游戏的类型以及参与该局游戏的游戏玩家的数量等,来预估录制过程所能产生的游戏状态数据的总数据量预估值。相应的,在该总数据量预估值小于设定阈值的情况下,如果确认游戏结束,则将内存中缓存的游戏状态数据序列化到游戏录像文件。而在该总数据量预估值不小于该设定阈值的情况下,在当前时刻距离最近一次序列化的时长达到预设时长时,将内存中缓存的游戏状态数据序列化到游戏录像文件。
举例说明,以设定阈值为6M为例,如果游戏所能产生的游戏状态的总数据量预估值小于6M,则可以将截获到的游戏状态数据缓存到内存中,并一直到游戏结束时,将内存中的数据一次性序列化到文件。对于总数据量预估值不小于6M的情况下,则可以在每次截获一定时间的游戏状态数据之后,将内存中缓存的数据序列化到文件,同时,还会持续截获游戏状态数据缓存到内存。
可选的,在总数量预估值不小于预设阈值的情况下,为了便于由于分批将内存中的数据序列化到文件,而影响到数据截获,从而出现数据丢失,本申请还可以设置多个用于截获游戏状态数据的线程。这样,在一个线程采集游戏状态数据一段时间并缓存到内存之后,该线程可以将内存中缓存的游戏状态数据序列化到游戏录像文件;同时,启动另一条线程,并通过另一条线程截获游戏状态数据并缓存到内存,以避免数据丢失。
具体的,在该总数据量预估值不小于设定阈值的情况下,步骤S302可以为:从多个用于截获游戏状态数据的线程中,选取一个待运行的线程;运行当前选取的该线程,并利用当前运行的该线程截获该服务器向虚拟通信端口传输的游戏状态数据。相应的,在当前运行的线程截获游戏状态数据的时长达到预设时长时,通过当前运行的线程将内存中缓存的游戏状态数据序列化到游戏录像文件。同时,从多个线程中尚未运行的线程中,选取一个待运行的线程,并返回执行运行当前选取的线程,并利用当前运行的该线程截获该服务器向虚拟通信端口传输的游戏状态数据的操作,直至游戏结束。
可以理解的是,由于本申请生成的游戏录像文件中存储的游戏运行中的游戏状态数据,因此,客户端可以直接解析该游戏录像文件并回放,从而避免了客户端需要依靠服务器的逻辑运算转换出游戏状态的操作,提高了游戏录像回放的便捷性。
可选的,在本申请实施例中,在截获到游戏状态数据之后,还可以对截获的游戏状态数据进行压缩,然后再将经过压缩后的游戏状态数据存储到游戏录像文件中。
可见,本申请实施例,在需要对游戏进行录像时,会在服务器中创建用于模拟该游戏中客户端的虚拟通信端口,使得服务器中游戏程序在向游戏的各个客户端同步游戏状态时,会向该虚拟通信端口传输同步的游戏状态数据,在该种情况下,通过截获向该虚拟通信端口传输的游戏状态数据并存储到游戏录像文件,就可以获取到包含游戏运行中的游戏状态的游戏录像文件,从而可以获得更为全面反映游戏整个过程的游戏录像文件,实现了更为合理的游戏录像。而且,由于游戏录像文件中存储的是游戏中已经经过逻辑运算所得到的游戏状态数据,而不单单是客户端的命令,因此,客户端也就不需要再依靠服务器对命令进行逻辑运算,从而可以直接游戏录像文件进行回放,提高了游戏录像文件回放的便捷性。
同时,由于在服务器中构建用于模拟游戏中客户端的虚拟通信端口,使得服务器向该虚拟通信端口同步游戏状态,从而可以在服务器与虚拟通信端口之间的虚拟通信通道中截获到游戏的游戏状态,避免了对服务器与真实的客户端之间的网络通道内的游戏状态进行截获,从而也就避免由于网络断网等网络不稳定因素而影响到游戏录制,进而减少联网的或者断网之间的网络不稳定而影响到游戏的录像。而且,由于本申请获取游戏录像文件不需要依赖真实的网络通信,可以大大降低网络通信的开销。
为了能够更好的理解本申请可以避免由于网络不稳定而影响到游戏录像这一有益效果,可以参见图4,其示出了服务器向虚拟通信端口同步游戏状态以及向真实的客户端同步游戏状态的对比示意图。
由图4中上面一部分为服务器与虚拟通信端口之间的通信传输通道。由图4可以看出,对于服务器而言,服务器中的虚拟通信端口就相当于一个虚拟客户端。而服务器向该客户端传输需要同步的游戏状态时,游戏状态的数据从值需要经过逻辑层、数据决策层以及压缩层,然后可以直接传输到给虚拟通信端口所表征的虚拟客户端,从而不需要经过传输层,进而不会受到网络波动等网络因素的影响,有利于保证基于该虚拟通信端口可以不间断的获取到游戏状态数据。
而从图4中下面一部分可以看出,服务器与真实的客户端之间传输游戏状态数据需要依次经过逻辑层、数据决策层、压缩层以及传输层。而一旦服务器与真实客户端之间的网络中断,则会导致同步数据无法向该客户端传输,从而会导致游戏中的部分游戏状态无法生成游戏录像文件。
可以理解的是,由于游戏中每秒都可能会产生多帧游戏状态数据,因此,如果将所有游戏状态数据都完整存储,则会导致生成的游戏录像文件较大,并对内存以及游戏录像文件所需的存储空间的需求较大。
为了减少由于存储游戏状态数据以及游戏录像文件所需占用的存储空间,在本申请实施例中,可以在截获到第一帧游戏状态数据时,完整存储该第一帧游戏状态数据到游戏录像文件。而的对于第二帧以及以后各帧游戏状态数据,可以计算当前帧的游戏状态数据与该当前帧之前的上一帧游戏状态数据之间的差异数据,并将差异数据存储到游戏录像文件中。
如,参见图5,其示出了本申请一种游戏录像方法又一个实施例的流程示意图,本实施例的方法可以应用于服务器,该方法包括:
S501,在检测到启动一局游戏时,在服务器中创建与该游戏关联的虚拟通信端口。
其中,虚拟通信端口为模拟该游戏的客户端的通信端口。
在本实施例中,为了便于理解,是以检测到一局游戏启动作为该局游戏的录像条件为例,但是对于其他触发录像的条件也同样适用于本实施例。
S502,截获该服务器当前向虚拟通信端口传输的游戏状态数据。
该步骤可以参见前面任意一个实施例的相关介绍,在此不再赘述。
S503,检测是否缓存有当前截获到的该游戏状态数据对应的上一帧游戏状态数据,如果否,则执行步骤S504;如果是,则执行步骤506。
其中,该上一帧游戏状态数据是相对于当前截获到的游戏状态数据来说的,该上一帧游戏状态数据为在截获到当前该游戏状态数据之前且最近一次截获到的游戏状态数据。
可以理解的是,在服务器向虚拟通信端口同步第一帧游戏状态数据的情况下,截获到的为第一帧游戏状态数据,在该种情况下,不存在上一帧游戏状态数据;而在服务器向虚拟通信端口同步了第二帧游戏状态数据之后,该第一帧游戏状态数据就是该第二帧游戏状态数据的上一帧游戏状态数据。相应的,从第二帧游戏状态数据开始,每帧游戏状态数据都会对应有上一帧游戏状态数据。
可以理解的是,本实施例是以获取到一帧游戏状态数据之后,会缓存该游戏状态数据,以将该游戏状态数据作为下一帧游戏状态数据对应的上一帧游戏状态数据。在将游戏状态数据存储到游戏录像文件的同时,缓存游戏状态数据,可以在截取到下一帧游戏状态数据之后,便捷的查询出是否存在上一帧游戏状态数据,并能够较为快速读取该上一帧游戏状态数据以进行相应的运算。
但是可以理解的是,在不考虑效率以及读写性能的情况下,也可以通过其他方式,来检测是否存在当前截获到的该游戏状态数据对应的上一帧游戏状态数据也同样适用于本实施例。如,检测游戏录像文件中是否存在当前截取到的游戏状态数据对应的上一帧游戏状态数据。
S504,在不存在该上一帧游戏状态数据的情况下,将该游戏状态数据存储到该游戏录像文件。
可以理解的是,如果不存在当前截取到的游戏状态数据对应的上一帧游戏状态数据,则说明当前截取到的游戏状态数据为第一份游戏状态数据(即第一帧游戏状态数据),在该种情况下,则可以存储该游戏状态数据的全量包,即直接存储该游戏状态数据到游戏录像文件。
其中,将该游戏状态数据存储到游戏录像文件的具体过程可以为前面提到的流式存储或者缓存存储等方式,具体可以参见前面的相关介绍,在此不再赘述。
S505,缓存当前截取到的该游戏状态数据。
该步骤S505与步骤S506可以同时执行。
其中,该步骤S505为可选步骤,其目的是为了将该游戏状态数据作为下一帧游戏状态数据对应的上一帧游戏状态数据。
S506,在存在该上一帧游戏状态数据的情况下,确定当前截取到的该游戏状态数据与该上一帧游戏状态数据之间的差异数据,并将该差异数据存储到游戏录像文件。
其中,该差异数据用于表征相邻两帧游戏状态数据之间所存在的游戏状态的差异部分。
其中,确定该差异数据的方式可以有多种,可选的,可以对当前截取到的游戏状态数据与该上一帧游戏状态数据作差分diff运算,以得到差异数据。
由于该差异数据为当前截取到的游戏状态数据与上一帧游戏状态数据之间存在游戏状态差异的部分,因此,在上一帧游戏状态数据已知的情况下,依据上一帧游戏状态数据以及该差异数据可以合成出该当前截取到的游戏状态数据。由于差异数据相对于该当前截取到的游戏状态数据的数据量较小,且基于差异数据可以合称为该当前截取到的游戏状态数据,因此,仅将该差异数据存储到游戏录像文件中,既有利于降低游戏录像文件的数据量,又不会影响到后续对游戏录像文件的回放。
S507,缓存当前截获到的该游戏状态数据。
可以理解的是,与步骤S505相似,在执行步骤S506同时,可以执行该步骤S507,以便后续截取到下一帧游戏状态数据之后,计算该下一帧游戏状态数据与该游戏状态数据的差异数据。
S508,删除缓存的该游戏状态数据对应的上一帧游戏状态数据。
可以理解的是,在将当前截取到的游戏状态数据对应的差异数据存储到游戏录像文件之后,该游戏状态数据对应的上一帧游戏状态数据在后续不会被利用到。在该种情况下,则为了减少内存占用,则可以删除该游戏状态数据对应的上一帧游戏状态数据。
为了便于理解图5的实施例,下面结合图6进行介绍。在图6中示出了服务器中的录像程序对截获到的游戏状态数据进行处理的处理流程框架示意图。
由图6可以看出,录像程序截获到从服务器向虚拟客户端(虚拟通信端口所表征的虚拟客户端)发送的第一帧游戏状态数据之后,会缓存该第一帧游戏状态数据,同时将该第一帧游戏状态数据(如图6中的初始全量包)压缩后存储到文件。
在录像程序截获到服务器向虚拟客户端发送的第二帧游戏状态数据之后,该录像程序会将该第二帧游戏状态数据与缓存的第一帧游戏状态数据进行diff运算,以得到第一帧和第二帧游戏状态数据的差异数据,将由差异数据组成的差异包(也可以称为增量包)经过压缩后存储到文件。同时,录像程序会缓存该第二帧游戏状态数据,并删除该第二帧游戏状态数据。
相应的,在录像程序截获到服务器向虚拟客户端发送的第二帧游戏状态数据之后,该录像程序会将该第三帧游戏状态数据与缓存的第二帧游戏状态数据进行diff运算,以得到这两帧数据的差异数据组成的差异包,将该差异包经过压缩后存储到文件。同时,录像程序缓存第三帧游戏状态数据,并删除缓存的第二帧游戏状态数据。对于后续截获到的各帧游戏状态数据的处理相似,直至游戏录像结束。
可以理解的是,在服务器完成一局游戏的录像,得到该游戏完整的游戏录像文件之后,游戏的客户端以及需要对游戏进行测试设备等各种终端可以向该服务器请求该游戏录像文件,以对该游戏录像文件进行回放。
相应的,服务器在接收到终端发送的游戏录像回放请求的情况下,向该终端发送该游戏录像文件,以便终端回放游戏录像文件。
如,客户端从服务器获取到游戏录像文件之后,该客户端加载该游戏录像文件,并依次播放该游戏录像文件中各个游戏状态数据,以实现游戏回放。如,客户端对游戏录像文件进行反序列化之后进行回放。
特别的,在游戏录像文件中除了第一帧游戏状态数据为全量数据包外,其余各帧均存储的是该帧游戏状态数据与前一帧游戏状态数据的差异数据的情况,该客户端在对游戏录像文件进行回放时,还需要先合成各帧游戏状态数据。
如图7,其示出了本申请一种游戏录像回放方法的一种流程示意图,本实施例可以应用于客户端,包括:
S701,获取游戏录像文件。
其中,该游戏录像文件包括多帧录像数据,该多帧录像数据中的第一帧录像数据为游戏状态数据,且除所述第一帧录像数据之外的各帧录像数据均为差异数据。其中,每帧差异数据为该帧的游戏状态数据与该帧的前一帧游戏状态数据之间的游戏状态的差异。
S702,从该游戏录像文件中获取当前待播放的当前帧录像数据。
S703,在该当前帧录像数据为第一帧录像数据的情况下,播放该当前帧录像数据所表征的游戏状态数据,并将该第一帧录像数据缓存为第一帧游戏状态数据。
为了便于区分,将当前待播放的一帧录像数据称为当前帧录像数据。
可以理解的是,如果当前帧录像数据为第一帧录像数据,则该帧录像数据本身就是游戏状态数据的全量数据包,在该种情况下,可以直接播放该帧录像数据。
可以理解的是,在执行了步骤S703之后,会返回执行步骤S702,以处理该游戏录像文件中下一帧录像数据。
S704,在该当前帧录像数据不属于第一帧录像数据的情况下,获取该当前帧录像数据之前的前一帧游戏状态数据,并利用该当前帧录像数据以及前一帧游戏状态数据,合成该当前帧录像数据对应的游戏状态数据。
在当前帧录像数据不属于第一帧录像数据时,则说明该帧录像数据为差异数据,则需要合成该帧录像数据对应的游戏状态数据。
其中,基于当前帧录像数据与前一帧游戏状态数据可以进行融合运算,以还原出当前帧录像数据所对应的游戏状态数据,本申请对具体合成过程不加限制。
S705,播放当前合成的游戏状态数据。
S706,缓存当前合成的游戏状态数据,以便于合成当前合成的游戏状态数据的下一帧游戏状态数据。
可以理解的是,由于第二帧以及后续各帧录像数据均为差异数据,因此,在合成出一个游戏状态数据之后,在播放该游戏状态数据的同时,需要缓存该游戏状态数据,以便后续利用该游戏状态数据以及该游戏状态数据的下一帧录像数据进行合成。
相应的,在执行该步骤S706之后会返回执行步骤S702,直至游戏录像文件中所有帧录像数据均被处理并完成回放为止。
其中,客户端在播放游戏录像文件的过程中,合成游戏状态数据的过程是前面计算差异数据的逆过程。
为了便于理解,下面举例说明:
在客户端获取到游戏录像文件之后,可以获取游戏录像文件中的第一帧录像数据,由于第一帧录像数据为游戏状态数据,则客户端可以缓存该第一帧游戏状态数据,同时会播放该第一帧游戏状态数据。
在客户端解析出游戏录像文件中的第二帧录像数据之后,由于第二帧录像数据并不是游戏状态数据而是第一帧游戏状态数据与第二帧游戏状态数据的差异数据。因此,客户端利用缓存的第一帧游戏状态数据与该第二帧录像数据(第二帧游戏状态数据对应的差异数据),合成该第二帧游戏状态数据。然后,播放该第二帧游戏状态数据,同时缓存该第二帧游戏状态数据。
在客户端解析出游戏录像文件中的第三帧录像数据之后,该客户端可以利用该第三帧录像数据以及缓存的第二帧游戏状态数据,合成该第三帧游戏状态数据。然后,客户端播放该第三帧游戏状态数据,同时缓存该第三帧游戏状态数据,以便用于合成第四帧游戏状态数据,直至游戏录像文件播放完成。
由客户端的回放游戏录像文件的过程可以看出,在本申请的游戏录像文件为游戏状态数据以及游戏状态数据对应的差异数据的情况下,客户端可以直接通过对游戏录像文件进行解析并回放,从而实现了无需依赖服务器,完成在客户端进行游戏录像的回放。
可以理解的是,以上是以客户端回放游戏录像文件为例,在实际应用中,服务器侧生成游戏录像文件之后,还可以利用该游戏录像文件对游戏进行测试等,本申请对此不加限制。
其中,根据测试需求的不同,可以选择在服务器或者终端侧播放该游戏录像文件。如,需要对游戏中通信性能(如测试游戏中所涉及到通信模块)的情况下,可能需要在服务器中解析并加载该游戏录像文件,实现游戏录像文件播放之后,再将游戏中的数据通过网络传输给客户端。该种方式可以降低客户端的数据处理量,但是会增加通信模块的性能消耗,以实现对通信性能的测试。
又如,服务器还可以将游戏录像文件发送客户端,由客户端加载并解析播放(该过程与前面客户端回放游戏录像相似),该种方式可以使得客户端专注渲染开销和逻辑性能测试。当然,对于利用该游戏录像文件进行回放、测试或者其他用途本申请并不加以限制。
对应本申请一种游戏录像方法,本申请还提供了一种游戏录像装置。
如图8,其示出了本申请一种游戏录像装置的一种组成架构示意图,本实施例的装置应用于服务器,该装置可以包括:
端口模拟单元801,用于在满足游戏的录像条件时,在服务器中创建与所述游戏关联的虚拟通信端口,所述虚拟通信端口为模拟所述游戏的客户端的通信端口;
数据截获单元802,用于截获所述服务器向所述虚拟通信端口传输的游戏状态数据,游戏状态数据属于所述服务器向所述游戏的客户端进行状态同步的数据;
录像存储单元803,用于将截获到的所述游戏状态数据存储到游戏录像文件。
在一种可能的实现方式中,所述录像存储单元,包括:
检测子单元,用于检测是否存在截获到的所述游戏状态数据对应的上一帧游戏状态数据,所述上一帧游戏状态数据为在截获所述游戏状态数据之前且最近一次截获到的游戏状态数据;
差异存储子单元,用于在存在所述上一帧游戏状态数据的情况下,确定所述游戏状态数据与所述上一帧游戏状态数据之间的差异数据,并将所述差异数据存储到游戏录像文件;
状态存储子单元,用于在不存在所述上一帧游戏状态数据的情况下,将所述游戏状态数据存储到所述游戏录像文件。
可选的,所述检测子单元具体用于,检测是否缓存有截获到的所述游戏状态数据对应的上一帧游戏状态数据;
所述录像存储单元还包括:
第一缓存子单元,用于在所述差异存储子单元将所述差异数据存储到游戏录像文件的同时,缓存截获到的所述游戏状态数据;
缓存删除单元,用于在所述差异存储子单元将所述差异数据存储到游戏录像文件的之后,删除缓存的所述上一帧游戏状态数据;
第二缓存子单元,用于在所述状态存储子单元将所述游戏状态数据存储到所述游戏录像文件的同时,缓存所述游戏状态数据。
在一种可能的实现方式中,所述录像存储单元包括:
状态缓存子单元,用于将截获到的游戏状态数据缓存到内存;
录像存储子单元,用于在满足数据存储条件时,将内存中缓存的游戏状态数据序列化到游戏录像文件。
可选的,所述装置还包括:数据量预估单元,用于在满足游戏的录制条件时,确定所述游戏所能产生的游戏状态数据的总数据量预估值;
所述录像存储子单元,包括:
第一录像存储子单元,用于在所述总数据量预估值小于设定阈值的情况下,在确认所述游戏结束时,将内存中缓存的游戏状态数据序列化到游戏录像文件;
第二录像存储子单元,用于在所述总数据量预估值不小于所述设定阈值的情况下,在当前时刻距离最近一次序列化的时长达到预设时长时,将内存中缓存的游戏状态数据序列化到游戏录像文件。
可选的,所述数据截获单元,包括:
多线程管控子单元,用于在所述总数据量预估值不小于所述设定阈值的情况下,从多个用于截获游戏状态数据的线程中,选取一个待运行的线程;
线程截获子单元,用于运行当前选取的所述线程,并利用当前运行的所述线程截获所述服务器向所述虚拟通信端口传输的游戏状态数据;
所述第二录像存储子单元,包括:
线程存储子单元,用于在当前运行的线程截获游戏状态数据的时长达到预设时长时,通过所述目标线程将内存中缓存的游戏状态数据序列化到游戏录像文件;
线程启动子单元,用于从多个线程中尚未运行的线程中,选取一个待运行的线程,并返回执行所述线程截获子单元的操作,直至所述游戏结束。
可选的,本申请实施例的装置还可以包括:
录像发送单元,用于在接收到终端发送的游戏录像回放请求的情况下,向所述终端发送所述游戏录像文件,以便所述终端回放所述游戏录像文件。
另一方面,本申请还提供了一种存储介质,该存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现如上任意一个实施例中所描述的游戏录像方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种游戏录像方法,其特征在于,包括:
在满足游戏的录像条件时,在服务器中创建与所述游戏关联的虚拟通信端口,所述虚拟通信端口为模拟所述游戏的客户端的通信端口;
截获所述服务器向所述虚拟通信端口传输的游戏状态数据,所述游戏状态数据属于所述服务器向所述游戏的客户端进行状态同步的数据;
将截获到的所述游戏状态数据存储到游戏录像文件。
2.根据权利要求1所述的游戏录像方法,其特征在于,所述将截获到的所述游戏状态数据存储到游戏录像文件,包括:
检测是否存在截获到的所述游戏状态数据对应的上一帧游戏状态数据,所述上一帧游戏状态数据为在截获所述游戏状态数据之前且最近一次截获到的游戏状态数据;
在存在所述上一帧游戏状态数据的情况下,确定所述游戏状态数据与所述上一帧游戏状态数据之间的差异数据,并将所述差异数据存储到游戏录像文件;
在不存在所述上一帧游戏状态数据的情况下,将所述游戏状态数据存储到所述游戏录像文件。
3.根据权利要求2所述的游戏录像方法,其特征在于,所述检测是否存在截获到的所述游戏状态数据对应的上一帧游戏状态数据,包括:
检测是否缓存有截获到的所述游戏状态数据对应的上一帧游戏状态数据;
在所述将所述差异数据存储到游戏录像文件的同时,还包括:
缓存截获到的所述游戏状态数据;
在所述将所述差异数据存储到游戏录像文件的之后,还包括:
删除缓存的所述上一帧游戏状态数据;
将所述游戏状态数据存储到所述游戏录像文件的同时,还包括:
缓存所述游戏状态数据。
4.根据权利要求1所述的游戏录像方法,其特征在于,所述将截获到的所述游戏状态数据存储到游戏录像文件,包括:
将截获到的游戏状态数据缓存到内存;
在满足数据存储条件时,将内存中缓存的游戏状态数据序列化到游戏录像文件。
5.根据权利要求4所述的游戏录像方法,其特征在于,在满足游戏的录制条件的同时,还包括:确定所述游戏所能产生的游戏状态数据的总数据量预估值;
所述在满足数据存储条件时,将内存中缓存的游戏状态数据序列化到游戏录像文件,包括:
在所述总数据量预估值小于设定阈值的情况下,在确认所述游戏结束时,将内存中缓存的游戏状态数据序列化到游戏录像文件;
在所述总数据量预估值不小于所述设定阈值的情况下,在当前时刻距离最近一次序列化的时长达到预设时长时,将内存中缓存的游戏状态数据序列化到游戏录像文件。
6.根据权利要求5所述的游戏录像方法,其特征在于,在所述总数据量预估值不小于所述设定阈值的情况下,所述截获所述服务器向所述虚拟通信端口传输的游戏状态数据,包括:
从多个用于截获游戏状态数据的线程中,选取一个待运行的线程;
运行当前选取的所述线程,并利用当前运行的所述线程截获所述服务器向所述虚拟通信端口传输的游戏状态数据;
所述在当前时刻距离最近一次序列化的时长达到预设时长时,将内存中缓存的游戏状态数据序列化到游戏录像文件,包括:
在当前运行的线程截获游戏状态数据的时长达到预设时长时,通过所述目标线程将内存中缓存的游戏状态数据序列化到游戏录像文件;
从多个线程中尚未运行的线程中,选取一个待运行的线程,并返回执行所述运行当前选取的所述线程,并利用当前运行的所述线程截获所述服务器向所述虚拟通信端口传输的游戏状态数据的操作,直至所述游戏结束。
7.根据权利要求1至6任一项所述的游戏录像方法,其特征在于,还包括:
在接收到终端发送的游戏录像回放请求的情况下,向所述终端发送所述游戏录像文件,以便所述终端回放所述游戏录像文件。
8.一种游戏录像装置,其特征在于,包括:
端口模拟单元,用于在满足游戏的录像条件时,在服务器中创建与所述游戏关联的虚拟通信端口,所述虚拟通信端口为模拟所述游戏的客户端的通信端口;
数据截获单元,用于截获所述服务器向所述虚拟通信端口传输的游戏状态数据,游戏状态数据属于所述服务器向所述游戏的客户端进行状态同步的数据;
录像存储单元,用于将截获到的所述游戏状态数据存储到游戏录像文件。
9.根据权利要求8所述的游戏录像装置,其特征在于,所述录像存储单元,包括:
检测子单元,用于检测是否存在截获到的所述游戏状态数据对应的上一帧游戏状态数据,所述上一帧游戏状态数据为在截获所述游戏状态数据之前且最近一次截获到的游戏状态数据;
差异存储子单元,用于在存在所述上一帧游戏状态数据的情况下,确定所述游戏状态数据与所述上一帧游戏状态数据之间的差异数据,并将所述差异数据存储到游戏录像文件;
状态存储子单元,用于在不存在所述上一帧游戏状态数据的情况下,将所述游戏状态数据存储到所述游戏录像文件。
10.一种服务器,其特征在于,包括:
处理器和存储器;
所述处理器,用于调用并执行所述存储器中存储的程序;
所述存储器用于存储所述程序,所述程序至少用于:
在满足游戏的录像条件时,在服务器中创建与所述游戏关联的虚拟通信端口,所述虚拟通信端口为模拟所述游戏的客户端的通信端口;
截获所述服务器向所述虚拟通信端口传输的游戏状态数据,游戏状态数据属于所述服务器向所述游戏的客户端进行状态同步的数据;
将截获到的所述游戏状态数据存储到游戏录像文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910185783.8A CN109821235B (zh) | 2019-03-12 | 2019-03-12 | 游戏录像方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910185783.8A CN109821235B (zh) | 2019-03-12 | 2019-03-12 | 游戏录像方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109821235A true CN109821235A (zh) | 2019-05-31 |
CN109821235B CN109821235B (zh) | 2022-08-19 |
Family
ID=66868819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910185783.8A Active CN109821235B (zh) | 2019-03-12 | 2019-03-12 | 游戏录像方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109821235B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339038A (zh) * | 2020-02-20 | 2020-06-26 | 网易(杭州)网络有限公司 | 一种游戏录像文件的生成方法和装置 |
CN111437601A (zh) * | 2020-03-26 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 游戏回放控制方法、装置、电子设备及存储介质 |
CN111569413A (zh) * | 2020-05-14 | 2020-08-25 | 北京代码乾坤科技有限公司 | 数据同步方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101059823A (zh) * | 2006-04-19 | 2007-10-24 | 腾讯科技(深圳)有限公司 | 网络休闲游戏录放方法 |
JP2010142305A (ja) * | 2008-12-16 | 2010-07-01 | Square Enix Co Ltd | ゲーム装置、ゲームのリプレイ表示方法、ゲームプログラム及び記録媒体 |
CN102065111A (zh) * | 2009-11-13 | 2011-05-18 | 北京神州绿盟信息安全科技股份有限公司 | 一种反向代理方法和反向代理服务器 |
CN102427860A (zh) * | 2009-03-23 | 2012-04-25 | 生命力有限公司 | 用于加速的机器切换的系统和方法 |
CN104915542A (zh) * | 2015-05-08 | 2015-09-16 | 珠海金山网络游戏科技有限公司 | 一种基于数据同步的网游录像与回放的方法 |
CN106534949A (zh) * | 2016-11-25 | 2017-03-22 | 济南中维世纪科技有限公司 | 延长视频监控系统录像存储时间的方法 |
CN106843897A (zh) * | 2017-02-09 | 2017-06-13 | 腾讯科技(深圳)有限公司 | 一种截取游戏画面的方法和装置 |
CN107888957A (zh) * | 2017-10-31 | 2018-04-06 | 北京四达时代软件技术股份有限公司 | 一种遥控电视游戏的方法及电视机 |
-
2019
- 2019-03-12 CN CN201910185783.8A patent/CN109821235B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101059823A (zh) * | 2006-04-19 | 2007-10-24 | 腾讯科技(深圳)有限公司 | 网络休闲游戏录放方法 |
JP2010142305A (ja) * | 2008-12-16 | 2010-07-01 | Square Enix Co Ltd | ゲーム装置、ゲームのリプレイ表示方法、ゲームプログラム及び記録媒体 |
CN102427860A (zh) * | 2009-03-23 | 2012-04-25 | 生命力有限公司 | 用于加速的机器切换的系统和方法 |
CN102065111A (zh) * | 2009-11-13 | 2011-05-18 | 北京神州绿盟信息安全科技股份有限公司 | 一种反向代理方法和反向代理服务器 |
CN104915542A (zh) * | 2015-05-08 | 2015-09-16 | 珠海金山网络游戏科技有限公司 | 一种基于数据同步的网游录像与回放的方法 |
CN106534949A (zh) * | 2016-11-25 | 2017-03-22 | 济南中维世纪科技有限公司 | 延长视频监控系统录像存储时间的方法 |
CN106843897A (zh) * | 2017-02-09 | 2017-06-13 | 腾讯科技(深圳)有限公司 | 一种截取游戏画面的方法和装置 |
CN107888957A (zh) * | 2017-10-31 | 2018-04-06 | 北京四达时代软件技术股份有限公司 | 一种遥控电视游戏的方法及电视机 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339038A (zh) * | 2020-02-20 | 2020-06-26 | 网易(杭州)网络有限公司 | 一种游戏录像文件的生成方法和装置 |
CN111339038B (zh) * | 2020-02-20 | 2023-04-18 | 网易(杭州)网络有限公司 | 一种游戏录像文件的生成方法和装置 |
CN111437601A (zh) * | 2020-03-26 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 游戏回放控制方法、装置、电子设备及存储介质 |
CN111437601B (zh) * | 2020-03-26 | 2021-10-15 | 腾讯科技(深圳)有限公司 | 游戏回放控制方法、装置、电子设备及存储介质 |
CN111569413A (zh) * | 2020-05-14 | 2020-08-25 | 北京代码乾坤科技有限公司 | 数据同步方法和装置 |
CN111569413B (zh) * | 2020-05-14 | 2023-06-13 | 北京代码乾坤科技有限公司 | 数据同步方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109821235B (zh) | 2022-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109821235A (zh) | 游戏录像方法、装置及服务器 | |
CN108079578B (zh) | 一种基于云游戏的码率调整方法、装置及存储介质 | |
CN107050850A (zh) | 虚拟场景的录制和回放方法、装置以及回放系统 | |
CN104796448B (zh) | 网络系统的数据处理方法和装置 | |
US20150213834A1 (en) | Video Frame Still Image Sequences | |
US20230326115A1 (en) | Bullet screen comment display method and apparatus, bullet screen comment sending method and apparatus, computer device, computer-readable storage medium, and computer program product | |
CN109308280A (zh) | 数据处理方法和相关设备 | |
CN108881955A (zh) | 一种实现分布式节点设备视频同步输出的方法及系统 | |
CN109828843A (zh) | 一种计算节点间数据传输的方法、系统及电子设备 | |
CN110191358A (zh) | 视频生成方法及装置 | |
CN103618962B (zh) | 进入智能电视的特定视频应用的控制方法和控制装置 | |
CN106130753A (zh) | 应用性能数据收集系统、方法、代理客户端及相关服务器 | |
CN104468509A (zh) | 手机网络游戏数据传输的方法、系统和手机用户端 | |
CN110458681A (zh) | 一种数据对账决策的方法、装置、服务器和存储介质 | |
CN106375835B (zh) | 一种流媒体播放方法及设备 | |
CN106295326A (zh) | 一种用于获取显卡内容的内联hook方法和系统 | |
CN109714605A (zh) | 举报数据处理方法、装置、终端设备及服务器 | |
CN105450506B (zh) | 一种实时信息交互方法、装置及系统 | |
CN104463062B (zh) | 基于二维码扫描的访问方法和系统 | |
CN106027413B (zh) | 报文缓存方法、装置及设备 | |
CN103607596B (zh) | 时钟校准处理方法及装置 | |
CN112911390B (zh) | 一种视频数据的播放方法及终端设备 | |
CN113824689B (zh) | 边缘计算网络、数据传输方法、装置、设备和存储介质 | |
CN112386906B (zh) | 媒体资源播放方法和装置、存储介质及电子设备 | |
US7890651B2 (en) | Sending content from multiple content servers to clients at time reference points |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |