Nginx RTMP 流媒体服务器

@yeziruo  July 24, 2020

安装

多数的文章都是从头编译安装的,但是自Nginx 1.9(具体不知道)后,插件可以热加载,不再需要一开始就要编译入Nginx中,使用我们可以使用包管理器来快速安装:

(Debian/Nginx) sudo apt-get install nginx-full libnginx-mod-rtmp -y

配置

打开/etc/nginx/nginx.conf的配置文件,在末尾加入:

rtmp {
    server {
        listen 1926;
        chunk_size 4096;
        application live {
            #开启直播
            live on;
            #开启HLS
            #hls on;
            #HLS视频流目录
            #hls_path /var/www/html/live;
            #每个视频片段长度
            #hls_fragment 5s;
            #播放列表长度
            #hls_playlist_length 15s;
            #连续模式
            #hls_continuous on; 
            #删除多余流片段
            #hls_cleanup on;
            #嵌套模式
            #hls_nested on;
        }
    }
}

若需要HLS,则需要在HTTP配置文件中添加:

#root /var/www/html/;
#这里的路径应与上方视频流目录一致
location /live {
            types {
                    application/vnd.apple.mpegurl m3u8;
                    video/mp2t ts;
            }
            alias /var/www/html/live;
 }

推流

可以使用FFmpeg,但我这里使OBS

rtmp://<your_device_ip>:1926/live

HLS

将以下HTML保存到服务器,可通过游览器查看推流效果:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" name="viewport" content="width=device-width,initial-scale=1" />
    <title>HLS Live Test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/hls.js/8.0.0-beta.3/hls.min.js"></script>
</head>
<body>
    <video id="video" controls width="100%"></video>
    <script>
        var video = document.getElementById('video');
        var hls = new Hls();
        hls.loadSource('http://<your_device_ip>/live/index.m3u8');
        hls.attachMedia(video);
        hls.on(Hls.Events.MANIFEST_PARSED,function() {
        video.play();
        });
    </script>
</body>
</html>

添加新评论