网页直播/点播播放器支持http-flv/rtmp/m3u8等播放流媒体音视频播放器EasyPlayer-RTMP-iOS使用YUV渲染画面的方法

背景分析

RTMP协议是应用层协议,是要靠底层可靠的传输层协议(一般是TCP)来保证信息传输的可靠性的。在基于传输层协议的连接创建完成后,一个RTMP协议的流媒体推流须要通过如下几个步骤:握手,创建链接,创建流,推流。RTMP链接都是以握手做为开始的。创建链接阶段用于创建客户端与服务器之间的“网络链接”;创建流阶段用于创建客户端与服务器之间的“网络流”;推流阶段用于传输视音频数据。服务器

EasyPlayer-RTMP播放器是一套RTMP专用的播放器,包括有:Windows、Android、iOS三个平台,区别于市面上大部分的通用播放器,EasyPlayer-RTMP系列始于成熟的商业项目,获得了各行各业(尤为是安防行业)的普遍应用,EasyPlayer-RTMP更加精炼、更加专一,具有很是低的延时,很是高RTMP协议兼容性,编码数据解析等方面,都有很是大的优点,尤为是在有特殊参数/私有自定义字段的状况下,很是容易进行定制和兼容。网络

EasyPlayer-RTMP-iOS-工做流程ide

EasyPlayer-RTMP-iOS

 

EasyPlayer-RTMP-Android-工做流程编码

EasyPlayer-RTMP-iOS

 

EasyPlayer-RTMP-iOS如何使用YUV渲染画面?

分析问题3d

解码后获取的视频帧,须要分解成Y、U、V的值,再送到OpenGL去渲染。code

解决问题视频

解码后获取的视频帧的数据,添加到KxVideoFrameYUV,并经过(instancetype) handleVideoFrame:(AVFrame *)videoFrame
videoCodecCtx:(AVCodecContext *)videoCodecCtx;方法,分解出Y、U、V的值:blog

EasyPlayer-RTMP-iOS

 

EasyPlayer-RTMP-iOS

最后经过KxMovieGLView渲染:工作流

[kxGlView render:frame]