一种基于安卓机顶盒平台的多引擎抓图录屏方法技术

技术编号:24363317 阅读:33 留言:0更新日期:2020-06-03 04:10
本发明专利技术公开了一种基于安卓机顶盒平台的多引擎抓图录屏方法,包括初始化模块、多引擎渲染统一接口模块、多引擎通用纹理生成、多引擎渲染模块、纹理视频编码模块和推流模块,所述初始化模块包括机顶盒安卓应用端集成环境初始化和服务器cdn接收服务启动初始化,本发明专利技术创建出一整套多引擎统一渲染接口和多引擎通用纹理生成接口;再利用hook opengles技术将各引擎系统的渲染环境切换成自己创建好的egl环境,把各引擎渲染好的纹理数据通过fbo、pbo拷贝到统一渲染纹理;最后把统一的纹理放到自己的egl渲染环境进行渲染,本发明专利技术的所有核心功能都使用C++实现,接口统一,性能高。

A multi engine screen capturing and recording method based on Android set top box platform

【技术实现步骤摘要】
一种基于安卓机顶盒平台的多引擎抓图录屏方法
本专利技术涉及计算机领域,具体为一种基于安卓机顶盒平台的多引擎抓图录屏方法。
技术介绍
随着智能电视的逐渐普及,用户在电视上玩游戏越来越流行,大屏体验带给用户的快感是手机电脑无法达到的。每当用户玩到尽兴时,都希望将精彩的画面抓图录屏,实时地分享给他人。市面上存在的安卓抓图录屏方法有两种:一是安卓应用自带的(如安卓游戏自带的录屏功能),采用的纯hookopengles技术进行抓图录屏,该方法虽高效,但有的引擎是无法兼容(比如unity5.2以后的版本),方法并不通用;二是通用的安卓抓图录屏软件,采用对整个屏幕进行抓图录屏的方式,该方法较通用,但要求系统基于Android5.0以上版本,而且图像数据需要经历先把gpu管道渲染数据一行一行拷贝到cpu缓存中然后再编码的过程,数据流向是gpu-cpu-gpu,效率并不高。而智能电视的机顶盒大多使用的是低版本的安卓系统(Android4.4或更低),对于没有自带抓图录屏功能的机顶盒应用来说,就无法实时地进行抓图录屏了,这样就使得用户的体验大大打折扣。
技术实现思路
本专利技术的目的是针对现有技术的缺陷,提供一种基于安卓机顶盒平台的多引擎抓图录屏方法,以解决上述
技术介绍
提出的问题。为实现上述目的,本专利技术提供如下技术方案:一种基于安卓机顶盒平台的多引擎抓图录屏方法,包括初始化模块、多引擎渲染统一接口模块、多引擎通用纹理生成、多引擎渲染模块、纹理视频编码模块和推流模块,所述初始化模块包括机顶盒安卓应用端集成环境初始化和服务器cdn接收服务启动初始化,所述多引擎渲染统一接口模块包括统一接口定义到各引擎的位置模块和统一接口参数到各引擎层的含义定义模块,所述多引擎通用纹理生成包括多引擎的纹理获取模块、多引擎纹理参数生成模块和引擎到opengl纹理的转换模块,所述多引擎渲染模块包括多引擎渲染初始化模块、通用opengles渲染环境初始化、多引擎获取rendertarget纹理模块和引擎rendertarget到统一纹理渲染模块,所述纹理视频编码模块包括软硬编码能力分析模块、硬编码初始模块、软编码初始模块、纹理到编码系统的egl渲染环境创建模块、纹理转到硬编码mediacodec模块、纹理转到软编码模块和编码结果输出模块,所述推流模块包括网络环境分析模块和音视频数据发送模块。作为本专利技术的一种优选技术方案,所述机顶盒安卓应用端集成环境初始化包括代码和图片资源初始化和sdk各接口集成。作为本专利技术的一种优选技术方案,所述纹理转到软编码模块包括纹理到cpu缓存模块。作为本专利技术的一种优选技术方案,所述初始化模块分别与多引擎渲染统一接口模块和多引擎通用纹理生成连接,所述多引擎渲染统一接口模块和多引擎通用纹理生成均与多引擎渲染模块连接,所述纹理视频编码模块分别与多引擎渲染模块和推流模块连接。作为本专利技术的一种优选技术方案,所述初始化模块为启动接收音视频流,环境空间初始化,监控程序自启动。作为本专利技术的一种优选技术方案,所述多引擎渲染统一接口模块统一了多引擎渲染接口,每个引擎都按opengles标准来做渲染拷贝;定义了initCapturer、bineFbo、drawTexture、captureFrame、unbineFbo和stopCapturer统一引擎接口;还定义了渲染一帧结束swapEGLBuffers方法,即利用fbo、pbo、androidgpu共享内存GraphicBuffer,来生成对应的rendertarget来替换引擎的rendertarget。作为本专利技术的一种优选技术方案,所述多引擎通用纹理生成是将各引擎的纹理转成通用的opengl纹理,这个模块统一输出通用opengl纹理id;所述多引擎渲染模块是清理各引擎系统的渲染环境,切换成自己创建好的egl环境,hook渲染环境,切换成自己渲染Shader脚本,绑定各引擎的统一纹理,把各引擎渲染好的纹理数据通过fbo、pbo拷贝到统一渲染纹理。作为本专利技术的一种优选技术方案,所述纹理视频编码模块是根据MediaCodec的createInputSurface创建出surface,然后根据surface创建egl渲染环境,把统一的纹理textureid放到之前创建好的egl渲染环境进行渲染,这样MediaCodec的就有数据输入,然后MediaCodec取编码缓存索引dequeueOutputBuffer,再取getOutputBuffers编码数据送给推流模块。作为本专利技术的一种优选技术方案,所述推流模块是把由纹理视频编码模块得到的编码数据转成rtmp数据,推送给客户端或者cdn服务器。本专利技术的有益效果是:本专利技术创建出一整套多引擎统一渲染接口和多引擎通用纹理生成接口;再利用hookopengles技术将各引擎系统的渲染环境切换成自己创建好的egl环境,把各引擎渲染好的纹理数据通过fbo、pbo拷贝到统一渲染纹理;最后把统一的纹理放到自己的egl渲染环境进行渲染,本专利技术的所有核心功能都使用C++实现,接口统一,性能高。附图说明图1为本专利技术的流程模块图;包括:10、初始化模块;11、机顶盒安卓应用端集成环境初始化;111、代码和图片资源初始化;112、sdk各接口集成;12、服务器cdn接收服务启动初始化;20、多引擎渲染统一接口模块;21、统一接口定义到各引擎的位置模块;22、统一接口参数到各引擎层的含义定义模块;30、多引擎通用纹理生成;31、多引擎的纹理获取模块;32、多引擎纹理参数生成模块;33、引擎到opengl纹理的转换模块;40、多引擎渲染模块;41、多引擎渲染初始化模块;42、通用opengles渲染环境初始化;43、多引擎获取rendertarget纹理模块;44、引擎rendertarget到统一纹理渲染模块;50、纹理视频编码模块;51、软硬编码能力分析模块;52、硬编码初始模块;53、软编码初始模块;54、纹理到编码系统的egl渲染环境创建模块;55、纹理转到硬编码mediacodec模块;56、纹理转到软编码模块;561、纹理到cpu缓存模块;57、编码结果输出模块;60、推流模块;61、网络环境分析模块;62、音视频数据发送模块。具体实施方式下面结合附图对本专利技术的较佳实施例进行详细阐述,以使本专利技术的优点和特征能更易被本领域人员理解,从而对本专利技术的保护范围做出更为清楚明确的界定。实施例:请参阅图1,本专利技术提供一种技术方案:一种基于安卓机顶盒平台的多引擎抓图录屏方法,包括初始化模块10、多引擎渲染统一接口模块20、多引擎通用纹理生成30、多引擎渲染模块40、纹理视频编码模块50和推流模块60,初始化模块10包括机顶盒安卓应用端集成环境初始化11和服务器cdn接收服务启动初始化12,多引擎渲染统一接口模块20包括统一接口定义到各引擎的位置模块21和统一接口参数到各引擎层的含义定义模块22,多引擎通用纹理生成30包括多引擎的纹理获取模块31、多引擎纹理参数生成模块本文档来自技高网...

【技术保护点】
1.一种基于安卓机顶盒平台的多引擎抓图录屏方法,包括初始化模块(10)、多引擎渲染统一接口模块(20)、多引擎通用纹理生成(30)、多引擎渲染模块(40)、纹理视频编码模块(50)和推流模块(60),其特征在于:所述初始化模块(10)包括机顶盒安卓应用端集成环境初始化(11)和服务器cdn接收服务启动初始化(12),所述多引擎渲染统一接口模块(20)包括统一接口定义到各引擎的位置模块(21) 和统一接口参数到各引擎层的含义定义模块(22),所述多引擎通用纹理生成(30)包括多引擎的纹理获取模块(31)、多引擎纹理参数生成模块(32)和引擎到opengl纹理的转换模块(33),所述多引擎渲染模块(40)包括多引擎渲染初始化模块(41)、通用opengles渲染环境初始化(42)、多引擎获取rendertarget纹理模块(43)和引擎rendertarget到统一纹理渲染模块(44),所述纹理视频编码模块(50)包括软硬编码能力分析模块(51)、硬编码初始模块(52)、软编码初始模块(53)、纹理到编码系统的egl渲染环境创建模块(54)、纹理转到硬编码mediacodec模块(55)、纹理转到软编码模块(56)和编码结果输出模块(57),所述推流模块(60)包括网络环境分析模块(61)和音视频数据发送模块(62)。/n...

【技术特征摘要】
1.一种基于安卓机顶盒平台的多引擎抓图录屏方法,包括初始化模块(10)、多引擎渲染统一接口模块(20)、多引擎通用纹理生成(30)、多引擎渲染模块(40)、纹理视频编码模块(50)和推流模块(60),其特征在于:所述初始化模块(10)包括机顶盒安卓应用端集成环境初始化(11)和服务器cdn接收服务启动初始化(12),所述多引擎渲染统一接口模块(20)包括统一接口定义到各引擎的位置模块(21)和统一接口参数到各引擎层的含义定义模块(22),所述多引擎通用纹理生成(30)包括多引擎的纹理获取模块(31)、多引擎纹理参数生成模块(32)和引擎到opengl纹理的转换模块(33),所述多引擎渲染模块(40)包括多引擎渲染初始化模块(41)、通用opengles渲染环境初始化(42)、多引擎获取rendertarget纹理模块(43)和引擎rendertarget到统一纹理渲染模块(44),所述纹理视频编码模块(50)包括软硬编码能力分析模块(51)、硬编码初始模块(52)、软编码初始模块(53)、纹理到编码系统的egl渲染环境创建模块(54)、纹理转到硬编码mediacodec模块(55)、纹理转到软编码模块(56)和编码结果输出模块(57),所述推流模块(60)包括网络环境分析模块(61)和音视频数据发送模块(62)。


2.根据权利要求1所述的一种基于安卓机顶盒平台的多引擎抓图录屏方法,其特征在于:所述机顶盒安卓应用端集成环境初始化(11)包括代码和图片资源初始化(111)和sdk各接口集成(112)。


3.根据权利要求1所述的一种基于安卓机顶盒平台的多引擎抓图录屏方法,其特征在于:所述纹理转到软编码模块(56)包括纹理到cpu缓存模块(561)。


4.根据权利要求1所述的一种基于安卓机顶盒平台的多引擎抓图录屏方法,其特征在于:所述初始化模块(10)分别与多引擎渲染统一接口模块(20)和多引擎通用纹理生成(30)连接,所述多引擎渲染统一接口模块(20)和多引擎通用纹理生成(30)均与多引擎渲染模块(40)连接,所述纹理视频编码模块(50)分别与多引擎渲染模块(40)和推流模块(60)连接。

【专利技术属性】
技术研发人员:洪清泉齐培娣陆一何涛
申请(专利权)人:上海小麦互动企业发展有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1