H265视频流媒体播放器libEasyPlayer-RTSP如何通过数据渲染视频获得YUV数据?
TSINGSEE青犀视频开发的流媒体播放器libEasyPlayer-RTSP在手机端的的视频渲染是解码后获取的视频帧,需要分解成Y、U、V的值,再送到OpenGL去渲染,这里默认传的一个渲染视频的句柄为HWND句柄。
如果不通过传入HWND句柄能否拿到Y、U、V的渲染数据呢?因此此处我们尝试了不使用HWND句柄,而使用数据渲染,但是通过数据渲染并没有获取到想要的数据,导致界面视频并没有渲染成功,我们首先猜测是函数调用出了问题,因此做如下排查:
先查看代码调用EasyPlayer_OpenStream函数会进入该函数:
然后继续往下找,会使用EasyRTSPClient拉流,进行初始化和设置url与相关操作。并启动二个线程,一个进行解码,一个进行使用窗口句柄渲染视频。
如果想不渲染视频,直接把_lpDisplayThread这行代码给注释掉,但是这样函数回调的数据没有解码过后的数据格式。所以还是要接着往下检查,进入_lpDisplayThread线程函数中找渲染的部分。
_lpDisplayThread里面的函数代码比较多,我们只要找和渲染视频相关的代码。代码里面有回复的yuv等数据,转换的RGB32数据。
通过以下视频渲染方法,把代码注释掉,视频就不渲染,回调也是正常数据格式。
如果大家还想了解关于EasyPlayer数据渲染的内容,可以参考:EasyPlayer-RTMP-iOS使用YUV渲染画面的方法。