配置Nginx以支援RTMP直播及HLS流播放
本文件旨在提供一套詳細指南,透過Nginx伺服器配置RTMP直播,並利用HLS(HTTP Live Streaming)技術實現瀏覽器直播觀看。
前提條件
- 已安裝Nginx及nginx-rtmp-module。
- 伺服器具有外網訪問能力,且相應埠(預設情況下為1935用於RTMP和8080用於HTTP)已在防火牆中開放。
配置RTMP直播
基本RTMP伺服器配置
開啟Nginx配置檔案(通常位置為/etc/nginx/nginx.conf
),並新增如下配置段以啟用RTMP功能:
rtmp {
server {
listen 1935; # RTMP標準埠
chunk_size 4096;
application live {
live on;
record off;
}
}
}
此配置段建立一個RTMP伺服器,監聽1935埠,並定義了一個名為live
的應用用於直播,且關閉了錄製功能。
推流金鑰設定
在RTMP URL中透過新增特定路徑或標識(即推流金鑰),用以區分不同的推流源。這在Nginx配置檔案中不直接定義,而是透過推流軟體(如OBS)在推流時指定。推流URL格式通常為:rtmp://your_server_ip/live/STREAM_KEY
,其中STREAM_KEY
為自定義的推流金鑰。
配置HLS直播播放
設定HLS支援
在相應的RTMP應用配置中啟用HLS並指定HLS檔案儲存的路徑:
application live {
live on;
record off;
# 啟用HLS
hls on;
hls_path /var/www/html/hls;
hls_fragment 3s;
hls_playlist_length 60s;
}
配置HTTP伺服器以支援HLS播放
新增或修改Nginx的HTTP伺服器配置,以提供對HLS內容的訪問:
http {
server {
listen 8080;
location /hls {
alias /var/www/html/hls;
add_header 'Access-Control-Allow-Origin' '*' always;
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
}
}
}
觀看直播
一旦配置完成並重啟了Nginx,即可使用OBS或其他支援RTMP的軟體推流到rtmp://your_server_ip/live/STREAM_KEY
。
為了透過瀏覽器觀看直播,直播流的觀眾可以使用以下URL格式:
http://your_server_ip:8080/hls/STREAM_KEY.m3u8
檔案儲存和清理
透過HLS技術生成和傳輸的影片檔案(.ts
檔案)和索引檔案(.m3u8
檔案)會被臨時儲存在hls_path
所指定的目錄下。Nginx會根據HLS的配置引數(如hls_fragment
和hls_playlist_length
),實時刪除過時的內容,以確保直播流的連貫性。直播結束後,這些內容最終會被自動刪除,不會長期佔用伺服器儲存空間。
注意
- 如果需要更高階的安全措施防止未經授權的推流,可能需要考慮使用額外的身份驗證方案。
- 對於希望永久儲存直播內容的使用者,應透過推流軟體或額外的錄製工具設定錄製功能,而不依賴HLS片段的臨時儲存。