從本節開始,正式開啟流媒體相關的內容。
流媒體
基本概念
流媒體(Streaming media),也叫做:流式媒體。
- 是指將一連串的多媒體資料壓縮後,經過網際網路分段傳送資料,在網際網路上即時傳輸影音以供觀賞的一種技術與過程
- 此技術使得資料包可以像流水一樣傳送,如果不使用此技術,就必須得先下載整個媒體檔案才能進行觀看
流媒體的一個非常典型、火爆的應用場景:直播。近幾年,直播行業是蒸蒸日上。
直播架構
下面放幾張圖片,簡單瞭解一下直播技術的基本架構。
你可能會有個疑問:信令伺服器是幹嘛用的?用來處理分享端和觀看端的一些信令指令,比如建立房間、加入房間等。
用文字總結一下基本流程是:
- 分享端(比如主播) -> 產生音視訊 -> 編碼壓縮音視訊 -> 推流到伺服器
- 觀看端(比如觀眾) -> 從伺服器拉流 -> 解碼解壓縮音視訊 -> 播放音視訊
推拉流
- 推流:通過流媒體協議,將音視訊資料傳送到流媒體伺服器
- 拉流:通過流媒體協議,從流媒體伺服器上拉取獲得音視訊資料
流媒體協議
常見的流媒體協議有:RTMP、HLS等。
- RTMP(Real-Time Messaging Protocol)
- 譯為:實時訊息傳輸協議,由Adobe公司出品
- 預設基於TCP的1935埠
- HLS(HTTP Live Streaming)
- 基於HTTP的流媒體網路傳輸協議,蘋果公司出品
- 參考:RFC 8216
本文主要介紹RTMP協議相關知識。
伺服器環境
首先,要搭建好RTMP伺服器環境,主要步驟如下:
- 安裝虛擬機器VMWare或Parallels Desktop
- 我這裡安裝的是VMWare
- 用虛擬機器上安裝CentOS系統
- CentOS是Linux系統的一種,這裡用7.6版本,建議跟我的版本保持一致
- 在CentOS系統中安裝nginx、nginx-rtmp-module
- nginx:一款高效能的開源web伺服器
- nginx-rtmp-module:讓nginx支援rtmp
- 配置nginx
- 啟動nginx
安裝CentOS
下載CentOS
推薦網站:centoschina,上面有CentOS的各種版本,這裡下載CentOS-7-x86_64-DVD-1810.iso,大小是4G多。
安裝nginx
在nginx官網下載目前最新的穩定版:nginx-1.20.1.tar.gz。
安裝nginx-rtmp-module
在nginx-rtmp-module的github下載目前最新的穩定版:v1.2.2.tar.gz。