你的直播流每次都崩潰嗎?如果是的話,你需要找到一個可靠的方式來托管你的流。但如果你負擔不起昂貴的選擇,別擔心!NGINX RTMP會拯救一天。NGINX RTMP是一個可靠的開源模塊,所以你知道這意味著什麼——它是免費的!
在這個教程中,你將學習如何設置一個NGINX RTMP服務器,這樣你就可以在你的網站上建立一個可靠的直播流。
準備好了嗎?繼續閱讀並開始設置直播流!
先決條件
本教程將進行實踐演示。如果你想跟著做,請確保你擁有以下資源:
- A Linux server – This demo uses Ubuntu 20.04 LTS, but you can use any other Linux distribution with NGINX.
- A non-root user with sudo privileges.
- 運行直播流服務器所需的最低資源-2G RAM、2 CPU核心和20GB HDD。
這些值僅供參考。確切的值取決於您的實際流量需求。您的流量越大,您需要托管和流式傳輸直播視頻的服務器就越強大。在開發環境中,擁有2個CPU和2GB RAM的NGINX RTMP服務器就足以進行測試。
配置RTMP服務器
現在,必要條件已經完成,您可以開始安裝和配置 RTMP 伺服器了。首先,您需要安裝一個 NGINX 模組,將您的 NGINX 伺服器轉換為 RTMP 伺服器,然後配置 NGINX 配置文件以啟用用戶的直播流。
1. 開啟終端機,執行 apt update
命令以更新所有套件。此命令將您的套件資料庫與 Ubuntu 的最新資料庫同步。

2. 接下來,執行以下命令在 Linux 伺服器上安裝 RTMP 伺服器。
libnginx-mod-rtmp
模組是一個將您的 NGINX 伺服器轉換為 RTMP 伺服器的 NGINX 模組。該模組使 NGINX 能夠與 Adobe Flash 播放器通信,以便您可以進行直播視頻或音頻串流,並且受到官方開發團隊的支援。

3. 使用您喜歡的編輯器打開 /etc/nginx/nginx.conf 文件,以配置您的 RTMP 直播節目。 nginx.conf 文件是一個 NGINX 配置文件,其中包含多個指令或區塊,用於定義 NGINX 服務的行為。
4. 最後,將以下代碼填充到 nginx.conf 文件中,保存更改並退出編輯器。
以下代碼告訴 NGINX 充當 RTMP 伺服器,並為您的用戶啟用直播流。
通過設置防火牆保護網絡
您已經配置了NGINX RTMP服務器,但您需要保護您的網絡並控制流量。如何做到?通過設置一個防火牆,即Ubuntu中的默認防火牆Uncomplicated Firewall(UFW)。
如果您將NGINX RTMP伺服器置於防火牆後,您需要允許NGINX RTMP伺服器端口開啟。由於您已將NGINX RTMP伺服器配置為監聽端口1935
,您將允許此端口通過您的防火牆。
1. 執行以下命令添加一條防火牆規則,打開防火牆上的1935
端口。此防火牆規則允許所有傳入和傳出請求訪問您的NGINX RTMP伺服器端口1935
。

2. 接下來,執行以下命令停用並重新啟用您的防火牆。此命令基本上重新啟動防火牆,以使對防火牆的任何更改生效。
3. 最後,執行以下命令檢查您的防火牆狀態,並驗證端口1935
是否可以從所有IP地址(任何位置)訪問。

使用FFmpeg進行視頻流
您的NFINX RTMP伺服器現在已啟動,現在是使用FFmpeg創建一個示例視頻並通過NGINX RTMP伺服器進行流式傳輸的時候了。FFmpeg是一個完整的解決方案,可在許多不同應用程序中錄製、轉換和流式傳輸音頻和視頻,如VLC、OMXPlayer、VobSub等。
您將在伺服器上測試視頻流,可以使用任何大小較小的視頻進行流式傳輸。
1. 執行以下apt install
命令以安裝FFmpeg正常運行所需的依賴項。
下面的命令安裝了以下項目:
libpcre3
– 一個正則表達式庫,用於幫助解析和編譯正則表達式的ffmpeg工具包。libpcre3-dev
– 這個包包含了libpcre3包的開發標頭。libssl-dev
– OpenSSL加密庫,用於在RTMP服務器中創建SSL/TLS連接。zlib1g-dev
: zlib庫是一個壓縮和解壓縮庫,可加速音頻和視頻文件在互聯網上的傳輸。

2. 接下來,在您的服務器上運行以下命令以安裝ffmpeg
。

3. 最後,運行ffmpeg
命令執行以下操作並創建新的直播流:
- 從源文件(
i
)中讀取輸入(re
)以原始幀速率。請務必將video.mp4
替換為您的視頻路徑和文件名。 - 將視頻格式原封不動地複製(
c:v copy
),並編碼音頻為AAC編解碼器(c:a aac
)。 - 將音頻採樣率設置為44100 Hz(
ar 44100
)。如果您的視頻採樣率低於此值(44100 Hz),FFmpeg將執行插值以增加採樣率。 - 設置音頻通道為單通道(單聲道)(
ac 1
),並設置FFmpeg將流式傳輸的視頻格式(-f flv
)。 - 設置您在“配置RTMP服務器”部分(第四步)中配置的RTMP直播程序(
rtmp://localhost/live/streamname.flv
)。您可以將streamname.flv
更改為任何您喜歡的名稱。
如您所見,ffmpeg
命令會打印出它檢測到的每秒幀,新創建的RTMP直播流的比特率和幀率。

結論
在本教程中,您已經學會了如何設置您的NGINX RTMP服務器並通過修改NGINX配置文件在您的服務器上啟用直播流。您還觸及了使用FFmpeg工具通過NGINX RTMP服務器設置視頻直播流。
您剛剛意識到設置直播流不必花費一分錢。此時,為什麼不 使用HTML5的<video>元素將您的流集成到您的網頁中。或者 為您的RTMP流設置OBS Studio?