Mediacodec學(xué)習(xí)第二篇 -- EXOPlayer
分析的主要內(nèi)容
# 網(wǎng)絡(luò)視頻流解析
還記得這個MediaSource嗎?
buildMediaSource則根據(jù)網(wǎng)絡(luò)數(shù)據(jù)來解析成對應(yīng)數(shù)據(jù)封裝
比如:HLS,DASH等
如果要支持RTSP播放丹莲,首先需要擴展一個基于RTSP的DataSource來完成RTSP的交互
通過http方式和本地播放方式在EXOPlayer上成功播放了MPEG4 H264 TS的視頻队塘,也就是說符合IPTV編碼規(guī)范尿孔,為兼容IPTV RTSP擴展需要處理的是信令交互過程。
那需要先分析ExoPlayer是如何把通過網(wǎng)絡(luò)緩沖的數(shù)據(jù)寫入render中的蚪缀。
在ExtractorMediaPeriod的load處理中dataSource.open完成了數(shù)據(jù)請求交互
在ExtractorMediaPeriod的dataSource open后然后通過read方法完成buffer數(shù)據(jù)的讀取修肠。以HTTP請求為例來說明:
在open中實現(xiàn)inputStream實例:
在read中通過inputStream實例采集視頻數(shù)據(jù):
這樣把網(wǎng)絡(luò)的視頻流不斷的注入給render來繪制實現(xiàn)硬解播放
接下來貼幾張類圖和序列圖贺辰,都是我在實現(xiàn)RTSP的過程中分析畫的户盯,雖然不全也可能不對嵌施,但多少可以幫助理解分析,后期再補全莽鸭。
按照以上分析也完成了RTSP代碼實現(xiàn)吗伤,寫代碼就是個重復(fù)勞動,服務(wù)器是用VLC擴展出來的RTSP服務(wù)器硫眨,可以參考我的另一篇文章<<IPTV規(guī)范RTSP服務(wù)器實現(xiàn)(基于VLC)>>,目前階段播放中有輕微卡頓和花屏問題足淆,原因是在接收UDP包時小概率丟幾個包,正在優(yōu)化礁阁。代碼嗎之后會在我的github中同步巧号。
第二階段還有優(yōu)化工作需要處理,還沒來得及細致的分析音視頻同步姥闭,后續(xù)再分析更新丹鸿。感謝關(guān)注。