从相机预览中丢帧
Drop Frames from the camera preview
我正在使用相机 1,我知道我获得了支持的帧速率范围并设置了该帧。但是我希望预览以非常低的帧速率(即每秒 5 帧)显示。
我无法设置它,因为它低于任何范围。有没有办法可以从预览中删除某些帧?如果 setPreviewCallbackwithbuffer 然后我得到框架,但此时它已经显示。我可以 "skip frames" 预览吗?
谢谢
不,您不能干预预览表面上的框架。如果您使用 TextureSurface 进行预览,您可以做一些技巧,但如果您需要非常低的帧速率,您可以自己简单地绘制帧(最好是绘制到 OpenGL 纹理)。您将在 onPreveiewFrame() 回调中获得 YUV 帧,并在需要时将它们传递给显示。您可以使用着色器来显示 YUV 帧而无需束腰 CPU 将它们转换为 RGB。
通常,我们想跳过预览帧,因为我们想 运行 一些 CV 算法在帧上,而且我们经常想显示经过这种 CV 处理修改的帧,例如带有检测到的物体的边界框。即使你有盒子的坐标,想要显示预览帧'as is',使用你自己的渲染器的好处是图片和叠加层之间不会有时间延迟。
我正在使用相机 1,我知道我获得了支持的帧速率范围并设置了该帧。但是我希望预览以非常低的帧速率(即每秒 5 帧)显示。
我无法设置它,因为它低于任何范围。有没有办法可以从预览中删除某些帧?如果 setPreviewCallbackwithbuffer 然后我得到框架,但此时它已经显示。我可以 "skip frames" 预览吗?
谢谢
不,您不能干预预览表面上的框架。如果您使用 TextureSurface 进行预览,您可以做一些技巧,但如果您需要非常低的帧速率,您可以自己简单地绘制帧(最好是绘制到 OpenGL 纹理)。您将在 onPreveiewFrame() 回调中获得 YUV 帧,并在需要时将它们传递给显示。您可以使用着色器来显示 YUV 帧而无需束腰 CPU 将它们转换为 RGB。
通常,我们想跳过预览帧,因为我们想 运行 一些 CV 算法在帧上,而且我们经常想显示经过这种 CV 处理修改的帧,例如带有检测到的物体的边界框。即使你有盒子的坐标,想要显示预览帧'as is',使用你自己的渲染器的好处是图片和叠加层之间不会有时间延迟。