配置Nginx以支持RTMP直播及HLS流播放
配置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片段的临时保存。