视频流媒体播放器EasyPlayer-RTSP是怎样渲染画面的?

视频播放必然涉及到画面渲染,比如我们的视频流媒体播放器,不管是什么版本,都需要对画面进行渲染才能正常播放。

在博客EasyPlayer-RTMP-iOS使用YUV渲染画面的方法里,我们介绍了视频流媒体播放器渲染的方式,是解码后获取的视频帧,需要分解成Y、U、V的值,再送到OpenGLES去渲染。

Player.png

但我们也遇到了一个问题:EasyPlayer-RTSP-Android 使用硬解码得到的视频帧数据,渲染出来的画面是黑白的,如何解决?

分析问题:

我们在调出硬解码数据检查之后,发现硬解码得到的YUV数据的格式没有确定,导致JNIUtil转码数据出错,OpenGLES渲染出来的画面,都是黑白色。

解决问题:

1、硬解码,指定解码后的帧格式:
format.setInteger(MediaFormat.KEY_COLOR_FORMAT, COLOR_FormatYUV420Flexible);

2、解码得到的YUV需要经过JNIUtil.yuvConvert转换,再渲染,视频播放画面就会恢复正常。

573.png

猜你喜欢

转载自blog.csdn.net/TsingSee/article/details/106824204