60 / 120fps在Android设备上预览数据?

时间:2016-05-05 08:19:09

标签: android camera preview camera2 highspeed

我们希望使用霓虹组件或GPU着色器处理120 fps(或60fps)相机预览数据,以执行简单的图像处理操作(例如3x3卷积)。 我们对在屏幕上显示图像不感兴趣,因此相机数据应该直接转到SurfaceTexture。

我们认为我们可以使用CameraConstrainedHighSpeedCaptureSession在Nexus 5上使用Camera2 API执行此操作但未成功。

互联网上目前没有功能代码(至少我们已经删除过的部分)允许这样做,但似乎可能存在功能。

使用Camera2 API进行高速录制的最佳示例如下:https://github.com/PkmX/lcamera

为了鼓励某人发布解决方案,我正在为这个问题提供赏金。

2 个答案:

答案 0 :(得分:1)

这是在pjsip中完成的。将回购物拉到您的机器上:

svn checkout -r 4687 https://svn.pjsip.org/repos/pjproject/trunk

然后打开pjmedia/src/swig文件夹,查看示例应用,将从线路传入的视频数据直接呈现给SurfaceTexture

我已经为你上传了两个最相关的C源文件(一目了然 - 肯定还有其他文件),这里:

  1. android_dev.c
  2. android_opengl.c
  3. 当然,这些文件包含许多不相关的代码,但希望有你正在寻找的代码段。

    如果您不确定如何执行此操作,您可能需要先按照一些说明found here生成处理极简主义Java / C接口的pjmedia/src/pjmedia-videodev/android/PjCamera*.java文件。我能够按照他们的指示 - 使用与NDK完全相同的版本(适用于10d或10e)和openssl(1.0.2a) - 并成功呈现视频并创建自定义应用程序。如果您只是修改C级视频捕获以通过JNI挂钩使用您的API,那么此源可以完全满足您的需求。

    有关使用JNI挂钩更改API的示例,请查看pjmedia中的audiodev文件夹。

    如果您确实构建了他们的项目,请务必按照最新的NDK版本的说明进行构建openssl 1.0.2a注意首都' C' on ./Configure,因为执行标准./configure可能会启动错误的配置过程。我建议将他们提供的命令复制并粘贴到脚本中。您可以完全跳过openssl用于您的目的;一旦我集成了openssl支持,我才能让我的Android设备一致地注册SIP帐户。

答案 1 :(得分:1)

我们成功修改了camera2video示例,以便在Samsung S6上获得120 fps的数据速率。

代码为here

我们尚未设法提取像素,但会在此时更新。