CN105749550A - iOS系统手机游戏录像方法 - Google Patents
iOS系统手机游戏录像方法 Download PDFInfo
- Publication number
- CN105749550A CN105749550A CN201610100433.3A CN201610100433A CN105749550A CN 105749550 A CN105749550 A CN 105749550A CN 201610100433 A CN201610100433 A CN 201610100433A CN 105749550 A CN105749550 A CN 105749550A
- Authority
- CN
- China
- Prior art keywords
- game
- api
- mobile phone
- picture
- function
- 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.)
- Pending
Links
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/20—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform
- A63F2300/204—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform the platform being a handheld device
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/538—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for performing operations on behalf of the game client, e.g. rendering
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
Abstract
本发明公开了手机游戏技术领域的一种用于手机游戏视频分享互动的iOS系统手机游戏录像方法。所述的手机游戏录像方法是将一个具有API拦截功能的录像模块注入到游戏APP的执行文件中,动态拦截游戏画面渲染相关的API,在不影响游戏功能的同时获取游戏画面,并通过压缩编码处理,传输数据给外部程序或直播平台,录像模块包括进程注入、API拦截、内存扫描和图像采集压缩。本发明可完美的实现iOS手机游戏的画面录像功能,实现手机游戏的互动和直播,提高手机游戏的趣味性。
Description
技术领域
本发明涉及手机游戏技术领域的一种用于手机游戏视频分享互动的iOS系统手机游戏录像方法。
背景技术
电子游戏是人们日常休闲娱乐的重用组成部分,拥有大量的玩家和爱好者,随着移动终端手机的普及,手机游戏越来越受到人们的青睐,为实现手机游戏视频的分享和互动,现在市面上广泛运用的录像技术方案是通过iOS提供的私有API从抽象的显卡驱动层中获取当前正在显示的游戏APP的画面。通过该录像技术可以让游戏主播们不借助第三方设备(PC)就可以实现边玩游戏边直播的功能。iOS录像APP可以将游戏画面实时传输到各类直播平台,也可以将画面保存成视频文件,但iOS手机游戏录像技术不能运用于iOS9.0以及之后的系统,原因是iOS系统封闭了屏幕图像获取的API,导致录像APP无法获取到显示缓存的图像数据。游戏主播们必须借助第三方设备或者其他较复杂的技术手段才能进行游戏直播。
发明内容
本发明的目的是克服现有技术的不足,通过进程注入、API拦截和内存扫描等软件技术,可以实现在无需第三方设备的情况下,对指定游戏的显示画面进行录像。另外,由于本发明没有使用到iOS系统的私有API,所以不会受到iOS系统升级的影响,具有长期可操作性。
本发明是通过以下技术方案实现的:
一种iOS系统手机游戏录像方法,其特征在于:所述的手机游戏录像方法是将一个具有API拦截功能的录像模块注入到游戏APP的执行文件中,动态拦截游戏画面渲染相关的API,在不影响游戏功能的同时获取游戏画面,并通过压缩编码处理,传输数据给外部程序或直播平台;录像模块包括进程注入、API拦截、内存扫描和图像采集压缩;将该录像模块注入到游戏APP的执行文件,动态拦截游戏画面渲染相关的API,从而在不影响游戏功能的同时获取游戏画面,并通过压缩编码处理,传输数据给外部程序或直播平台;所述的进程注入是将游戏画面截取录像功能编译成一个动态链接库,通过LC_LOAD_DYLIB命令注入到游戏执行文件中,最终将动态链接库通过LC_LOAD_DYLIB命令登记在文件头部,通过工具修改执行文件添加需要需要的动态链接库使用注入的方式,可以极大的方便游戏开发商和游戏发行商,不需要对游戏程序进行任何代码修改,只需要将程序模块打包到安装包中去即可;所述的API拦截是通过对OpenGLES渲染接口或Metal渲染接口的处理进行拦截,便可以在游戏画面渲染前后,执行我们的代码从而获取到游戏画面数据;所述的内存扫描是通过拦截游戏引擎的API后使用游戏进程BSS段内存扫描的技术来获取渲染参数设置,根据iPhone的GPU配置,调整渲染方式;所述的图像采集压缩通过动态拦截技术,我们可以在系统渲染API被调用的时候,预先执行我们自己的代码,利用这些代码我们可以获取游戏的图像数据,并压缩成H264格式输出。
本发明可完美的实现iOS手机游戏的画面录像功能,同时不会对手机游戏本身造成任何影响,实现手机游戏的互动和直播,提高手机游戏的趣味性,且游戏开发商也不需要有任何额外的工作。
附图说明
图1为iOS系统手机游戏录像方法结构示意图;
图2为iOS系统手机游戏录像方法工作原理图;
图3为交换前后的函数示意图;
图4为游戏画面采集压缩实例图;
图5为游戏引擎API拦截以及内存扫描实例图。
具体实施方式
下面结合附图和具体应用实例对本发明的内容作进一步的说明:
录像模块大致的工作原理如图2所示,
录像模块的工作主要牵涉到四方面的技术点:进程注入/API拦截/内存扫描/图像采集压缩。下面我们结合具体的游戏引擎和代码片段来介绍录像模块的工作原理。
(1)进程注入
我们将游戏画面截取录像功能编译成一个动态链接库,通过LC_LOAD_DYLIB命令注入到游戏执行文件中。
iOS系统的执行文件是Mach-O格式,借助MachOView这个工具可以看到,程序所需要的动态链接库都会通过LC_LOAD_DYLIB命令登记在文件头部。如下图所示。
通过工具修改执行文件,添加需要需要的动态链接库即可实现注入效果。
使用注入的方式,可以极大的方便游戏开发商和游戏发行商,不需要对游戏程序进行任何代码修改,只需要将程序模块打包到安装包中去即可。(*开发商也可选择通过xcode开发工具在编译阶段注入动态链接库,同样不需要修改任何代码)(2)系统渲染API拦截
iOS系统从8.0开始支持两种渲染接口,一种是通过OpenGLES接口渲染,还有一种是通过Metal接口渲染。使用OpenGLES渲染必然会用到EAGLContext这个类,使用Metal渲染必然会用到CAMetalLayer这个类。只需要分别针对这两个类的处理进行拦截,便可以在游戏画面渲染前后,执行我们的代码从而获取到游戏画面数据。
Metal接口是苹果公司为iOS设备度身定制的渲染方式,A7及以上的CPU可支持。较传统的OpenGLES有更好的渲染性能。
下面我们以Metal接口为例介绍拦截以及获取游戏图像的过程。
拦截操作我们利用objective-c语言的动态特性来实现。以CAMetalLayer这个类为例,CAMetalLayer中有下面这个获取画布的函数,该函数在每次游戏画面渲染前会被调用,nextDrawable被调用的时候,上一次调用返回的画布肯定已经完成了渲染,这样我们可以在nextDrawable函数中得到已经渲染完成的画布。
(nullableid<CAMetalDrawable>)nextDrawable;
我们使用class_getInstanceMethod这个系统函数获取到CAMetalLayer中该函数的地址,然后利用method_exchangeImplementations这个系统函数把我们制作的swizzling_nextDrawable函数和nextDrawable进行替换。在我们制作的swizzling_nextDrawable函数中,调用原本的nextDrawable函数。这样就可以在渲染的过程中植入我们的方法。交换前后的函数示意图如图3。
备注:EAGLContext这个类可以替换它的presentRenderbuffer函数,工作机制同上。
(3)游戏画面采集压缩
如上所述,通过动态拦截技术,我们可以在系统渲染API被调用的时候,预先执行我们自己的代码,利用这些代码我们可以获取游戏的图像数据。
如图4所示为以swizzling_nextDrawable这个函数的实例。为了完成压缩和数据传输,通常还需要创建一个工作者线程,该线程读取压缩队列中的画布,压缩编码并通过网络传输给录像APP或者第三方直播平台。
(4)游戏引擎API拦截以及内存扫描
图5为游戏引擎API拦截以及内存扫描实例图。某些游戏引擎会同时支持Metal渲染接口和OpenGLES渲染接口,但是游戏开发商并没有开启更高级的Metal渲染接口。我们可以通过拦截游戏引擎的API并结合进程内存扫描的技术来获取渲染参数设置,根据iPhone的GPU配置,调整渲染方式从而提高录像效率。
以著名的Unity3D引擎为例,该引擎有一个UnityAppController类,该类的selectRenderingAPI方法负责选择渲染接口。通过拦截该方法,可以获取到当前游戏引擎选择的渲染方式,如果当前设备支持Metal渲染,我们可以结合内存扫描技术来修改它当前的渲染方式。
(5)方案总结
综上所述,利用本发明的技术方案,结合Unity引擎和iOS渲染API的特性,可以完美的实现iOS手机游戏的画面录像功能。同时不会对手机游戏本身造成任何影响,游戏开发商也不需要有任何额外的工作。
针对其他的游戏引擎,我们依然可以利用本发明的思想,结合游戏引擎本身的特性,实现游戏的画面录像。这里不再一一赘述。
Claims (5)
1.一种iOS系统手机游戏录像方法,其特征在于:所述的手机游戏录像方法是将一个具有API拦截功能的录像模块注入到游戏APP的执行文件中,动态拦截游戏画面渲染相关的API,在不影响游戏功能的同时获取游戏画面,并通过压缩编码处理,传输数据给外部程序或直播平台,录像模块包括进程注入、API拦截、内存扫描和图像采集压缩。
2.根据权利要求1所述的iOS系统手机游戏录像方法,其特征在于:所述的进程注入是将游戏画面截取录像功能编译成一个动态链接库,通过LC_LOAD_DYLIB命令注入到游戏执行文件中,最终将动态链接库通过LC_LOAD_DYLIB命令登记在文件头部。
3.根据权利要求1所述的iOS系统手机游戏录像方法,其特征在于:所述的API拦截是通过对OpenGLES渲染接口或Metal渲染接口的处理进行拦截,便可以在游戏画面渲染前后,执行我们的代码从而获取到游戏画面数据。
4.根据权利要求1所述的iOS系统手机游戏录像方法,其特征在于:所述的内存扫描是通过拦截游戏引擎的API后使用游戏进程BSS段内存扫描的技术来获取渲染参数设置,根据iPhone的GPU配置,调整渲染方式。
5.根据权利要求1所述的iOS系统手机游戏录像方法,其特征在于:所述的图像采集压缩是通过动态拦截技术,我们可以在系统渲染API被调用的时候,预先执行我们自己的代码,利用这些代码我们可以获取游戏的图像数据,并压缩成H264格式输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610100433.3A CN105749550A (zh) | 2016-02-24 | 2016-02-24 | iOS系统手机游戏录像方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610100433.3A CN105749550A (zh) | 2016-02-24 | 2016-02-24 | iOS系统手机游戏录像方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105749550A true CN105749550A (zh) | 2016-07-13 |
Family
ID=56330260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610100433.3A Pending CN105749550A (zh) | 2016-02-24 | 2016-02-24 | iOS系统手机游戏录像方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105749550A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106973330A (zh) * | 2017-03-20 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种屏幕直播方法、装置和系统 |
CN107146276A (zh) * | 2017-03-31 | 2017-09-08 | 福建天泉教育科技有限公司 | 一种对Unity3D程序进行全景视频录制方法及系统 |
CN107241654A (zh) * | 2017-06-27 | 2017-10-10 | 苏州蜗牛数字科技股份有限公司 | 一种云端加速渲染集群全景游戏直播系统及方法 |
CN108446146A (zh) * | 2018-03-22 | 2018-08-24 | 北京奇艺世纪科技有限公司 | 一种游戏数据采集方法及装置 |
CN109246480A (zh) * | 2018-08-24 | 2019-01-18 | 苏州玩友时代科技股份有限公司 | 一种基于ios系统的游戏屏幕录屏方法及装置 |
CN109725924A (zh) * | 2017-10-27 | 2019-05-07 | 深圳安软信创技术有限公司 | 一种基于iOS应用的功能集成方法 |
CN109821236A (zh) * | 2019-01-18 | 2019-05-31 | 恒信东方文化股份有限公司 | 一种实时图像的提取方法 |
CN112717378A (zh) * | 2021-01-04 | 2021-04-30 | 厦门梦加网络科技股份有限公司 | 一种游戏动画发送系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102254079A (zh) * | 2010-05-17 | 2011-11-23 | 张静盛 | 开放式的游戏内置平台 |
CN103023872A (zh) * | 2012-11-16 | 2013-04-03 | 杭州顺网科技股份有限公司 | 一种云游戏服务平台 |
CN103853576A (zh) * | 2012-12-06 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 一种截图方法,及装置 |
CN104424022A (zh) * | 2013-08-30 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 屏幕录制方法及装置 |
CN104941182A (zh) * | 2015-06-17 | 2015-09-30 | 北京乐动卓越科技有限公司 | 一种游戏录像播放方法及系统 |
CN105072461A (zh) * | 2015-07-03 | 2015-11-18 | 北京奇虎科技有限公司 | 一种数据处理方法和装置 |
-
2016
- 2016-02-24 CN CN201610100433.3A patent/CN105749550A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102254079A (zh) * | 2010-05-17 | 2011-11-23 | 张静盛 | 开放式的游戏内置平台 |
CN103023872A (zh) * | 2012-11-16 | 2013-04-03 | 杭州顺网科技股份有限公司 | 一种云游戏服务平台 |
CN103853576A (zh) * | 2012-12-06 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 一种截图方法,及装置 |
CN104424022A (zh) * | 2013-08-30 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 屏幕录制方法及装置 |
CN104941182A (zh) * | 2015-06-17 | 2015-09-30 | 北京乐动卓越科技有限公司 | 一种游戏录像播放方法及系统 |
CN105072461A (zh) * | 2015-07-03 | 2015-11-18 | 北京奇虎科技有限公司 | 一种数据处理方法和装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106973330A (zh) * | 2017-03-20 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种屏幕直播方法、装置和系统 |
CN106973330B (zh) * | 2017-03-20 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 一种屏幕直播方法、装置和系统 |
CN107146276A (zh) * | 2017-03-31 | 2017-09-08 | 福建天泉教育科技有限公司 | 一种对Unity3D程序进行全景视频录制方法及系统 |
CN107241654A (zh) * | 2017-06-27 | 2017-10-10 | 苏州蜗牛数字科技股份有限公司 | 一种云端加速渲染集群全景游戏直播系统及方法 |
CN109725924A (zh) * | 2017-10-27 | 2019-05-07 | 深圳安软信创技术有限公司 | 一种基于iOS应用的功能集成方法 |
CN108446146A (zh) * | 2018-03-22 | 2018-08-24 | 北京奇艺世纪科技有限公司 | 一种游戏数据采集方法及装置 |
CN108446146B (zh) * | 2018-03-22 | 2022-03-08 | 北京奇艺世纪科技有限公司 | 一种游戏数据采集方法及装置 |
CN109246480A (zh) * | 2018-08-24 | 2019-01-18 | 苏州玩友时代科技股份有限公司 | 一种基于ios系统的游戏屏幕录屏方法及装置 |
CN109821236A (zh) * | 2019-01-18 | 2019-05-31 | 恒信东方文化股份有限公司 | 一种实时图像的提取方法 |
CN109821236B (zh) * | 2019-01-18 | 2022-02-22 | 恒信东方文化股份有限公司 | 一种实时图像的提取方法 |
CN112717378A (zh) * | 2021-01-04 | 2021-04-30 | 厦门梦加网络科技股份有限公司 | 一种游戏动画发送系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105749550A (zh) | iOS系统手机游戏录像方法 | |
CN106230841B (zh) | 一种基于终端的网络直播中视频实时美颜及推流的方法 | |
KR102340358B1 (ko) | 그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷 | |
CN111193876B (zh) | 视频中添加特效的方法及装置 | |
CN104811787A (zh) | 游戏视频录制方法及装置 | |
CN105404455B (zh) | 利用终端对移动终端实现截屏的方法及装置 | |
CN110012336B (zh) | 直播界面的图片配置方法、终端及装置 | |
CN106028092A (zh) | 一种电视截屏的分享方法及装置 | |
CN107426598B (zh) | 一种弹幕信息处理方法及注入模块 | |
CN110049347B (zh) | 在直播界面配置图像的方法、系统、终端和装置 | |
CN110881046A (zh) | 一种云手机对接WebRTC协议的方法、装置、介质及终端设备 | |
CN103116482B (zh) | 基于拼接墙的图片播放方法及装置 | |
WO2020037754A1 (zh) | 一种增强视频画质的方法和装置 | |
CN112188087B (zh) | 一种全景视频的截图方法、装置、存储介质和计算机设备 | |
CN108667720A (zh) | 一种用于子弹时间视频的实时分享方法及系统 | |
CN102883188A (zh) | 实时下载播放mp4文件的方法和系统 | |
CN1393000A (zh) | 数据处理系统和方法、计算机程序和记录介质 | |
CN110865864A (zh) | 快应用的界面显示方法、装置、设备及存储介质 | |
US8813041B2 (en) | Efficient compression of applications | |
CN112419456A (zh) | 一种特效画面生成方法和装置 | |
CN109102416A (zh) | 基于智能终端的直播电视社交方法及系统、智能终端 | |
CN109218715A (zh) | 图像的自动调整方法、系统及存储介质 | |
CN108933969A (zh) | 一种实现数字电视视频动画的方法及系统 | |
CN110990109B (zh) | 一种拼接屏回显方法、终端、系统及存储介质 | |
KR20130077246A (ko) | 스마트디바이스 상에서 파노라마 동영상 재생시 cpu에 의한 과도 처리 경감방법 및 과도 처리 경감시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160713 |