一個完整的直播過程包括:采集,、處理、編碼,、推流,、分發(fā)、解碼和播放,。其中,,推流對整個直播流程和質量影響非常大。前端推流指:將直播中采集到的數(shù)據(jù)包從終端推到服務器的過程,,是搭建直播系統(tǒng)源碼的一大難題之一,,如果想自己開發(fā)搭建直播系統(tǒng),最好先把這種基礎難題克服,,解決方案如下: 采用命令: ffmpeg -i input -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/cgstream0input 可以推送實時流和文件,,在推薦文件時,需要加上-re,。在實際操作中需要將127.0.0.1換成rtmp所在機器的ip地址,。 采用命令的方式進行推流,不能任意修改時間戳信息,,需要用代碼進行調整,,代碼如下: 打開視頻流,,filename可以是文件名稱也可以是實時流url. 創(chuàng)建輸出上下文以及輸出流,輸出流的格式需要設置成flv 從輸入流中讀音視頻包 常見的推流協(xié)議有這些: 1,、 RTMP協(xié)議 該協(xié)議基于 TCP,包括 RTMP/ RTMPT/RTMPS/RTMPE 等多種變種,。廣泛應用于直播領域,,大多數(shù)直播軟件推流都會使用它,所以如果要開發(fā)直播系統(tǒng)源碼的APP,推薦選擇它,,它對CDN非常友好,,協(xié)議簡單并且支持絕大多數(shù)CDN 廠商。 2,、 WebRTC 它支持網(wǎng)頁,,本身以API的形式存在著,對主流瀏覽器支持程度高,,弱網(wǎng)情況下表現(xiàn)良好,,可以實現(xiàn)點對點通信因此非常適用于連麥,廣泛應用于視頻會議和連麥中,,它最大的優(yōu)點在于低延時,,但缺點是不支持CDN 3、 HLS切片式傳輸 HLS是切片式傳輸,,微信端常用,,用它的話,用戶可以在客戶端自主切換碼率流以獲得更好的觀看體驗,,如果要開發(fā)微信端的直播系統(tǒng)源碼,,可以考慮使用它。 CDN分發(fā) CDN是“內容分發(fā)網(wǎng)絡”,,是由無數(shù)個服務器連成的一張網(wǎng)絡,,在音視頻數(shù)據(jù)包被推流到服務器上后,服務器會通過CDN分發(fā)網(wǎng)絡把數(shù)據(jù)包分發(fā)出去,,這樣在用戶想要觀看時,,打開手機,就會自動尋找到最近最流暢的節(jié)點服務器,,進行拉流工作,。 使用CDN分發(fā)的好處就是,降低主服務器壓力,,提高系統(tǒng)反應速度,,通過降低網(wǎng)絡堵塞,把視頻盡快送到用戶眼前,,它很重要,,因為直播系統(tǒng)源碼在運營后期所承受的壓力是非常大的。 解碼方式 推薦使用H.264/H.265編碼方式+軟硬結合的解碼方式,,H.264和H.265是壓縮率很高,,音質損失較小的編碼壓縮方式,以前大學的時候,,我去蹭過隔壁后期制作班的課,,他們也是使用H.264導出片子。 而軟硬解碼方式則是:軟解碼是使用CPU解碼,對cpu要求高,,解碼出來的視頻畫質清晰,、細節(jié)清楚,但對處理器占用率較大,,對一些機型很不友好,,尤其是直播系統(tǒng)源碼的運行本身就要占用大量CPU資源,而硬解碼則是使用GPU進行解碼,,相較而言更快些,,對處理器要求更低。 聲明:本文聲明原創(chuàng),,轉載請注明 |
|