同时获取Camera预览和录像视频流

本文详细介绍了如何在Android设备上同时获取Camera的预览和录像视频流,重点在于如何添加接口和处理录像数据流,包括解决分辨率设置、数据回调、内存管理和图像格式问题。
摘要由CSDN通过智能技术生成

介绍除了默认的Preview数据流之外,增加录像数据流。要求同时获取,并能够支持不同的分辨率。

1. 描述

高通平台支持同时获取Preview和录像,要获取双路视频流的话,除了Android系统默认支持获取Preview的数据流外,只需要在软件层面增加获取录像数据流的操作。以下详细介绍如何获取录像的数据流,Preview不做介绍。

2. 分析

首先,camera AF层基本的框架图如下:
这里写图片描述
Camera的录像的数据流程如下:
这里写图片描述

可以看出,录像的数据由HAL层回调到Framework层的Camera.cpp中,但并没有将数据丢到对应的Camera.java中,而是丢到CameraSource中,然后OMX Codec通过CameraSource获取数据,直接进行编码存储。
通过Preview和录像的数据流程可以看出,两路数据都会由HAL层回调到在Framework层的Camera.cpp中,对APP 层来说,此处就是数据的源头。由于Android中录像是通过MediaRecorder实现的,但是真正是由Stagefright框架来完成的,MediaRecorder并不直接接触到数据。如果通过MediaRecorder实现数据获取改动较大,不易完成。基于Camera现有的获取Preview数据流的回调机制,再增加录像数据流的回调会更方便。

3. 解决过程

1 新增接口

根据图2-1,Camera.java中没有直接录像的对外接口,所以我们需要添加录像的相关接口如下:

public native final void startRecording() throws IOException;
public native final void stopRecording();

都是本地方法,需要在android_hardware_Camera.cpp中添加映射如下:

{ "startRecording",  "()V",   (void *)android_hardware_Camera_startRecording },
{ "stopRecording",   "()V",   (void
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值