7

我正在尝试MediaStreamRecyclerView. 目前,我的同伴MediaStream在我们初次握手时给了我所有的对象,我能够将它们显示在具有自定义TextureView. 当我获得大量流以滚动浏览时,就会出现问题。滚动浏览足够的列表项后,我最终崩溃了。

MediaStream#dispose()当我的列表项被回收时,我尝试使用该功能。这似乎避免了使用过多解码器资源的问题,但也导致无法再次查看流。如果用户想要滚动到已处理的流,我的应用程序在MediaStreamTrack has been disposed.尝试启用MediaStream.VideoTrack

我希望从视频轨道中删除接收器videoTrack?.removeSink(cameraStreamView)以及release()在我的 TextureView 中调用 EglRenderer 上的函数的组合足以清理onViewRecycled().

private fun destroyCameraStream() {
   videoTrack?.removeSink(cameraStreamView)
   cameraStreamView.release()
}

fun release() {
   eglRenderer.release()
}

然而,在向下滚动列表足够远之后,我得到了错误: Unable to instantiate codec 'OMX.qcom.video.decoder.avc' with err 0xfffffff4.我认为这是由于我没有完全清理和释放我的编解码器,因为我一路旋转它们,而且我用完了资源。

有谁知道是否有某个函数可以调用以正确清理MediaStream资源/用于解码它们的编解码器?是否有任何文件讨论这种情况?

谢谢!

4

0 回答 0