0

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

这是我定义表面的方式

mHDImageReader = RefCountedAutoCloseable(ImageReader.newInstance(hdImageDimension.width, hdImageDimension.height, getImageFormat(), 10))
mImageReader = RefCountedAutoCloseable(ImageReader.newInstance(imageDimension.width, imageDimension.height, getImageFormat(), 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()
    })
}

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

4

0 回答 0