在 Linux 或 BSD 操作系統(tǒng)上設(shè)置基本的實(shí)時(shí)流媒體服務(wù)器。
實(shí)時(shí)視頻流越來越流行。亞馬遜的 Twitch 和谷歌的 YouTube 等平臺(tái)擁有數(shù)百萬用戶,這些用戶消磨了無數(shù)小時(shí)的來觀看直播和錄制視頻。這些視頻服務(wù)通??梢悦赓M(fèi)使用,但需要你擁有一個(gè)帳戶,并且一般會(huì)將你的視頻內(nèi)容隱藏在廣告中。有些人不希望他們的視頻提供給大眾觀看,或者想更多地控制自己的視頻內(nèi)容。幸運(yùn)的是,借助強(qiáng)大的開源軟件,任何人都可以設(shè)置直播服務(wù)器。
入門
在本教程中,我將說明如何使用 Linux 或 BSD 操作系統(tǒng)設(shè)置基本的實(shí)時(shí)流媒體服務(wù)器。
搭建實(shí)時(shí)流媒體服務(wù)器不可避免地提到系統(tǒng)需求問題。這些需求多種多樣,因?yàn)閷?shí)時(shí)流媒體涉及許多因素,例如:
- 流媒體質(zhì)量: 你想以高清流媒體播放還是標(biāo)清視頻就可以滿足你的需求?
- 收視率: 你的視頻預(yù)計(jì)有多少觀眾?
- 存儲(chǔ): 你是否打算保留已保存的視頻流副本?
- 訪問: 你的視頻流是私有的還是向全世界開放的?
在硬件要求方面沒有固定規(guī)則,因此我建議你進(jìn)行測試,以便找到最適合你需求的配置。本項(xiàng)目中,我將服務(wù)器安裝在配有 4GB 內(nèi)存、20GB 硬盤空間和單個(gè) Intel i7 處理器內(nèi)核的虛擬機(jī)上。
本項(xiàng)目使用實(shí)時(shí)消息傳遞協(xié)議(RTMP)來處理音頻和視頻流。當(dāng)然還有其他協(xié)議可用,但我選擇 RTMP 是因?yàn)樗哂袕V泛的支持。鑒于像 WebRTC 這樣的開放標(biāo)準(zhǔn)變得更加兼容,我比較推薦這條路線。
同樣重要的是,要明白“實(shí)時(shí)”并不總是意味著即時(shí)。視頻流必須經(jīng)過編碼、傳輸、緩沖和顯示,這通常會(huì)增大延遲。延遲可以被縮短或延長,具體取決于你創(chuàng)建的流類型及其屬性。
設(shè)置 Linux 服務(wù)器
你可以使用許多不同的 Linux 發(fā)行版,但我更喜歡 Ubuntu,因此我下載了 Ubuntu 服務(wù)器版 作為我的操作系統(tǒng)。如果你希望你的服務(wù)器具有圖形用戶界面(GUI),請隨意使用 Ubuntu 桌面版 或其多種風(fēng)味版本之一。然后,我在我的計(jì)算機(jī)或虛擬機(jī)上啟動(dòng)了 Ubuntu 安裝程序,并選擇了最適合我的環(huán)境的設(shè)置。以下是我采取的步驟。
注意:因?yàn)檫@是一個(gè)服務(wù)器,你可能需要設(shè)置靜態(tài)網(wǎng)絡(luò)。
安裝程序完成并重新啟動(dòng)系統(tǒng)后,你會(huì)看到一個(gè)可愛的新 Ubuntu 系統(tǒng)。 與任何新安裝的操作系統(tǒng)一樣,安裝任何可用的更新:
-
sudo apt update
-
sudo apt upgrade
這個(gè)流媒體服務(wù)器將使用非常強(qiáng)大通用的 Nginx 網(wǎng)絡(luò)服務(wù)器,所以你需要安裝它:
-
sudo apt install nginx
然后你需要獲取 RTMP 模塊,以便 Nginx 可以處理你的媒體流:
-
sudo add-apt-repository universe
-
sudo apt install libnginx-mod-rtmp
修改你的網(wǎng)頁服務(wù)器配置,使其能夠接受和傳送你的媒體流。
-
sudo nano /etc/nginx/nginx.conf
滾動(dòng)到配置文件的底部并添加以下代碼:
-
rtmp {
-
server {
-
listen 1935;
-
chunk_size 4096;
-
application live {
-
live on;
-
record off;
-
}
-
}
-
}
保存配置。我是使用 Nano 來編輯配置文件的異端。在 Nano 中,你可以通過快捷鍵 Ctrl+X
、Y
并按下回車來保存你的配置。
這么一個(gè)非常小的配置就可以創(chuàng)建一個(gè)可工作的流服務(wù)器。稍后你將添加更多內(nèi)容到此配置中,但這是一個(gè)很好的起點(diǎn)。
在開始第一個(gè)流之前,你需要使用新配置重新啟動(dòng) Nginx:
-
sudo systemctl restart nginx
設(shè)置 BSD 服務(wù)器
如果是“小惡魔”(LCTT 譯者注:FreeBSD 的標(biāo)志是一個(gè)拿著叉子的紅色小惡魔)的信徒,那么建立并運(yùn)行一個(gè)流媒體服務(wù)器也非常容易。
前往 FreeBSD 網(wǎng)站并下載最新版本。在你的計(jì)算機(jī)或虛擬機(jī)上啟動(dòng) FreeBSD 安裝程序,然后執(zhí)行初始步驟并選擇最適合你環(huán)境的設(shè)置。由于這是一個(gè)服務(wù)器,你可能需要設(shè)置靜態(tài)網(wǎng)絡(luò)。
在安裝程序完成并重新啟動(dòng)系統(tǒng)后,你應(yīng)該就擁有了一個(gè)閃亮的新 FreeBSD 系統(tǒng)。像任何其他新安裝的系統(tǒng)一樣,你可能希望更新所有內(nèi)容(從這一步開始,請確保你以 root 身份登錄):
-
pkg update
-
pkg upgrade
安裝 Nano 來編輯配置文件:
-
pkg install nano
這個(gè)流媒體服務(wù)器將使用非常強(qiáng)大通用的 Nginx 網(wǎng)絡(luò)服務(wù)器。 你可以使用 FreeBSD 所擁有的優(yōu)秀 ports 系統(tǒng)來構(gòu)建 Nginx。
首先,更新你的 ports 樹:
-
portsnap fetch
-
portsnap extract
進(jìn)入 Nginx ports 目錄:
-
cd /usr/ports/www/nginx
運(yùn)行如下命令開始構(gòu)建 Nginx:
-
make install
你將看到一個(gè)屏幕,詢問你的 Nginx 構(gòu)建中要包含哪些模塊。對于這個(gè)項(xiàng)目,你需要添加 RTMP 模塊。向下滾動(dòng)直到選中 RTMP 模塊,并按下空格鍵。然后按回車鍵繼續(xù)剩下的構(gòu)建和安裝。
Nginx 安裝完成后,就該為它配置流式傳輸了。
首先,在 /etc/rc.conf
中添加一個(gè)條目以確保 Nginx 服務(wù)器在系統(tǒng)啟動(dòng)時(shí)啟動(dòng):
-
nano /etc/rc.conf
將此文本添加到文件中:
-
nginx_enable="YES"
接下來,創(chuàng)建一個(gè)網(wǎng)站根目錄,Nginx 將從中提供其內(nèi)容。我自己的目錄叫 stream
:
-
cd /usr/local/www/
-
mkdir stream
-
chmod -R 755 stream/
現(xiàn)在你已經(jīng)創(chuàng)建了你的流目錄,通過編輯配置文件來配置 Nginx:
-
nano /usr/local/etc/nginx/nginx.conf
在文件頂部加載你的流媒體模塊:
-
load_module /usr/local/libexec/nginx/ngx_stream_module.so;
-
load_module /usr/local/libexec/nginx/ngx_rtmp_module.so;
在 Server
部分下,更改 root
位置以匹配你之前創(chuàng)建的目錄位置:
Location / { root /usr/local/www/stream }
最后,添加你的 RTMP 設(shè)置,以便 Nginx 知道如何處理你的媒體流:
-
rtmp {
-
server {
-
listen 1935;
-
chunk_size 4096;
-
application live {
-
live on;
-
record off;
-
}
-
}
-
}
保存配置。在 Nano 中,你可以通過快捷鍵 Ctrl+X
、Y
,然后按回車鍵來執(zhí)行此操作。
如你所見,這么一個(gè)非常小的配置將創(chuàng)建一個(gè)工作的流服務(wù)器。稍后,你將添加更多內(nèi)容到此配置中,但這將為你提供一個(gè)很好的起點(diǎn)。
但是,在開始第一個(gè)流之前,你需要使用新配置重新啟動(dòng) Nginx:
-
service nginx restart
設(shè)置你的流媒體軟件
使用 OBS 進(jìn)行廣播
現(xiàn)在你的服務(wù)器已準(zhǔn)備好接受你的視頻流,是時(shí)候設(shè)置你的流媒體軟件了。本教程使用功能強(qiáng)大的開源的 Open Broadcast Studio(OBS)。
前往 OBS 網(wǎng)站,找到適用于你的操作系統(tǒng)的版本并安裝它。OBS 啟動(dòng)后,你應(yīng)該會(huì)看到一個(gè)首次運(yùn)行向?qū)?,該向?qū)椭闶褂米钸m合你的硬件的設(shè)置來配置 OBS。
OBS 沒有捕獲任何內(nèi)容,因?yàn)槟銢]有為其提供源。在本教程中,你只需為流捕獲桌面。單擊“來源”下的 “+” 按鈕,選擇“顯示捕獲”,然后選擇要捕獲的桌面。
單擊“確定”,你應(yīng)該會(huì)看到 OBS 鏡像了你的桌面。
現(xiàn)在可以將你新配置的視頻流發(fā)送到你的服務(wù)器了。在 OBS 中,單擊“文件 > 設(shè)置”。 單擊“流”部分,并將“串流類型” 設(shè)置為“自定義流媒體服務(wù)器”。
在 URL 框中,輸入前綴 rtmp://
后跟流媒體服務(wù)器的 IP 地址,后跟 /live
。例如,rtmp://IP-ADDRESS/live
。
接下來,你可能需要輸入“串流密鑰”,這是觀看你的流所需的特殊標(biāo)識(shí)符。 在“串流密鑰”框中輸入你想要(并且可以記?。┑娜魏侮P(guān)鍵詞。
單擊“應(yīng)用”,然后單擊“確定”。
現(xiàn)在 OBS 已配置為將你的流發(fā)送到你的服務(wù)器,你可以開始你的第一個(gè)視頻流。 單擊“開始推流”。
如果一切正常,你應(yīng)該會(huì)看到按鈕更改為“停止推流”,并且在 OBS 的底部將出現(xiàn)一些帶寬指標(biāo)。
如果你收到錯(cuò)誤消息,請仔細(xì)檢查 OBS 中的流設(shè)置是否有拼寫錯(cuò)誤。如果一切看起來都不錯(cuò),則可能是另一個(gè)問題阻止了它的工作。
觀看你的視頻流
如果沒有人觀看,就說明直播視頻不是很好,所以請成為你的第一個(gè)觀眾!
有許多支持 RTMP 的開源媒體播放器,但最著名的可能是 VLC 媒體播放器。
安裝并啟動(dòng) VLC 后,通過單擊“媒體 > 打開網(wǎng)絡(luò)串流” 打開你的流。輸入你的流的路徑,添加你在 OBS 中設(shè)置的串流密鑰,然后單擊“播放”。 例如,rtmp://IP-ADDRESS/live/SECRET-KEY
。
你現(xiàn)在應(yīng)該可以看到自己的實(shí)時(shí)視頻流了!
接下來要做什么?
本項(xiàng)目是一個(gè)非常簡單的設(shè)置,可以讓你開始工作。 以下是你可能想要使用的另外兩個(gè)功能。
-
限制訪問: 你可能想要做的下一件事情是限制對你服務(wù)器的訪問,因?yàn)槟J(rèn)設(shè)置允許任何人與服務(wù)器之間進(jìn)行流傳輸。有多種設(shè)置方法,例如操作系統(tǒng)防火墻、.htaccess 文件,甚至使用 STMP 模塊中的內(nèi)置訪問控制。
-
錄制流: 這個(gè)簡單的 Nginx 配置只會(huì)流傳輸而不會(huì)保存你的視頻,但這很容易修改。在 Nginx 配置文件中的 RTMP 部分下,設(shè)置錄制選項(xiàng)和要保存視頻的位置。確保你設(shè)置的路徑存在并且 Nginx 能夠?qū)懭胨?/p>
-
application live {
-
live on;
-
record all;
-
record_path /var/www/html/recordings;
-
record_unique on;
-
}
-
實(shí)時(shí)流媒體的世界在不斷發(fā)展,如果你對更高級(jí)的用途感興趣,可以在互聯(lián)網(wǎng)上找到許多其他很棒的資源。祝你好運(yùn),直播快樂!
原文鏈接:https://linux.cn/article-14159-1.html