Linux中國

使用 OBS 搭建視頻流媒體伺服器

實時視頻流越來越流行。亞馬遜的 Twitch 和谷歌的 YouTube 等平台擁有數百萬用戶,這些用戶消磨了無數小時的來觀看直播和錄製視頻。這些視頻服務通常可以免費使用,但需要你擁有一個帳戶,並且一般會將你的視頻內容隱藏在廣告中。有些人不希望他們的視頻提供給大眾觀看,或者想更多地控制自己的視頻內容。幸運的是,藉助強大的開源軟體,任何人都可以設置直播伺服器。

入門

在本教程中,我將說明如何使用 Linux 或 BSD 操作系統設置基本的實時流媒體伺服器。

搭建實時流媒體伺服器不可避免地提到系統需求問題。這些需求多種多樣,因為實時流媒體涉及許多因素,例如:

  • 流媒體質量: 你想以高清流媒體播放還是標清視頻就可以滿足你的需求?
  • 收視率: 你的視頻預計有多少觀眾?
  • 存儲: 你是否打算保留已保存的視頻流副本?
  • 訪問: 你的視頻流是私有的還是向全世界開放的?

在硬體要求方面沒有固定規則,因此我建議你進行測試,以便找到最適合你需求的配置。本項目中,我將伺服器安裝在配有 4GB 內存、20GB 硬碟空間和單個 Intel i7 處理器內核的虛擬機上。

本項目使用 實時消息傳遞協議 Real-Time Messaging Protocol (RTMP)來處理音頻和視頻流。當然還有其他協議可用,但我選擇 RTMP 是因為它具有廣泛的支持。鑒於像 WebRTC 這樣的開放標準變得更加兼容,我比較推薦這條路線。

同樣重要的是,要明白「實時」並不總是意味著即時。視頻流必須經過編碼、傳輸、緩衝和顯示,這通常會增大延遲。延遲可以被縮短或延長,具體取決於你創建的流類型及其屬性。

設置 Linux 伺服器

你可以使用許多不同的 Linux 發行版,但我更喜歡 Ubuntu,因此我下載了 Ubuntu 伺服器版 作為我的操作系統。如果你希望你的伺服器具有圖形用戶界面(GUI),請隨意使用 Ubuntu 桌面版 或其多種風味版本之一。然後,我在我的計算機或虛擬機上啟動了 Ubuntu 安裝程序,並選擇了最適合我的環境的設置。以下是我採取的步驟。

注意:因為這是一個伺服器,你可能需要設置靜態網路。

安裝程序完成並重新啟動系統後,你會看到一個可愛的新 Ubuntu 系統。 與任何新安裝的操作系統一樣,安裝任何可用的更新:

sudo apt update
sudo apt upgrade

這個流媒體伺服器將使用非常強大通用的 Nginx 網路伺服器,所以你需要安裝它:

sudo apt install nginx

然後你需要獲取 RTMP 模塊,以便 Nginx 可以處理你的媒體流:

sudo add-apt-repository universe
sudo apt install libnginx-mod-rtmp

修改你的網頁伺服器配置,使其能夠接受和傳送你的媒體流。

sudo nano /etc/nginx/nginx.conf

滾動到配置文件的底部並添加以下代碼:

rtmp {
   server {
    listen 1935;
    chunk_size 4096;

    application live {
      live on;
      record off;
    }
  }
}

保存配置。我是使用 Nano 來編輯配置文件的異端。在 Nano 中,你可以通過快捷鍵 Ctrl+XY 並按下回車來保存你的配置。

這麼一個非常小的配置就可以創建一個可工作的流伺服器。稍後你將添加更多內容到此配置中,但這是一個很好的起點。

在開始第一個流之前,你需要使用新配置重新啟動 Nginx:

sudo systemctl restart nginx

設置 BSD 伺服器

如果是「小惡魔」(LCTT 譯者註:FreeBSD 的標誌是一個拿著叉子的紅色小惡魔)的信徒,那麼建立並運行一個流媒體伺服器也非常容易。

前往 FreeBSD 網站並下載最新版本。在你的計算機或虛擬機上啟動 FreeBSD 安裝程序,然後執行初始步驟並選擇最適合你環境的設置。由於這是一個伺服器,你可能需要設置靜態網路。

在安裝程序完成並重新啟動系統後,你應該就擁有了一個閃亮的新 FreeBSD 系統。像任何其他新安裝的系統一樣,你可能希望更新所有內容(從這一步開始,請確保你以 root 身份登錄):

pkg update
pkg upgrade

安裝 Nano 來編輯配置文件:

pkg install nano

這個流媒體伺服器將使用非常強大通用的 Nginx 網路伺服器。 你可以使用 FreeBSD 所擁有的優秀 ports 系統來構建 Nginx。

首先,更新你的 ports 樹:

portsnap fetch
portsnap extract

進入 Nginx ports 目錄:

cd /usr/ports/www/nginx

運行如下命令開始構建 Nginx:

make install

你將看到一個屏幕,詢問你的 Nginx 構建中要包含哪些模塊。對於這個項目,你需要添加 RTMP 模塊。向下滾動直到選中 RTMP 模塊,並按下空格鍵。然後按回車鍵繼續剩下的構建和安裝。

Nginx 安裝完成後,就該為它配置流式傳輸了。

首先,在 /etc/rc.conf 中添加一個條目以確保 Nginx 伺服器在系統啟動時啟動:

nano /etc/rc.conf

將此文本添加到文件中:

nginx_enable="YES"

接下來,創建一個網站根目錄,Nginx 將從中提供其內容。我自己的目錄叫 stream

cd /usr/local/www/
mkdir stream
chmod -R 755 stream/

現在你已經創建了你的流目錄,通過編輯配置文件來配置 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 位置以匹配你之前創建的目錄位置:

Location / {
  root /usr/local/www/stream
}

最後,添加你的 RTMP 設置,以便 Nginx 知道如何處理你的媒體流:

rtmp {
  server {
    listen 1935;
    chunk_size 4096;

    application live {
      live on;
      record off;
    }
  }
}

保存配置。在 Nano 中,你可以通過快捷鍵 Ctrl+XY,然後按回車鍵來執行此操作。

如你所見,這麼一個非常小的配置將創建一個工作的流伺服器。稍後,你將添加更多內容到此配置中,但這將為你提供一個很好的起點。

但是,在開始第一個流之前,你需要使用新配置重新啟動 Nginx:

service nginx restart

設置你的流媒體軟體

使用 OBS 進行廣播

現在你的伺服器已準備好接受你的視頻流,是時候設置你的流媒體軟體了。本教程使用功能強大的開源的 Open Broadcast Studio(OBS)。

前往 OBS 網站,找到適用於你的操作系統的版本並安裝它。OBS 啟動後,你應該會看到一個首次運行嚮導,該嚮導將幫助你使用最適合你的硬體的設置來配置 OBS。

OBS 沒有捕獲任何內容,因為你沒有為其提供源。在本教程中,你只需為流捕獲桌面。單擊「 來源 Source 」下的 「+」 按鈕,選擇「 顯示捕獲 Screen Capture 」,然後選擇要捕獲的桌面。

單擊「 確定 OK 」,你應該會看到 OBS 鏡像了你的桌面。

現在可以將你新配置的視頻流發送到你的伺服器了。在 OBS 中,單擊「 文件 > 設置 File > Settings 」。 單擊「 Stream 」部分,並將「 串流類型 Stream Type 」 設置為「 自定義流媒體伺服器 Custom Streaming Server 」。

在 URL 框中,輸入前綴 rtmp:// 後跟流媒體伺服器的 IP 地址,後跟 /live。例如,rtmp://IP-ADDRESS/live

接下來,你可能需要輸入「 串流密鑰 Stream key 」,這是觀看你的流所需的特殊標識符。 在「 串流密鑰 Stream key 」框中輸入你想要(並且可以記住)的任何關鍵詞。

單擊「 應用 Apply 」,然後單擊「 確定 OK 」。

現在 OBS 已配置為將你的流發送到你的伺服器,你可以開始你的第一個視頻流。 單擊「 開始推流 Start Streaming 」。

如果一切正常,你應該會看到按鈕更改為「 停止推流 Stop Streaming 」,並且在 OBS 的底部將出現一些帶寬指標。

如果你收到錯誤消息,請仔細檢查 OBS 中的流設置是否有拼寫錯誤。如果一切看起來都不錯,則可能是另一個問題阻止了它的工作。

觀看你的視頻流

如果沒有人觀看,就說明直播視頻不是很好,所以請成為你的第一個觀眾!

有許多支持 RTMP 的開源媒體播放器,但最著名的可能是 VLC 媒體播放器

安裝並啟動 VLC 後,通過單擊「 媒體 > 打開網路串流 Media > Open Network Stream 」 打開你的流。輸入你的流的路徑,添加你在 OBS 中設置的串流密鑰,然後單擊「 播放 Play 」。 例如,rtmp://IP-ADDRESS/live/SECRET-KEY

你現在應該可以看到自己的實時視頻流了!

接下來要做什麼?

本項目是一個非常簡單的設置,可以讓你開始工作。 以下是你可能想要使用的另外兩個功能。

  • 限制訪問: 你可能想要做的下一件事情是限制對你伺服器的訪問,因為默認設置允許任何人與伺服器之間進行流傳輸。有多種設置方法,例如操作系統防火牆、.htaccess 文件,甚至使用 STMP 模塊中的內置訪問控制
  • 錄製流: 這個簡單的 Nginx 配置只會流傳輸而不會保存你的視頻,但這很容易修改。在 Nginx 配置文件中的 RTMP 部分下,設置錄製選項和要保存視頻的位置。確保你設置的路徑存在並且 Nginx 能夠寫入它。
application live {
  live on;
  record all;
  record_path /var/www/html/recordings;
  record_unique on;
}

實時流媒體的世界在不斷發展,如果你對更高級的用途感興趣,可以在互聯網上找到許多其他很棒的資源。祝你好運,直播快樂!

via: https://opensource.com/article/19/1/basic-live-video-streaming-server

作者:Aaron J.Prisk 選題:lujun9972 譯者:Starryi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國