【问题标题】:Nginx-Rtmp not able to set latencyNginx-Rtmp 无法设置延迟
【发布时间】:2022-06-14 06:20:23
【问题描述】:

我正在使用 nginx-rtmp 模块从我的相机捕获 RTMP 流并将它们传输到其他系统。

一般来说,我的设置工作正常,可以正常生成 .m3u8 文件。例如:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:23
#EXT-X-TARGETDURATION:50
#EXT-X-DISCONTINUITY
#EXTINF:49.957,
verification-23.ts

但是如您在上面的示例中所见,生成的片段始终是 50 秒。

这会导致播放延迟超过 50 秒,我想避免这种情况。

我尝试将 Nginx 参数减少到,例如片段为 3 秒,播放列表为 15 秒:

hls_fragment 3s;
hls_playlist_length 15s;

但它没有用。 .m3u8 文件仍然使用#EXTINF:49.957 生成。

是否可以通过 Nginx 配置减少延迟?或者它可能是相机上的某种附加配置?

我当前的nginx.conf 文件:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
  worker_connections 768;
}

rtmp {
  server {
    listen 1935;
    chunk_size 2000;

    application live {
      live on;

      hls on;
      hls_path /tmp/hls;
      hls_fragment 50s;
      hls_playlist_length 60s;

      deny play all;
    }
  }
}

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

  server {
    server_name stream.mydomain.pl;

    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 /tmp;
    }

    # Certbot configuration
    # ...

}

【问题讨论】:

  • 只是把显而易见的事情排除在外,您是否在修改后重新加载了 Nginx 配置?

标签: nginx http-live-streaming rtmp nginx-rtmp


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
相关资源
最近更新 更多