CN102799432A - 一种基于记录绘图指令的游戏录像及回放方法 - Google Patents
一种基于记录绘图指令的游戏录像及回放方法 Download PDFInfo
- Publication number
- CN102799432A CN102799432A CN2012102272158A CN201210227215A CN102799432A CN 102799432 A CN102799432 A CN 102799432A CN 2012102272158 A CN2012102272158 A CN 2012102272158A CN 201210227215 A CN201210227215 A CN 201210227215A CN 102799432 A CN102799432 A CN 102799432A
- Authority
- CN
- China
- Prior art keywords
- function
- video recording
- program
- recording
- application program
- 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
Images
Landscapes
- Television Signal Processing For Recording (AREA)
Abstract
本发明公开了一种基于记录绘图指令的游戏录像及回放方法,包括(1)程序准备阶段,为原有图形应用程序添加录像功能;(2)录像阶段,经过步骤(1)修改的图形应用程序被执行,在开启录像功能后,由于步骤(1)把程序中所有调用图形编程接口的地方都对调用的函数和参数作了记录,录像数据即由此生成;(3)回放阶段,把录像数据作为录像回放程序的输入,回放程序依次读取文件中的函数代号和函数参数,调用相应的图形编程接口中的绘图函数,使得图形显示设备上产生与录像阶段相同的动态画面。该方法录像生成的数据量少,具有通用性和平台无关性,对程序代码的改动少,易于后续升级和维护。
Description
技术领域
本发明涉及一种录像及回放方法,具体是一种基于记录绘图指令的游戏录像及回放方法。
背景技术
在计算机游戏中,将游戏的实时过程进行保存,并在需要时重放给用户观看,是一种很常见的附加功能,它使得用户可以欣赏自己或他人游戏过程中的精彩片段,并对游戏过程中包含的经验教训进行回顾、总结、学习。因而录像及回放功能对于计算机游戏的用户体验具有很大的提升作用。
现有的对游戏过程进行录像及回放的方案可归类为两种:
一种是记录输出到显示设备上的动态画面,并用常用的视频压缩编码技术(如AVI、MPEG等)对此动画作压缩,生成视频文件,回放时用相应的视频解码算法解压缩并输出显示。其典型实例为计算机上的各种屏幕录像软件,该方案的缺点是,由于动态图像数据的压缩使用的是通用的视频压缩算法,其压缩率较为有限,导致最终生成的录像数据量较大,并且其运算复杂度也较高,以至于无法在性能受限的设备诸如手机上得到实时处理。
另一种是仅记录游戏过程中影响程序输出结果的关键数据,包括用户的键盘、鼠标、触摸屏等终端输入设备的操作(在采用消息机制的游戏程序里,这些数据被封装成消息体进行分发和处理)、程序中用到的伪随机数种子值等等,在需要回放时,将这些数据按照与记录时相同的时序输入给游戏程序,由于程序是相同的,它必然对相同的输入产生同样的输出结果,因此也达到了再现游戏过程的目的。该方案的缺点在于不具备通用性,针对每一种特定的游戏,都需要此游戏程序的开发者自己来实现记录和回放的程序逻辑,并且随着游戏的修改或升级,录像所需的数据也可能会随之变化,造成与录像相关的程序代码也必须变动,录像文件格式在不同版本间难以兼容,在不同平台间难以移植,维护困难。
发明内容
针对上述现有技术存在的问题,本发明基于对通用图形编程接口调用的记录,提供一种兼具通用性和高压缩率的游戏录像的记录和回放方法,该方法不依赖于特定的游戏程序和操作系统平台,只需要游戏的开发者对已有的代码作少许改动就能实现录像功能,并且具有较高的数据压缩率,可以在内存和处理器性能都较为受限的移动计算设备上实现实时处理和存储。
为了实现上述目的,本发明是在图形应用程序(Graphic Application,GApp)与图形编程接口(Graphic API,GAPI)层的中间,插入一个录像接口(RecorderInterface,RI)层,用以监视并记录应用程序对绘图API的调用,实现该录像方法的前提条件是已有具备正确功能的图形应用程序,它向图形编程接口发出绘图指令,图形编程接口根据收到的指令向操作系统发出与具体硬件平台关联的绘图指令,在图形显示设备(Graphic Device,GD)上展示出动态图像,该方法包括以下步骤:
(1)、程序准备阶段,为原有图形应用程序添加录像功能,具体是:
a.编写实现录像功能主体部分的动态/静态链接库或源码库,称作录像链接库(Recorder Linked Library,RLL),对于每个被应用程序调用的图形编程接口中的函数,录像链接库都提供一个与其具有相同接口,即具有相同的参数列表的代理函数,该函数完成两部分任务:a1.以相同的参数调用图形编程接口中的相应函数,a2.将表示该函数的数字代号和用以调用此函数的有关参数,记录并进行必要压缩,写入到输出数据流;
b.将上一步骤所述的链接库引入到原有的图形应用程序,需要修改原图形应用程序的代码,把对于原图形编程接口的引用改为对于a步骤所述的录像链接库的引用,录像链接库的编写方式使得调用原图形编程接口的程序代码与调用录像链接库中对应接口的程序代码相同;
c.将程序代码与录像链接库编译、链接,生成最终的可执行文件。
(2)、录像阶段,经过步骤(1)修改的图形应用程序被执行,在开启录像功能后,由于步骤(1)把程序中所有调用图形编程接口的地方都对调用的函数和参数作了记录,录像数据即由此生成。
(3)、回放阶段,把录像数据作为录像回放程序的输入,回放程序依次读取文件中的函数代号和函数参数,调用相应的图形编程接口中的绘图函数,使得图形显示设备上产生与录像阶段相同的动态画面。
本发明的有益效果是:1、录像生成的数据量少。录像过程所记录的原始数据是图形编程接口的函数代号及函数参数,而非图像数据,因此最终生成的录像数据量大为降低,有利于实现实时地压缩和存储,以及减少网络传输所需的通信流量,特别是在内存、处理器性能和带宽资源都相对受限的移动终端上。
2、该方法具有通用性和平台无关性。绝大多数图形应用程序在底层都使用与硬件和操作系统无关的开放图形编程接口(如OpenGL、DirectX等)进行图像绘制,因而该方法通过记录图形编程接口的函数调用实现录像,就在很大程度上保证了与具体的应用程序、系统及硬件平台无关,任意一个图形应用程序都可以使用该方法实现录像功能,并且生成的录像数据可以在任意平台的回放程序中播放。
3、对程序代码的改动少,易于后续升级和维护。实现录像功能的链接库代码是预先编写好的,针对同一种图形编程接口只需使用同一个链接库,并且链接库的编写和导入方式都考虑到了其使用的便利性,因此游戏的开发人员在编程过程中无需考虑怎样实现录像功能,而只需在已有的不含录像功能的代码基础之上,修改少量代码,即可得到包含录像功能的程序,节约了游戏开发人员的精力,由于录像功能的添加只会对原有代码作很少量的修改,也便利了后续的升级和维护。
附图说明
图1是本发明录像功能的图形应用程序层次结构图;
图2是本发明录像接口运行流程图;
图3是本发明的回放流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
如图1、图2和图3所示,该方法在图形应用程序(Graphic Application,GApp)与图形编程接口(Graphic API,GAPI)层的中间,插入一个录像接口(Recorder Interface,RI)层,用以监视并记录应用程序对绘图API的调用,实现该录像方法的前提条件是已有功能具备正确的图形应用程序,它向图形编程接口发出绘图指令,图形编程接口根据收到的指令向操作系统发出与具体硬件平台关联的绘图指令,在图形显示设备(Graphic Device,GD)上展示出动态图像。
该录像及回放功能包括(1)程序准备阶段,为原有图形应用程序添加录像功能,具体是:
a.编写实现录像功能主体部分的动态/静态链接库或源码库,称作录像链接库(Recorder Linked Library,RLL)。对于每个被应用程序调用的图形编程接口中的函数,录像链接库都提供一个与其具有相同接口(即具有相同的参数列表)的代理函数,该函数完成两部分任务:a1.以相同的参数调用图形编程接口中的相应函数;a2.将表示该函数的数字代号和用以调用此函数的有关参数,记录并进行必要压缩,写入到输出数据流。每一种图形编程接口对应一个录像链接库,只要使用的图形编程接口相同,同一个链接库可反复用于向不同的应用程序添加录像功能。
b.将上一步骤所述的链接库引入到原有的图形应用程序,需要修改原图形应用程序的代码,把对于原图形编程接口的引用改为对于a步骤所述的录像链接库的引用。为了尽量减少该步骤的工作量,录像链接库的编写方式应使得调用原图形编程接口的程序代码与调用录像链接库中对应接口的程序代码相同。
具体地,对于以C、C++或Objective-C等语言编写的程序,a步骤会提供一个供原图形应用程序导入录像链接库的头文件,在其中利用宏定义方式将原图形编程接口的函数名转义成链接库中对应的函数名,则原程序代码只需把导入原图形编程接口头文件的声明语句,改为导入录像链接库头文件的声明语句即可,其它代码无需修改;对于以JAVA编写的程序,可以采用包装模式实现类库的替换,同样可以达到把对原应用程序代码所需的改动量降到最低的目的。
完成了该步骤之后,即得到一个功能表现与原程序相同,但实际上绘图指令经过了录像链接库的中转的新程序。
c.将程序代码与录像链接库编译、链接,生成最终的可执行文件。
(2)录像阶段,经过步骤(1)修改的图形应用程序被执行。在开启录像功能后,由于步骤(1)把程序中所有调用图形编程接口的地方都对调用的函数和参数作了记录,录像数据由此生成。
(3)回放阶段,把录像数据作为录像回放程序的输入,回放程序依次读取文件中的函数代号和函数参数,调用相应的图形编程接口中的绘图函数,使得图形显示设备上产生与录像阶段相同的动态画面。
本发明所实现的游戏录像方法,既非录制程序所生成的最终动态图像,也非仅记录程序所需的关键数据,而是记录图形应用程序对图形编程接口的函数调用,因而兼顾了平台无关性和数据压缩效率;在已有图形应用程序的前提下,为程序添加录像功能的方法,通过把事先实现的录像链接库与已有程序合并编译来生成最终的具备录像功能的程序,解除了游戏主体功能部分与录像功能部分的耦合性,使得游戏开发人员无需关心录像功能的实现,仅需在已有程序基础上少量改动代码就可获得录像功能。
Claims (1)
1.一种基于记录绘图指令的游戏录像及回放方法,其特征在于,在图形应用程序(Graphic Application,GApp)与图形编程接口(Graphic API,GAPI)层的中间,插入一个录像接口(Recorder Interface,RI)层,用以监视并记录应用程序对绘图API的调用,实现该录像方法的前提条件是已有具备正确功能的图形应用程序,它向图形编程接口发出绘图指令,图形编程接口根据收到的指令向操作系统发出与具体硬件平台关联的绘图指令,在图形显示设备(GraphicDevice,GD)上展示出动态图像,该方法包括以下步骤:
(1)、程序准备阶段,为原有图形应用程序添加录像功能,具体是:
a.编写实现录像功能主体部分的动态/静态链接库或源码库,称作录像链接库(Recorder Linked Library,RLL),对于每个被应用程序调用的图形编程接口中的函数,录像链接库都提供一个与其具有相同接口,即具有相同的参数列表的代理函数,该函数完成两部分任务:a1.以相同的参数调用图形编程接口中的相应函数,a2.将表示该函数的数字代号和用以调用此函数的有关参数,记录并进行必要压缩,写入到输出数据流;
b.将上一步骤所述的链接库引入到原有的图形应用程序,需要修改原图形应用程序的代码,把对于原图形编程接口的引用改为对于a步骤所述的录像链接库的引用,录像链接库的编写方式使得调用原图形编程接口的程序代码与调用录像链接库中对应接口的程序代码相同;
c.将程序代码与录像链接库编译、链接,生成最终的可执行文件。
(2)、录像阶段,经过步骤(1)修改的图形应用程序被执行,在开启录像功能后,由于步骤(1)把程序中所有调用图形编程接口的地方都对调用的函数和参数作了记录,录像数据即由此生成。
(3)、回放阶段,把录像数据作为录像回放程序的输入,回放程序依次读取文件中的函数代号和函数参数,调用相应的图形编程接口中的绘图函数,使得图形显示设备上产生与录像阶段相同的动态画面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210227215.8A CN102799432B (zh) | 2012-06-30 | 2012-06-30 | 一种基于记录绘图指令的游戏录像及回放方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210227215.8A CN102799432B (zh) | 2012-06-30 | 2012-06-30 | 一种基于记录绘图指令的游戏录像及回放方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102799432A true CN102799432A (zh) | 2012-11-28 |
CN102799432B CN102799432B (zh) | 2015-01-14 |
Family
ID=47198549
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210227215.8A Expired - Fee Related CN102799432B (zh) | 2012-06-30 | 2012-06-30 | 一种基于记录绘图指令的游戏录像及回放方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102799432B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593184A (zh) * | 2013-10-31 | 2014-02-19 | 福州瑞芯微电子有限公司 | 图像显示系统及图像显示方法 |
CN104375592A (zh) * | 2013-08-12 | 2015-02-25 | 株式会社得那 | 提供游戏用的服务器以及方法 |
WO2015062263A1 (en) * | 2013-10-30 | 2015-05-07 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for recording data of network interaction protocol |
CN104888454A (zh) * | 2014-03-03 | 2015-09-09 | 联想(北京)有限公司 | 一种数据处理方法及相应电子设备 |
CN106039710A (zh) * | 2016-06-28 | 2016-10-26 | 网易(杭州)网络有限公司 | 游戏录制处理方法和装置 |
CN106339335A (zh) * | 2016-09-06 | 2017-01-18 | 中国传媒大学 | 游戏回放过程中随时重玩以及多分支回放的方法和系统 |
US10065121B2 (en) | 2013-10-30 | 2018-09-04 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for recording data of network interaction protocol |
CN108646968A (zh) * | 2018-04-20 | 2018-10-12 | 苏州蜗牛数字科技股份有限公司 | 一种基于图像分析重现场景的方法及系统 |
CN109992467A (zh) * | 2017-12-29 | 2019-07-09 | 天津亚克互动科技有限公司 | 交互式应用产生的数据的解析方法和系统 |
CN110711384A (zh) * | 2019-10-24 | 2020-01-21 | 网易(杭州)网络有限公司 | 游戏历史操作展示方法、装置和设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801899A (zh) * | 2005-08-31 | 2006-07-12 | 珠海市西山居软件有限公司 | 一种游戏录像回放系统 |
CN1862553A (zh) * | 2006-06-02 | 2006-11-15 | 北京金山数字娱乐科技有限公司 | 游戏录像及回放的方法及系统 |
CN101071380A (zh) * | 2007-06-27 | 2007-11-14 | 中兴通讯股份有限公司 | 一种图形用户界面的截取和重现方法 |
US20080268961A1 (en) * | 2007-04-30 | 2008-10-30 | Michael Brook | Method of creating video in a virtual world and method of distributing and using same |
-
2012
- 2012-06-30 CN CN201210227215.8A patent/CN102799432B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801899A (zh) * | 2005-08-31 | 2006-07-12 | 珠海市西山居软件有限公司 | 一种游戏录像回放系统 |
CN1862553A (zh) * | 2006-06-02 | 2006-11-15 | 北京金山数字娱乐科技有限公司 | 游戏录像及回放的方法及系统 |
US20080268961A1 (en) * | 2007-04-30 | 2008-10-30 | Michael Brook | Method of creating video in a virtual world and method of distributing and using same |
CN101071380A (zh) * | 2007-06-27 | 2007-11-14 | 中兴通讯股份有限公司 | 一种图形用户界面的截取和重现方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375592A (zh) * | 2013-08-12 | 2015-02-25 | 株式会社得那 | 提供游戏用的服务器以及方法 |
CN104375592B (zh) * | 2013-08-12 | 2017-07-04 | 株式会社得那 | 提供游戏用的服务器以及方法 |
US10065121B2 (en) | 2013-10-30 | 2018-09-04 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for recording data of network interaction protocol |
WO2015062263A1 (en) * | 2013-10-30 | 2015-05-07 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for recording data of network interaction protocol |
CN103593184B (zh) * | 2013-10-31 | 2016-08-17 | 福州瑞芯微电子股份有限公司 | 图像显示系统及图像显示方法 |
CN103593184A (zh) * | 2013-10-31 | 2014-02-19 | 福州瑞芯微电子有限公司 | 图像显示系统及图像显示方法 |
CN104888454A (zh) * | 2014-03-03 | 2015-09-09 | 联想(北京)有限公司 | 一种数据处理方法及相应电子设备 |
CN106039710A (zh) * | 2016-06-28 | 2016-10-26 | 网易(杭州)网络有限公司 | 游戏录制处理方法和装置 |
CN106339335A (zh) * | 2016-09-06 | 2017-01-18 | 中国传媒大学 | 游戏回放过程中随时重玩以及多分支回放的方法和系统 |
CN106339335B (zh) * | 2016-09-06 | 2019-05-03 | 中国传媒大学 | 游戏回放过程中随时重玩以及多分支回放的方法和系统 |
CN109992467A (zh) * | 2017-12-29 | 2019-07-09 | 天津亚克互动科技有限公司 | 交互式应用产生的数据的解析方法和系统 |
CN109992467B (zh) * | 2017-12-29 | 2023-04-18 | 天津亚克互动科技有限公司 | 交互式应用产生的数据的解析方法和系统 |
CN108646968A (zh) * | 2018-04-20 | 2018-10-12 | 苏州蜗牛数字科技股份有限公司 | 一种基于图像分析重现场景的方法及系统 |
CN110711384A (zh) * | 2019-10-24 | 2020-01-21 | 网易(杭州)网络有限公司 | 游戏历史操作展示方法、装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102799432B (zh) | 2015-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102799432B (zh) | 一种基于记录绘图指令的游戏录像及回放方法 | |
CN111669623B (zh) | 视频特效的处理方法、装置以及电子设备 | |
US10410673B2 (en) | Embeddable video capturing, processing and conversion application | |
CN104796767A (zh) | 一种云视频编辑方法和系统 | |
EP2409223A2 (en) | Hosted application platform with extensible media format | |
CN111225232B (zh) | 基于视频的贴纸动画引擎、实现方法、服务器和介质 | |
CN104025031B (zh) | 减少应用中对共享存储器单元执行的顺序操作的数量 | |
CN104091607A (zh) | 一种基于ios设备的视频编辑方法及装置 | |
CN116302366B (zh) | 面向终端开发的xr应用开发系统与方法、设备及介质 | |
CN104091608A (zh) | 一种基于ios设备的视频编辑方法及装置 | |
CN110097464B (zh) | 智能合约的生成方法、装置、电子设备与存储介质 | |
Zorrilla et al. | HTML5-based system for interoperable 3D digital home applications | |
CN109076250A (zh) | 交互式音频元数据处置 | |
CN114449295A (zh) | 视频处理方法、装置、电子设备及存储介质 | |
Ensom et al. | Preserving virtual reality artworks | |
Fu et al. | Research on audio/video codec based on Android | |
CN103544007A (zh) | 一种模拟机顶盒功能的装置、终端设备及方法 | |
CN117065357A (zh) | 媒体数据处理方法、装置、计算机设备和存储介质 | |
CN111265875B (zh) | 一种用于游戏角色装备展示的方法与设备 | |
CN110837367B (zh) | 用户界面处理方法、装置及电子设备 | |
CN103136011B (zh) | 一种便携式多媒体设备及其操作方法 | |
Kačeniauskas et al. | VizLitG: grid visualization e-service enabling partial dataset transfer from storage elements of glite-based grid infrastructure | |
CN117009029B (zh) | Xr应用与内容运行方法、设备及存储介质 | |
CN116339737B (zh) | Xr应用编辑方法、设备及存储介质 | |
CN104485123A (zh) | 一种地铁线路运营场景回放的方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150114 Termination date: 20190630 |
|
CF01 | Termination of patent right due to non-payment of annual fee |