我正在尝试MediaStream
在RecyclerView
. 目前,我的同伴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
资源/用于解码它们的编解码器?是否有任何文件讨论这种情况?
谢谢!