視頻流媒體播放器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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章