android 录像工具,Android 屏幕录制(Surface\ Texture 录制)工具库

你是否常常因为产品需要录制屏幕而不要状态栏而烦闷 ??

你是不是常常因为产品需要录制直播视频而加班 ??

你是不是常常因为要对一个surface同时录制两种Texture 分别存在的视频 (!!???)而恶心致死?

嗯。。。我是第三种。于是便诞生了下面这个工具库。也希望能够解决对OpenGLES 和 视频编码不熟悉的同学的噩梦

ZTextureRecorder 的核心功能是,接收一个纹理,然后在每一帧绘制这个纹理(同时和外界的声音)最后编码成为一个视频文件。

先上代码: 戳我看源码

目前ZTextureRecorder 支持 使用MediaRecorder 和MediaCodec(硬编码API) 进行录制。支持 Texture_2D普通纹理和 Texture_Ext Android扩展纹理作为输入。

需要注意的是,由于库本身不创建GL线程,因此需要传入GLContext 或者 在一个GL线程中初始化(以便通过Android EGL API 获取当前线程的 GLContext)。 这里会推荐使用GLSurfaceView 去承载和初始化GL上下文,当然如果是离屏渲染,可能需要自行创建GL线程及上下文。

怎么使用?

只需要五步就可以管理对texture 的录制,并轻松生成mp4 文件。

init capturing params: 用纹理的宽高, 文件地址、以及 纹理类型

capturingManager.initCapturing(textureWidth, textureHeight,

toSaveFilePath,

Texture2dProgram.ProgramType.TEXTURE_EXT,

encoderType, eglContext);

start capturing manager:

capturingManager.startCapturing()

pass texture of each frame into it

capturingManager.captureFrame(textureId)

stop at proper time

capturingManger.stop();

release on component destroyed

capturingManger.release();

结构和核心技术点

结构

主要由GL图片帧产生线程 源码 和编码核心模块组成。

这里主要是通过OpenGL 再次将Texture 渲染到编码核心模块提供的Surface 上,由于OpenGL 相关信息自成体系,并且较多,感兴趣的同学可以通过 这篇文章 学习

其中编码核心模块分为mediaRecorder模块和mediaCodec 模块。

前者是高度集成的API,只包含简单调用。 源码

后者中集成了音频录制核心 源码 和帧录制核心 源码 。两个线程录制的同时需要通过Muxer 进行合成,以得到包含画面和声音的mp4 文件

That's all

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值