gpt4 book ai didi

android - Android 中的 ImageReader 需要很长时间才能使一帧可用

转载 作者:太空狗 更新时间:2023-10-29 13:20:10 33 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,我在其中使用 ImageReader 从 Surface 获取图像。当我在 Lollipop 版本中录制屏幕时,表面的数据是从 VirtualDisplay 获得的。问题是图像以非常低的速率 (1 fps) 可用(调用 OnImageAvailableListener.onImageAvailable() 函数)。当我尝试将 MediaEncoder 与此表面一起用作输入表面时,输出视频在 30fps 下看起来很流畅。有什么建议可以让我读取高 fps 的表面图像数据吗?

            ImageReader imageReader = ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2);
mImageReader.setOnImageAvailableListener(onImageListener, null);
mVirtualDisplay = mMediaProjection.createVirtualDisplay("VideoCap",
mDisplayWidth, mDisplayHeight, mScreenDensity,
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
imageReader.getSurface(), null /*Callbacks*/, null /*Handler*/);

//
//

OnImageAvailableListener onImageListener = new OnImageAvailableListener() {

@Override
public void onImageAvailable(ImageReader reader) {
// TODO Auto-generated method stub
if(reader != mImageReader)
return;
Image image = reader.acquireLatestImage();
if(image == null)
return;

// do some stuff

image.close();
}
};

最佳答案

当我切换到另一种格式时,FPS 大幅增加:

mImageReader = ImageReader.newInstance(mVideoSize.getWidth(), mVideoSize.getHeight(), ImageFormat.YUV_420_888, 2);

希望对您有所帮助。

关于android - Android 中的 ImageReader 需要很长时间才能使一帧可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29965725/

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