配置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_fragmenthls_playlist_length),实时删除过时的内容,以确保直播流的连贯性。直播结束后,这些内容最终会被自动删除,不会长期占用服务器存储空间。

注意

  • 如果需要更高级的安全措施防止未经授权的推流,可能需要考虑使用额外的身份验证方案。
  • 对于希望永久保存直播内容的使用者,应通过推流软件或额外的录制工具设置录制功能,而不依赖HLS片段的临时保存。
posted @ 2024-03-21 00:19  spacelit  阅读(2425)  评论(0编辑  收藏  举报