Android NDK 相机示例 JPEG(30 Hz)

标签 android c++ android-ndk cameraapi2

我一直在使用the Android NDK Camera sample有了它,人们就可以使用 the yuvreader_ inside DrawFrame 读取格式为 AIMAGE_FORMAT_YUV_420_888 的帧。 30 赫兹。我验证了通过在每个图像中记录时间戳并打印它来实现 30 Hz。我使用的是三星 Galaxy S9。

我现在正在尝试以 30 Hz 的频率获取 JPEG 图像而不是 YUV 图像,但尚未成功,想知道是否有人可以提供帮助。

据我了解,此示例中的捕获 session 创建了对“预览”和“静态捕获”的请求,其中 yuv is used for preview and jpeg is used for the still capture 。我所做的是将 jpgReader_ 也设置为预览,然后检查 ImageCallback here 中捕获的帧的时间戳。 (我注释掉了写入文件的步骤,只是调用 AImage_delete(image) 来清理缓冲区)。然而,我得到的结果是间隔为 33、66、99 和 133 毫秒的帧,分布相当均匀,因此经常会跳过很多帧。

有什么想法可能是什么问题吗?

最佳答案

许多相机设备每秒无法生成 30 张 jpeg 图像。这就是为什么相机 API 明确设置预览或视频的 YUV(或私有(private))格式。很少有设备能够每秒创建 30 个 Jpeg。这就是为什么典型的视频录制 session 涉及 h246 或 vp8 编码器。

关于Android NDK 相机示例 JPEG(30 Hz),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56039897/

相关文章:

android - 将 MySQL 数据库导入到 android SQLite 数据库

java - 检查字符串是否完全显示在弹出窗口中

c++ - 具有列表参数 C++11/C++14 样式的 Sum 函数

c++ - 将 C++ 对象传递给 Lua 函数

android - 使用带有 Android NDK 的 OpenCV 转换数据格式

android - 在 Android 上加载 libpthread.so 时出错

java - 循环通过 XML 来构建对象

c++ - DLL注入(inject)后如何获取目标进程的基地址?

android-ndk - 为什么会出现本地引用表溢出?

android - 按顺序多次运行相同的 Asynctask