- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试通过相机的 PreviewCall back(onPreviewFrame) 使用 MediaCodec 对每秒 30 帧的视频进行编码。我编码的视频总是播放得非常快(这是不希望的)。因此,我尝试通过设置一个 int frameCount 变量来记住它的计数来检查进入我的相机预览的帧数。我期望的是每秒 30 帧,因为我将相机的预览设置为具有 30 fps 的预览(如下所示)。我得到的结果是不一样的。我调用了 onPreviewFrame 回调 10 秒,我得到的 frameCount 数量只有大约 100 帧。这很糟糕,因为我期待 300 帧。我的相机参数设置正确吗?这是Android相机预览回调的限制吗?如果这是对 Android 相机预览回调的限制,那么是否有任何其他相机回调可以以每秒 30 帧的速度返回相机的图像数据(nv21,yuv,yv12)?
感谢您阅读并花时间提供帮助。如果有任何评论和意见,我将不胜感激。
这是一个使用相机的 onPreviewFrame 编码的视频示例:
http://www.youtube.com/watch?v=I1Eg2bvrHLM&feature=youtu.be
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewFormat(ImageFormat.NV21);
parameters.setPictureSize(previewWidth,previewHeight);
parameters.setPreviewSize(previewWidth, previewHeight);
// parameters.setPreviewFpsRange(30000,30000);
parameters.setPreviewFrameRate(30);
mCamera.setParameters(parameters);
mCamera.setPreviewCallback(previewCallback);
mCamera.setPreviewDisplay(holder);
最佳答案
不,Android 相机不能保证稳定的帧率,尤其是在 30 FPS 时。例如,它可能会在低光照条件下选择更长的曝光时间。
但作为应用开发者,我们有一些方法可以让事情变得更糟。
首先,使用 setPreviewCallback()
而不是 setPreviewCallbackWithBuffer()
。这可能会对垃圾收集器造成不必要的压力。
其次,如果 onPreviewFrame()
到达主 (UI) 线程,您会导致任何 UI 操作直接延迟相机帧的到达。要将 onPreviewFrame()
保持在单独的线程上,您应该在辅助 Looper 线程上open()
相机。在这里我详细解释了这是如何实现的: Best use of HandlerThread over other similar classes .
第三,检查处理时间是否小于20ms。
关于Android Camera onPreviewFrame帧率不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19919793/
我使用 QBFC v13 和 Delphi XE6。 目标是从我的应用程序创建 Estimate 并将其参数设置到 QuickBooks 中。 我从 QBFC13 导入类型库并将其添加到我的项目中。
我有一个数据库,其中有很多格式不正确的地址。在这个地址中,我只有一个街道地址或带有城市名称的街道。在我的应用程序中,用户选择一些类别,然后我想在 map 上显示例如 50,100,300 等地址。(不
在大多数软件项目中,缺陷源自需求、设计、编码和缺陷更正。根据我的经验,大多数缺陷都源于编码阶段。 我有兴趣了解软件开发人员使用哪些实用方法来降低缺陷注入(inject)率。 我已经看到以下方法的使用取
我正在使用实时 API 中的标签订阅构建一个应用程序,并且有一个与容量规划相关的问题。我们可能有大量用户同时发布到订阅的主题标签,因此问题是 API 实际发布到我们的订阅处理端点的频率是多少?例如,如
尝试使用 NULLIF 或 IFNULL 函数,但仍收到被零除的消息。 SELECT client_id ,COUNT(distinct CASE WHEN status = 'failed' THE
我目前正在开发一个使用 Django-rest-framework 制作的 API。我必须根据每个用户组设置限制率。 我们目前使用默认配置的 memcached 作为缓存后端,即按站点缓存。 在使用
我认为有时在神经网络(特别是一般对抗网络)训练期间改变丢失率可能是一个好主意,从高丢失率开始,然后线性地将丢失率降低到零。您认为这有意义吗?如果是的话,是否有可能在 tensorflow 中实现这一点
我有一个 Windows Server 2008,Plesk 运行着两个网站。有时服务器运行缓慢,并且有一个 named.exe 进程使 CPU 峰值达到 100%。它持续很短的时间,过一会儿它又来了
我正在使用 scikit-learn 随机森林分类器,我想通过将成功投票所需的树数量从大于 50% 增加到 75% 来降低 FP 率,在阅读文档后我不这样做确定如何做到这一点。有没有人有什么建议。 (
当我连续按下按键事件(字母 k)时,为什么以下按键事件不会减慢 3000 密耳?如果我按住手指,计数会迅速增加,因为 mcount 上没有 setTimeout。这是为什么?每次计数之间应该有延迟,但
我是一名优秀的程序员,十分优秀!