尝试让相机从 Android ICS 中的本机代码工作:
大多数手册参考开始预览()方法 。但是浏览 AOSP 代码我也发现了'开始录音()' 中的方法<Camera.h>
. Here https://thenewcircle.com/s/post/1268/Exposing_the_Android_Camera_Stack.pdf说是来自ICameraRecordingProxy接口
”允许录像机在录制期间接收视频帧"
所以问题是 - 就性能而言,“startRecording”方法比“startPreview”更有效吗?
进入本机代码的唯一目标是性能,Java“相机”太慢,而且 OpenCV 也没有提供所需的 FPS 级别。
EDIT:目标平台为:API level=17,设备Allwinner A31开发板,1280x720x30FPS。
任务是从相机捕获帧,修改它们,编码(H264)并存储到SD卡。
纯java MediaRecorder写入1280x720x30的mp4文件。不需要在屏幕上显示实时预览。
本机模式下的 OpenCV-demo1 提供 1920x1080x2(与 java 模式相同)。带有空 PreviewCallback 的简单 java 方法最大 FPS 为 15。
先感谢您..
就性能而言,使用本机相机没有任何好处。使用Camera.setPreviewCallbackWithBuffer() http://developer.android.com/reference/android/hardware/Camera.html#setPreviewCallbackWithBuffer(android.hardware.Camera.PreviewCallback)在Java中(关闭 UI 线程 https://stackoverflow.com/questions/18149964/best-use-of-handlerthread-over-other-similar-classes)每秒提供与任何本机替代方案一样多的帧数。但在某些 SOC 上,例如三星,相机输出可以直接(0复制)与HW h264编码器连接,这自然提供了出色的吞吐量。这就是 pure java MediaRecorder
在底层所做的事情。如果涉及对缓冲区的任何操作,您就无法实现相同的目标。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)