未生成 Nginx rtmp 模块 m3u8 文件

Nignx rtmp module m3u8 file not generated

我正在尝试使用 nginx rtmp 模块创建一个本地流媒体服务器。服务器本身似乎工作正常,因为我可以使用 OBS 流式传输到服务器。服务器将 .ts 视频文件存储在“/usr/local/nginx/sbin/hls”目录下,但不会创建与它们相关联的 m3u8 文件。

配置文件如下;

#user  nobody;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

rtmp {

    server {

        listen 1935;  #listen port

        chunk_size 4096;


        application live {  #rtmp push stream request path 
            live on;
            hls on;
            hls_path /usr/local/nginx/sbin/hls/;
            hls_fragment 3s;
            hls_playlist_length 18s;
        deny play all;
        }
    }
}


http {
    sendfile off;
    tcp_nopush on;
    # aio on;
    directio 512;
    default_type application/octet-stream;

    server {
        listen 8080;

        location / {
            # Disable cache
            add_header 'Cache-Control' 'no-cache';

            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';

            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }

            types {
                application/dash+xml mpd;
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }

            root /usr/local/nginx/sbin/;
        }
    }
}

解决方法是通过设置流密钥来修复。 生成的视频文件被命名为 -n.ts(n 是视频编号)。设置流码后,文件名变为“streamkey-n.ts”