gpt4 book ai didi

Android相机 native 访问: startPreview() vs startRecording()

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:15 26 4
gpt4 key购买 nike

尝试通过 Android ICS 中的 native 代码让相机工作:大多数手册都提到了 startPreview() 方法。但是浏览 AOSP 代码,我在 <Camera.h> 中也发现了“startRecording()”方法。 . Here说是来自接口(interface) ICameraRecordingProxy“允许录像机在录制期间接收视频帧

所以问题是 - 就性能而言,“startRecording”方法是否比“startPreview”更有效?

进入 native 代码的唯一目标是性能,Java“相机”太慢,而且 OpenCV 也没有提供所需级别的 FPS..

编辑:目标平台是:API level=17,设备 Allwinner A31 开发板,1280x720x30FPS。任务是从相机捕获帧,修改它们,编码(H264)并存储到 SD 卡。纯 java MediaRecorder 写入 1280x720x30 的 mp4 文件。不需要在屏幕上显示实时预览。

native 模式下的 OpenCV-demo1 提供 1920x1080x2(在 Java 模式下相同)。具有空 PreviewCallback 的简单 java 方法最大 FPS 为 15。

提前谢谢你..

最佳答案

就性能而言,使用原生相机没有任何好处。使用 Camera.setPreviewCallbackWithBuffer()在 Java 中 (off UI thread) 每秒提供与任何 native 替代品一样多的帧数。但在某些 SOC 上,例如三星,相机输出可能直接(0 拷贝)与 HW h264 编码器连接,这自然会提供出色的吞吐量。这就是 pure java MediaRecorder 在幕后所做的事情。如果涉及对缓冲区的任何操作,您将无法实现相同的目标。

关于Android相机 native 访问: startPreview() vs startRecording(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21826363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com