Android 设备上的 60/120fps 预览数据?
60/120fps preview data on an Android device?
我们想使用 Neon 组件或 GPU 着色器处理 120 fps(或 60fps)的相机预览数据,以执行简单的图像处理操作(例如 3x3 卷积)。
我们对在屏幕上显示图像不感兴趣,因此相机数据应直接进入 SurfaceTexture。
我们认为我们可以使用 CameraConstrainedHighSpeedCaptureSession 在 Nexus 5 上使用 Camera2 API 来做到这一点,但没有成功。
互联网上目前没有功能代码(至少我们已经抓取的部分)允许这样做,但似乎很可能存在该功能。
使用 Camera2 API 进行高速录制的最佳示例在这里:https://github.com/PkmX/lcamera
为了鼓励某人 post 一个解决方案,我悬赏这个问题。
这是在 pjsip 中完成的。将 repo 拉到你的机器上:
svn checkout -r 4687 https://svn.pjsip.org/repos/pjproject/trunk
然后打开示例应用程序的 pjmedia/src/swig
文件夹,该应用程序将从线路传入的视频数据直接渲染到 SurfaceTexture
。
我已经为您上传了两个最相关的 C 源文件(一目了然——当然还有其他的),在这里:
当然,这些文件包含很多与您无关的代码,但希望有您正在寻找的片段。
如果您不确定如何操作,您可能需要先按照一些说明 found here 来生成处理极简主义 Java/C 接口的 pjmedia/src/pjmedia-videodev/android/PjCamera*.java
文件。我能够按照他们的说明进行操作——使用 完全相同的 NDK 版本(适用于 w/10d 或 10e)和 openssl (1.0.2a)——并成功渲染视频并创建自定义应用程序。如果您只是修改 C 级视频捕获以像他们一样通过 JNI 挂钩使用您的 API,那么此源代码完全可以满足您的需求。
有关使用 JNI 挂钩更改 API 的示例,请查看他们在 pjmedia 中的 audiodev 文件夹。
如果您确实构建了他们的项目,请务必按照最底部的说明进行构建 openssl 1.0.2a
的较新 NDK 版本。 注意 ./Configure 上的大写 'C',因为执行标准 ./configure 可能会启动错误的配置过程。 我建议将他们提供的命令复制并粘贴到脚本中。您可以出于您的目的完全跳过 openssl;一旦我集成了 openssl 支持,我只能让我的 Android 设备始终如一地注册 SIP 帐户。
我们成功修改了 camera2video 示例,在三星 S6 上获得了 120 fps 的数据速率。
密码是here.
我们还没有设法提取像素,但我们会在此处更新。
我们想使用 Neon 组件或 GPU 着色器处理 120 fps(或 60fps)的相机预览数据,以执行简单的图像处理操作(例如 3x3 卷积)。 我们对在屏幕上显示图像不感兴趣,因此相机数据应直接进入 SurfaceTexture。
我们认为我们可以使用 CameraConstrainedHighSpeedCaptureSession 在 Nexus 5 上使用 Camera2 API 来做到这一点,但没有成功。
互联网上目前没有功能代码(至少我们已经抓取的部分)允许这样做,但似乎很可能存在该功能。
使用 Camera2 API 进行高速录制的最佳示例在这里:https://github.com/PkmX/lcamera
为了鼓励某人 post 一个解决方案,我悬赏这个问题。
这是在 pjsip 中完成的。将 repo 拉到你的机器上:
svn checkout -r 4687 https://svn.pjsip.org/repos/pjproject/trunk
然后打开示例应用程序的 pjmedia/src/swig
文件夹,该应用程序将从线路传入的视频数据直接渲染到 SurfaceTexture
。
我已经为您上传了两个最相关的 C 源文件(一目了然——当然还有其他的),在这里:
当然,这些文件包含很多与您无关的代码,但希望有您正在寻找的片段。
如果您不确定如何操作,您可能需要先按照一些说明 found here 来生成处理极简主义 Java/C 接口的 pjmedia/src/pjmedia-videodev/android/PjCamera*.java
文件。我能够按照他们的说明进行操作——使用 完全相同的 NDK 版本(适用于 w/10d 或 10e)和 openssl (1.0.2a)——并成功渲染视频并创建自定义应用程序。如果您只是修改 C 级视频捕获以像他们一样通过 JNI 挂钩使用您的 API,那么此源代码完全可以满足您的需求。
有关使用 JNI 挂钩更改 API 的示例,请查看他们在 pjmedia 中的 audiodev 文件夹。
如果您确实构建了他们的项目,请务必按照最底部的说明进行构建 openssl 1.0.2a
的较新 NDK 版本。 注意 ./Configure 上的大写 'C',因为执行标准 ./configure 可能会启动错误的配置过程。 我建议将他们提供的命令复制并粘贴到脚本中。您可以出于您的目的完全跳过 openssl;一旦我集成了 openssl 支持,我只能让我的 Android 设备始终如一地注册 SIP 帐户。
我们成功修改了 camera2video 示例,在三星 S6 上获得了 120 fps 的数据速率。
密码是here.
我们还没有设法提取像素,但我们会在此处更新。