網頁直播/點播播放器支持http-flv/rtmp/m3u8等播放流媒體音視頻播放器EasyPlayer-RTMP-iOS使用YUV渲染畫面的方法


背景分析

RTMP協議是應用層協議,是要靠底層可靠的傳輸層協議(通常是TCP)來保證信息傳輸的可靠性的。在基於傳輸層協議的鏈接建立完成后,一個RTMP協議的流媒體推流需要經過以下幾個步驟:握手,建立連接,建立流,推流。RTMP連接都是以握手作為開始的。建立連接階段用於建立客戶端與服務器之間的“網絡連接”;建立流階段用於建立客戶端與服務器之間的“網絡流”;推流階段用於傳輸視音頻數據。

EasyPlayer-RTMP播放器是一套RTMP專用的播放器,包括有:Windows、Android、iOS三個平台,區別於市面上大部分的通用播放器,EasyPlayer-RTMP系列始於成熟的商業項目,得到了各行各業(尤其是安防行業)的廣泛應用,EasyPlayer-RTMP更加精煉、更加專注,具備非常低的延時,非常高RTMP協議兼容性,編碼數據解析等方面,都有非常大的優勢,尤其是在有特殊參數/私有自定義字段的情況下,非常容易進行定制和兼容。

功能特點1.png

EasyPlayer-RTMP方案架構

EasyPlayer-RTMP-iOS-工作流程

EasyPlayerRTMP.png

EasyPlayer-RTMP-Android-工作流程

EasyPlayerRTMP.png

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

分析問題:

解碼后獲取的視頻幀,需要分解成Y、U、V的值,再送到OpenGL去渲染。

解決問題:

解碼后獲取的視頻幀的數據,添加到KxVideoFrameYUV,並通過

  • (instancetype) handleVideoFrame:(AVFrame *)videoFrame
    videoCodecCtx:(AVCodecContext *)videoCodecCtx;方法,分解出Y、U、V的值:

51.png52.png

最后通過KxMovieGLView渲染:

[kxGlView render:frame]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM