小編的世界 優質文選 主機
字體大小:
2020年11月19日 -
:
雲豹科技的小路飛
直播軟件開發
一、解析直播軟件開發視頻推流
直播軟件開發的原理是前期音視頻數據采集、數據編碼、流媒體服務器數據傳輸、數據解碼、渲染播放,經過這5步視頻最終呈現在用戶眼前。
直播軟件開發中推流指的就是將前期數據采集階段壓縮封裝好的音視頻數據通過流媒體協議傳輸到流媒體服務器的過程。也就是將現場的音視頻信號傳送到網絡的過程。
推流階段對網絡的要求是比較高的,如果說網絡弱,不穩定就會導致用戶在播放端觀看直播時出現卡頓、畫面不清晰等現象,這就很影響用戶體驗了。
前面提到是將事先封包好的視頻進行推流,這就需要提前把音視頻使用傳輸協議進行封裝,使其變成流數據。
直播軟件開發
目前直播軟件常用到傳輸協議有RTMP、HLS、FLV等;現在直播行業采用RTMP協議的較多一些,它的傳輸延時一般在1-3秒,這對於實時性要求非常高的手機直播來說是非常受用的流傳輸協議了,後面再通過QOS算法將封裝好的音視頻數據推送到網絡端,再通過CDN分發到各個服務器節點。
直播軟件開發部分也采用HLS協議,雖然延時會比較大,又涉及到切片還需要了解TS流,但是手機直播WAP頁面目前還是離不開此協議的。
二、解析直播軟件開發視頻拉流
直播軟件開發拉流是指的服務器已經有的直播音視頻內容,通過用指定的地址進行數據拉去的過程。
拉流過程常用到的協議類型有RTMP、RTSP、HTTP等,通過與流媒體服務器建立連接並接受音視頻數據。拉流流程大致是這樣的:
1.直播軟件開發者將獲得的數據解析二進制數據,並從中獲取到相關的流信息;
2.根據編碼時不同的封裝格式,例如:FLV格式、TS封裝容器,通過解複用(demux)技術,將多條運輸連接上的數據匯集到一條網絡連接上傳輸;再分別得到已經編碼的H.264視頻數據和AAC音頻數據;
3.再使用硬編碼(對應系統的API)或軟解碼(FFMpeg)來解壓音視頻數據;
直播軟件開發
4.有編碼就會有對應的價碼,經過數據解碼解壓後得到原始的視頻數據(YUV)和音頻數據(AAC);
5.傳輸過程中音頻和視頻解碼是分開的,為了實現後期的聲畫同步,需要將音視頻做同步處理;最後則是將同步處理過的音視頻在播放端展示供用戶觀看。
以上就是直播軟件開發過程中關於推流和拉流的一些簡單介紹了,關於開發直播軟件還有一些其他的細節處理,本文就不一一介紹了後續有需要的話會繼續做內容的補充。
聲明:以上內容為作者雲豹直播系統開發者原創,未經作者本人同意,禁止轉載,否則將追究相關法律責任