目錄
影音串流服務如 YouTube 允許用戶向線上觀眾廣播內容。然而,這類平台的設置雖然簡單,自定義選項卻有限,並受到嚴格的政策限制。
如果您想擁有完全的控制權,建立自己的影音串流伺服器將是一個不錯的選擇。其中,使用來自供應商如 TAKI Cloud 的雲端主機(VPS)是最簡便的方法。TAKI Cloud 雲端主機通常包括了助於簡化配置流程的功能。
小編在本文章將說明如何在 Ubuntu VPS 上設置專屬的影音串流伺服器。小編還將說明如何啟用其他串流協議,並確保您的廣播可以透過網頁瀏覽器訪問。
什麼是影音串流伺服器?
影音串流伺服器是一種中介系統,使您能夠將影音內容從本地系統實時直播到線上觀眾。
該直播過程涉及實時編碼影音內容,將其切割成小型數據包,再傳送至客戶端。由於媒體傳輸是連續進行的,因此影音串流伺服器不會在本地儲存任何媒體文件。
設定串流媒體伺服器的先決條件
要設置自己的影音串流伺服器,您需要運行 Linux 操作系統的虛擬私人服務器(VPS),例如 Ubuntu 22.04。它還必須與 NGINX 網絡伺服器兼容,因為我們將使用它的數據傳輸模塊。
此外,您的伺服器必須支持 SSH 連接以遠程執行命令。您的本地系統還必須安裝像 PuTTY 這樣的 SSH 客戶端來訪問 VPS。對於 Linux 和 MacOS,使用內置的終端機。
如何建立影音串流伺服器
一旦您熟悉了 Linux 命令,請繼續閱讀以了解如何透過八個步驟設定您自己的影音串流伺服器。
1. 購買雲端主機 VPS
要建立自己的影音串流伺服器,首先需要購買雲端主機(VPS)。請從信譽良好的供應商那裡選購合適的方案,考慮我們之前所解釋的先決條件來選擇最適合廣播影音內容的 VPS 托管服務。
在這些條件下,TAKI Cloud 是您的理想選擇。我們所有的 VPS 方案都包含瀏覽器終端,這使您無需使用 SSH 客戶端就能直接透過網頁瀏覽器連接到系統,從而簡化了影音串流伺服器的設置過程。
選擇 VPS 方案時,也要確保其提供高速連接和充足的帶寬,這對於需要持續且連續數據傳輸的視頻串流來說非常重要。
TAKI Cloud 的 VPS 提供最高 300 Mb/s 的連接速度和高達 32 TB 的帶寬。我們的高性能網路確保您的影音串流平台能夠可靠地廣播視頻,且不會出現緩衝問題。
2. 設定您的 VPS
在購買並設置您的 VPS 方案後,我們需要更新其存儲庫並安裝影音串流伺服器軟件,以準備好主機環境。
首先,請使用 PuTTY 或瀏覽器終端通過 SSH 連接到您的伺服器。您可以在 TAKI Cloud 的會員後台裡找到 VPS 概覽菜單中的 SSH 存取標籤下找到登錄憑證。預設情況下,您將以 root 身份連接。
但是,我們將創建另一個超級用戶,因為如果不小心,以 root 身分執行命令可能會導致嚴重問題。 為此,請執行以下命令:
adduser your-username
輸入所需資訊,例如密碼、名稱和其他詳細資訊。 按 Y 並按 Enter 鍵確認。
接下來,授予新用戶超級用戶權限,以使用 sudo 啟用管理命令執行。 您可以輸入以下內容來執行此操作:
usermod -aG sudo your-username
使用以下命令切換到新用戶:
su your-username
輸入使用者的密碼,您應該會看到命令列 shell 發生變化。 現在,讓我們透過更新系統套件來準備伺服器,以確保您從本機儲存庫取得最新的軟體版本:
sudo apt update
sudo apt upgrade
請注意,這些命令僅適用於基於 Debian 的作業系統,例如 Ubuntu。 對於其他發行版,請將 apt 替換為相應的套件管理器,例如 CentOS 中的 dnf 或 yum:
sudo yum update
sudo yum upgrade
3. 安裝 NGINX 和 RTMP 模組
在影音串流伺服器上,NGINX 將接收客戶端的請求,處理它們,並將查詢的內容傳送給使用者。 要在 Ubuntu 中安裝它,請執行以下命令:
sudo apt install -y nginx
現在,執行以下命令以在 VPS 自動重新啟動時啟動 NGINX:
sudo systemctl enable nginx
使用此命令驗證其狀態,檢查 NGINX 是否處於活動狀態並正確配置。
sudo systemctl status nginx
終端應用程式應將 NGINX 顯示為活動且正在運行,類似於下面的範例。
現在,我們將安裝即時消息傳輸協議(RTMP)模塊,這將使 NGINX 串流伺服器能夠以低延遲將視頻內容傳送到客戶端機器上。
在直播視頻串流過程中,這個協議會傳送您的廣播軟件編碼的數據包。然後,用戶的機器將重新編譯數據以顯示所請求的視頻。
要安裝 NGINX RTMP 模塊,請執行以下命令:
sudo apt install -y libnginx-mod-rtmp
請注意,之前的所有安裝命令都是從系統的套件管理器存儲庫中檢索軟件,這表示它們可能不是最新版本。
如果您需要最新版本,請直接從它們的 GitHub 存儲庫下載 NGINX 和 RTMP。在開始之前,請安裝以下構建套件所需的依賴項:
sudo apt install build-essential git libpcre3-dev libssl-dev zlib1g-dev
現在,使用這些 Git 克隆命令來取得兩個軟體儲存庫:
sudo git clone https://github.com/arut/nginx-rtmp-module.git
sudo git clone https://github.com/nginx/nginx.git
切換到NGINX目錄並執行編譯腳本。 為此,請隨後執行以下一系列命令:
cd nginx
./auto/configure --add-module=../nginx-rtmp-module
make
sudo make install
4. 配置 NGINX 進行影音串流
完成 RTMP 伺服器安裝後,配置 NGINX 以啟用即時視訊串流。 為此,請使用 nano 等文字編輯器開啟 nginx.conf 檔案:
sudo nano /etc/nginx/nginx.conf
在文字編輯器視窗中,在文件末尾新增 RTMP 設定區塊。 例如,我們將插入這些基本設定:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
- listen 1935:RTMP 伺服器監聽的連接埠號碼,預設為 1935。
- chunk_size 4069:伺服器將發送的視訊區塊的大小(以位元組為單位),預設為 4096 位元組或 4 KB。
- application live:將在 /live URL 上提供的即時串流應用程式。
- live on:即時模式切換,允許多個使用者同時連接到您的串流。
- record off:RTMP 錄製功能切換。 將其設定為關閉意味著伺服器不會在本地儲存串流媒體視訊。
allow publish 127.0.0.1;
deny publish all;
雖然您可以完全控制自己的影音串流伺服器,但請謹慎使用這些指令,因為它們可能會影響您的 VPS 效能。 為了確保可靠的串流傳輸,請根據您的需求和伺服器的硬體資源設定正確的值。
以下是幾個重要的串流媒體設定參數及其對效能的影響:
- chunk_size:大資料區塊可能會導致高延遲,而將其設為低則會因額外傳輸而導致開銷。
- max_connections:RTMP 伺服器的最大並發連線數,如果設定得太高,可能會消耗大量視訊串流頻寬。
- record:錄製模式的切換,啟用後會消耗額外的運算能力和儲存空間。
- max_message:作為訊息發送的輸入資料的最大大小。 設定得太高會消耗更多內存,並可能導致伺服器不穩定。
我們建議使用預設值並逐漸調整它,看看新設定是否會影響您的視訊伺服器效能。 另外,請記住,在多個頻道上廣播內容將消耗額外的資源。
將 RTMP 區塊新增至 NGINX 設定檔後,按 Ctrl + X → Y → Enter 儲存變更。 執行以下命令來驗證您的設定並偵測語法錯誤:
sudo nginx -t
現在,使用以下命令重新載入 NGINX Web 伺服器配置以套用設定:
sudo nginx -s reload
5. 設定 CDN
- 開啟 Cloudflare 網站。 點擊“註冊”建立新帳戶並完成驗證過程。
- 登入 Cloudflare 儀表板,然後點擊螢幕右上角的新增網站。
- 在提供的欄位中輸入您的域名,然後按一下繼續確認。
- 選擇您喜歡的方案。 我們建議選擇底部的免費版本,因為您可以隨時升級。 點選“繼續”繼續。
- 系統將提示您顯示 DNS 記錄審核頁面。 確保所有記錄都指向您的域名,然後按一下繼續。
- 在下一個畫面中,Cloudflare 將為您提供網域的名稱伺服器。 複製並將它們保存在安全位置。
不要關閉儀表板,因為我們稍後將使用它來檢查配置。 現在,讓我們將您的網域名稱指向新的網域伺服器。
到您購買域名的註冊商,將下面圖示的nameserver 1 與nameserver 2 在註冊商找尋變更nameserver 選項並填入 cloudflare 提供的ns1 nameserver與ns2 nameserver以做變更。
返回 Cloudflare 儀表板並按一下立即檢查網域名稱伺服器。 如果顯示包含您的網域的訊息,請按一下繼續。 系統將提示您快速入門指南,但我們稍後會選擇「完成」。
就是這樣! 您的影音串流現在透過 Cloudflare CDN 提供。
6. 設定串流軟體
串流媒體伺服器準備好後,在本機電腦上設定視訊串流軟體以投射內容。 由於有多種選擇,我們將提供幾種流行的工具來幫助您選擇:
- Open broadcaster software (OBS):一款開源直播軟體,具有使用者友善的介面和多功能的功能。
- Streamlabs:一種基於 OBS 的串流解決方案,具有附加功能,但資源更加密集且可靠性較低。
- Wirecast:優質的即時視訊廣播公司,具有內建編輯功能和廣泛的媒體串流支援。
- XSplit:一種受歡迎的工具,可透過外掛程式擴充功能,但由於缺乏預設而配置複雜。
要選擇最佳的串流軟體,請考慮電腦的作業系統、硬體功能和工具需求。 在本文章中,我們將使用 OBS,因為它是免費、輕量級且易於設定。
從官方頁面下載 OBS Studio 並開啟安裝套件。 請依照安裝精靈的說明完成設定程序。 完成後,打開 obs64.exe 應用程式。
現在,導覽至“設定”→“串流”,將 OBS 與您的 RTMP 伺服器連接。 從服務下拉選單中選擇自訂。 在伺服器欄位中,輸入以下位址:
rtmp://your-server-ip/live
將 your-server-ip 替換為您的 VPS 的實際 IP 位址。 另外,如果修改 RTMP 區塊中的應用程式路徑,請變更 /live。
流密鑰位於 RTMP 流 URL 的末端。 例如,如果您使用 test,您將使用下列位址連接到伺服器:
rtmp://your-server-ip/live/test
我們還將取消選取“使用身份驗證”選項。 輸入所有必需的資訊後,按一下「套用」和「確定」。
接下來,配置流的場景、來源和音訊設定。 如果您不熟悉串流媒體軟體,請查看 OBS 串流設定快速入門指南以了解更多資訊。 點擊開始串流以播放您的影片。
7. 測試您的直播
讓我們檢查您的影片是否正確串流到伺服器。 您可以透過 VLC 等媒體播放器存取 URL 來執行此操作。 步驟如下:
- 從官方頁面下載VLC並將其安裝在本機電腦上。
- 開啟媒體播放器,選擇左上角的“媒體”,然後按一下“開啟網路串流”。
- 在「開啟媒體」視窗中,選擇「網路」標籤。
- 將您的 RTMP 流 URL 貼上到提供的欄位中,然後點擊「串流」開始串流您的影片。
您可以使用其他支援 RTMP 的媒體播放器來檢查 URL 是否有效。如果遇到錯誤,請確保 URL 正確,特別是在 NGINX 配置中更改應用程式路徑並使用特定的串流金鑰時。
此外,請檢查您的配置文件是否包含允許或阻止從特定 IP 地址串流的設置。如果有,請確保將您的 VPS 和廣播視頻的系統放入允許清單中。
同時,使用在線工具(例如 whatismyipaddress)檢查正確的地址,並查看值是否相符。在更改配置文件後,請務必始終重新載入 NGINX 以應用這些更改。
另外,請確保您的防火牆允許通過端口 1935、80 和 443 的 NGINX 連接。您可以使用 Linux 內建工具(如 iptables 或 Uncomplicated Firewall),或者按照以下步驟使用 TAKI Cloud 的防火牆配置功能:
新增一條透過連接 port 1935 接受來自任何來源的連接的規則,類似於以下內容。
點選新增規則。 返回主防火牆設定頁面並啟動您的 RTMP 規則。現在,返回 VLC 並嘗試串流視訊以檢查問題是否已解決。
8. 保護您的影音串流伺服器
- 透過 SSH 連接到您的 VPS 並切換到超級用戶帳戶。
- 使用以下命令安裝相依性。 請記住根據系統的套件管理器替換 apt:
sudo apt install python3 python3-venv libaugeas0
- 透過執行以下命令設定 Python 虛擬環境:
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
- 使用以下命令在 NGINX 上安裝 Certbot:
sudo /opt/certbot/bin/pip install certbot certbot-nginx
- 現在,建立一個符號鏈接,這是一個允許您從任何路徑執行 Certbot 的快捷方式:
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
- 使用以下命令安裝並啟動 SSL 憑證:
sudo certbot --nginx
恭喜您,您的直播平台已安全! 請記住每 90 天更新一次 SSL 憑證或使用以下指令啟用自動續約:
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
除了 SSL 外,請務必在您的 nginx.conf 文件中添加 deny 指令,以防止其他用戶對您的 VPS 進行串流。否則,駭客可能會利用未經授權的連接來尋找安全漏洞。
同樣重要的是,在您的 VPS 上正確設置防火牆規則,僅開啟必要的端口並關閉其他端口。若將所有端口都開放,將使您的伺服器暴露於駭客可以利用的額外入口點。
如何使用其他 NGINX 串流協定
NGINX 網頁伺服器除了 RTMP 外,還提供了另外兩種視頻串流協議,您可以通過 nginx.conf 文件啟用這些協議。
例如,HTTP Live Streaming (HLS) 協議非常適合多平台串流,因為它與任何網絡瀏覽器和 HTML5 視頻播放器兼容。然而,由於延遲較高,它不適合於遊戲或互動式廣播。
要啟用 HLS,請在您的視頻串流伺服器配置文件中的應用程序 live {} 中添加以下指令:
hls on;
hls_path /var/www/html/stream/hls;
hls_fragment 15;
啟用 hls on 設置即可使用串流協議,同時 hls_path 定義了存儲廣播視頻片段的目錄。而 hls_fragment 目錄則設置了發送給用戶的每個視頻段的長度。
另一個協議是 Dynamic Adaptive Streaming over HTTP (DASH),它是開源且可自定義的。這允許您啟用自適應比特率串流,以保持在不穩定網路下的最佳視頻質量。
然而,DASH 不與一些播放器和網絡瀏覽器兼容。此外,它是一種過時的協議,對長期使用可能不夠可靠。與 HLS 類似,您可以通過添加以下配置來啟用 DASH:
dash on;
dash_path /var/www/html/tmp/dash;
dash_fragment 15;
您可以啟用這兩種協議,用戶端將根據其媒體播放器相容性或請求標頭要求自動選擇這兩種協議。 為此,只需在設定檔中添加這兩個指令即可。
讓串流伺服器可以透過網頁瀏覽器訪問
由於使用者更傾向於透過網頁瀏覽器而非專用的媒體播放器(如 VLC)來直播視頻,因此必須確保您的媒體可以透過網頁瀏覽器訪問。在進行此操作之前,請啟用 HLS 和 DASH 協議,因為僅使用 RTMP 可能會導致兼容性問題。
您可以將設置添加到 nginx.conf 中,但我們將使用 /sites-available 內的單獨文件來組織代碼並簡化維護。這也可以將設置僅應用於特定網站以進行隔離。
要創建配置文件,請運行以下命令。請注意,它可能沒有擴展名:
sudo nano /etc/nginx/sites-available/rtmp
在 nano 文字編輯器中,新增以下設定:
server {
listen 9000;
location / {
add_header Access-Control-Allow-Origin *;
root /var/www/html/stream;
}
}
types {
application/dash+xml mpd;
}
保存您的更改並退出 nano。現在,進入 TAKI Cloud 後台的防火牆配置菜單,允許所有來源連接到端口 9000,我們將用該端口提供視頻服務。您可以選擇任何端口,但請勿使用已經為其他應用程序保留的端口,例如 NGINX 的 80 和 443。
同時,根據您的協議路徑指令修改根目錄路徑。如果您尚未創建文件夾,可以使用 mkdir 命令進行創建,方法如下:
sudo mkdir /var/www/html/stream
重新啟動 NGINX,然後您應該能夠透過網頁瀏覽器訪問串流,使用其 URL。請注意,根據協議不同,地址可能會有所不同。
要訪問 HLS 串流,請使用 http://your_domain:9000/hls/stream.m3u8。同時,使用 http://your_domain:9000/dash/stream.mdp 來觀看 DASH 廣播。請注意,您可能需要將 URL 嵌入 HTML 中,以使網頁瀏覽器能夠顯示它們。
結論
建立自己的伺服器能夠提供比 YouTube 等第三方視頻串流平台更靈活和更多控制權。最簡單的方法是在 Linux VPS 上安裝 NGINX 和 RTMP 模塊。
為了建立視頻串流伺服器,您需要購買一個支援這兩個軟件的 VPS 主機計劃,比如 Hostinger 的。通過 SSH 連接到它,並從 root 切換到其他超級使用者帳戶。使用 upgrade 命令來更新系統的存儲庫。
您可以從系統存儲庫或它們的 GitHub 頁面安裝 NGINX 和 RTMP,如果需要的話可以獲得最新版本。然後,打開 nginx.conf,添加 RTMP 塊以設置自定義視頻播放器配置。
配置 Cloudflare CDN 可以提高您的直播串流伺服器的穩定性。現在,您需要在本地系統上安裝視頻廣播軟件,然後輸入 RTMP 伺服器的 URL。開始串流後,使用 VLC 媒體播放器檢查視頻是否正確加載。
如何設定影音串流伺服器常見問題解答
在本文章中,我們將回答有關如何建立串流媒體服務的幾個常見問題。 如果您的問題仍未得到解答,請在下面的評論部分提問!
搭建自己的串流伺服器比使用 YouTube 和 Twitch 等平台更具靈活性和控制權。例如,您可以選擇不同的協議來編碼視頻,例如 RTMP、HLS 或 DASH。這還使您能夠廣播任何內容,或者使用這些平台可能會受到限制的盈利選項。
自己的影音串流伺服器的成本會因您的 VPS 主機供應商而異。 例如,您可以在 TAKI Cloud 上設定一台,起價為新台幣 966元/月。 此外,也要考慮其他服務的價格,例如 CDN 和網域訂閱。
選擇VPS進行串流時,請確保其提供足夠的頻寬和運算能力,以確保效能穩定。 此外,它必須與 NGINX 相容才能啟用 RTMP 模組並提供完整的 root 存取權限,以避免設定軟體時出現權限問題。