配置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片段的临时保存。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现