您好,登錄后才能下訂單哦!
目前市場上的產品主要分為兩種:一種是像花椒、映客、斗魚、YY等的泛娛樂化直播,一種是思科、聲網之類的實時互動直播。一般情況下實時互動直播會與PSTN網絡相連,所以實時互動直播必須達到電話級別的傳輸要求,一般不超過400ms。
在泛娛樂化直播架構中有信令服務器集群來負責創建房間、聊天、贈送禮物…,當直播端需要直播時直接向信令服務器發送請求,信令服務器向請求端返回推流的地址,然后直播端開始像CDN網絡推送數據流(流媒體CDN與傳統CDN有些不同),然后當觀眾需要觀看直播時,使用同樣的方式請求直播地址,然后在流媒體CDN拉取數據流,具體如圖所示:
眾所周知,實時互動直播架構對傳輸效率要求高,因此客戶端使用UDP協議向媒體服務器推流,由于要保證服務器7x24小時的服務,所以通過私有網絡建立了服務器集群,直播端向媒體服務器推流。由于使用了多個直播服務節點,所以需要控制中心來控制這些節點以達到負載均衡、健康評估等的目的。每個節點通過內總線向控制中心發送心跳包,控制中心通過心跳包來分析服務節點的健康狀況來做出相應的決策。使用內總線的原因一是為了數據的安全性,二是為了數據的時效性。那么有時候實時互動也需要多人觀看,所以上面講解的泛娛樂化直播架構與實時互動直播架構進行融合。在CDN流媒體網絡與內總線之間有一層服務節點最重要的作用是將直播端的RTP轉換為RTMP數據向CDN推流,由此得知內總線的主要作用就是提高數據吞吐量和保證數據實時安全,具體如下圖所示:
雖然各大CDN廠商都提供CDN服務,但是流媒體CDN與傳統CDN網絡有很大的差別,但是要弄明白區別首先要了解什么是CDN:CDN就是內容分發網絡的簡稱,主要用來加速用戶訪問數據的速度和承載源站點大部分訪問壓力。一個CDN網絡大致上分為三層:
具體見下圖:
一般情況下,內容提供商有多個服務器來負載均衡,并且CDN提供區域的CDN邊緣節點來提供服務,眾多的邊緣節點和源節點之間通過主干節點連接,主干節點之間一般通過光纖直接互聯,如下圖所示:
通過上文介紹,我們已經清楚CDN網絡基本架構,那么傳統CDN與流媒體CDN的區別是:
傳統CDN網絡是客戶端請求某一站點的數據,首先請求源站點的數據,如果源站點有數據就直接返回,如果沒有就會直接通過主干節點請求源站點直接返回,并且邊緣節點緩存該數據以便下一次客戶端去請求加速,也就是說傳統CDN網絡有
熱點數據
這一說。流媒體CDN網絡采用的推送+拉去的數據分發策略,也就是內容提供商將數據推送到主干節點,然后邊緣節點在主干節點拉取數據,用戶請求邊緣節點的數據拉取數據流。
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉換以及流化音視頻的完整解決方案。
ffplay是一個使用了 ffmpeg 和 sdl 庫的、一個簡單的可移植的媒體播放器。
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行,同時Nginx也支持流媒體服務。
brew install nginx-full --with-rtmp-module
# 文件路徑:/usr/local/etc/nginx/nginx.conf
vim /usr/local/etc/nginx/nginx.conf
# 修改配置文件:
rtmp {
server {
listen 1935;
chunk_size 4096; # 傳輸數據塊的大小
# 創建了一個應用
application live {
live on;
record off; # 關閉錄制
allow play all;
}
}
}
# 熱加載配置文件:
nginx -s reload
ffmpeg -re -i ***帝國-矩陣危機.mp4 -c copy -f flv rtmp://127.0.0.1/live/hacker-three
ffmpeg -i rtmp://127.0.0.1/live/hacker-three -c copy dump.flv
ffplay rtmp://127.0.0.1/live/hacker-three
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。