SurfaceTexture 类是在 Android 3.0 中推出的。当创建 SurfaceTexture 时,会创建一个应用是其消耗方的 BufferQueue。如果生产方将新的缓冲区加入队列,服务器便会通过回调 (onFrameAvailable()) 获得通知。服务器调用updateTexImage()(这会释放先前保留的缓冲区),从队列中获取新的缓冲区,然后发出一些 EGL 调用,让缓冲区可作为外部纹理供 GLES 使用。
视频流媒体播放器EasyPlayer-RTSP的安卓版本在使用SurfaceTexture 类时,碰到了内存释放的难题。本文我们来分享一下怎么释放内存。
EasyPlayer-RTSP-Android SurfaceTexture内存释放问题
之前为了解决视频流媒体播放器EasyPlayer-RTSP播放画面可以无缝衔接的问题,在onSurfaceTextureDestroyed中保存了SurfaceTexture,但是这样,texture就释放不掉,导致内存泄漏。
解决问题
在SurfaceTextureListener的onSurfaceTextureDestroyed方法中,不要保存texture,退出播放后即可释放这些内存:
视频流媒体服务器在安防、互联网、教育、录播、IPTV等多个领域实现了广泛应用,EasyPlayer是一款精炼、高效、稳定的流媒体播放器,其中EasyPlayerPro已经实现了H265编码视频的播放。EasyPlayer还有RTSP版本,能够集成到各平台进行视频播放。
EasyPlayerJS视频播放界面: