EasyPlayer-Android播放器是一款可针对RTSP、RTMP、RTSP&RTMP协议进行过优化的流媒体播放器,其中我们引以为傲的两个技术优势就是起播速度快和播放延迟低。最近我们遇到一些需求,其对播放画面要求非常苛刻,于是我们再把代码捡起来,针对之前的播放策略进行再优化,果然又发现一些可以更改和调优的地方,于是又对性能进行了一次压榨和优化。
如何实现播放器退到后台后,再回到前台时,播放画面可以无缝衔接?
分析问题
Android播放视频返回后台,再重新回到播放界面,发现TextureView显示视图是一片黑色,是因为播放界面返回后台时会调用onSurfaceTextureDestroyed方法去销毁SurfaceView(华为平板熄屏后也会调用),再到播放界面需要重新创建SurfaceView并初始化EasyPlayerClient,这样会耗费很长时间。
解决问题
在onSurfaceTextureDestroyed销毁方法中,有一个SurfaceTexture参数,我们在销毁的时候返回false,并保存SurfaceTexture对象,然后从后台返回界面的时候在onSurfaceTextureAvailable()方法中,调用setSurfaceTexture(mSurfaceTexture)方法,这样就会恢复之前的画面了。
SDK中的代码如下:
EasyPlayer实现了对遵循标准流媒体码流协议进行实时播放以及码流录制,在流的播放速度以及画质的解码显示上均做了大量深度的优化。另外EasyPlayer支持多平台的客户端版本,方便直接使用或在此基础上进行二次开发。
支持Windows(支持多窗口、包含ActiveX,npAPI Web插件)、Android平台,iOS平台;
视频支持H.264,H.265,MPEG4,MJPEG
音频支持G711A,G711U,G726,AAC
支持RTSP over TCP/UDP,支持硬解码