12

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

我们认为我们可以在使用 CameraConstrainedHighSpeedCaptureSession 的 Nexus 5 上使用 Camera2 API 来做到这一点,但没有成功。

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

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

为了鼓励某人发布解决方案,我在这个问题上悬赏。

4

2 回答 2

2

这是在pjsip中完成的。将 repo 拉到你的机器上:

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

然后打开pjmedia/src/swig一个示例应用程序的文件夹,该应用程序将从线路传入的视频数据直接呈现到SurfaceTexture.

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

  1. android_dev.c
  2. android_opengl.c

当然,这些文件包含许多与您无关的代码,但希望有您正在寻找的代码片段。

如果您不确定如何执行此操作,您可能需要首先按照此处找到的一些说明生成处理极简 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请注意 ./Configure 上的大写“C”,因为执行标准 ./configure 可能会启动错误的配置过程。我建议将他们提供的命令复制并粘贴到脚本中。您可能可以完全跳过 openssl 以达到您的目的;只有在集成了 openssl 支持后,我才能让我的 Android 设备一致地注册 SIP 帐户。

于 2016-05-13T16:36:55.717 回答
2

我们成功地修改了 camera2video 样本,在三星 S6 上获得了 120 fps 的数据速率。

代码在这里

我们还没有设法提取像素,但当我们这样做时会在这里更新。

于 2016-05-25T04:10:02.393 回答