android4.3 camera,android – 如何将相机预览传递给MediaCodec.createInputSurface()创建的Surface?...

从Android 4.3(API 18)开始,

bigflake CameraToMpegTest方法是正确的.

EGL / SurfaceTexture开销目前是不可避免的,特别是对于您在目标2中要做的事情.想法是:

>配置相机将输出发送到SurfaceTexture.这使得相机输出可用于GLES作为“外部纹理”.

将SurfaceTexture渲染到MediaCodec#createInputSurface()返回的Surface上.它为视频编码器供电.

>再次将SurfaceTexture渲染到GLSurfaceView.它将其放在显示屏上进行实时预览.

所发生的唯一数据复制由GLES驱动程序执行,因此您正在进行硬件加速的blits,这将很快.

唯一棘手的一点是您希望外部纹理可用于两个不同的EGL上下文(一个用于MediaCodec,一个用于GLSurfaceView).您可以在bigflake的“Android Breakout游戏记录器补丁”示例中看到一个创建共享上下文的示例 – 它将游戏两次呈现给屏幕,一次到MediaCodec编码器.

更新:这是在Grafika(“显示捕获相机”)中实现的.

更新:“显示捕捉相机”方法的多上下文方法是somewhat flawed.“连续捕获”活动使用一个简单的SurfaceView,并且能够使用单个EGL上下文进行屏幕渲染和视频录制.这是推荐的.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值