在 ImageReader 中从 MediaPlayer 获取帧

问题描述

在我的应用程序中,我使用 camera2 API 来获取多个表面的图像,并且运行良好。 出于调试目的,我想将输入源从相机更改为文件视频,为此我使用了 MediaPlayer。 是否可以像相机一样从 mediaPlayer 获取帧?在我的测试中,我只从 setonImageAvailableListener 获取一个 Image,之后就不再调用它了。

这是我定义曲面的方式

mHDImageReader = RefCountedAutoCloseable(ImageReader.newInstance(hdImageDimension.width,hdImageDimension.height,getimageFormat(),10))
mImageReader = RefCountedAutoCloseable(ImageReader.newInstance(imageDimension.width,imageDimension.height,4))
//Surface for acquire the image in low resolution
val imageSurface = mImageReader.get()?.surface

//Surface for acquire the image in high resolution
val hdImageSurface = mHDImageReader.get()?.surface

//Surface for show preview on display
val texture = viewFinder.surfaceTexture

我为每个表面使用不同的 mediaPlayer 实例,每个表面都有不同的分辨率。

surfaces.forEach {
    mediaPlayers.add(MediaPlayer().apply {
        setSurface(it)
        setDataSource(selectedVideo)
        prepare()
        start()
    })
}

在预览界面中,我可以毫无问题地观看视频。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)