0

I'm using nginx-rtmp module to capture RTMP streams from my cameras and transmit them to further systems.

Generally my setup is working fine and generating .m3u8 files properly. For example:

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

But the fragments that are generated are always 50s as you can see on the above example.

This is causing more than 50s delay in playback that I would like to avoid.

I tried to decrease Nginx parameters to, for example 3s for fragment and 15s for playlist:

hls_fragment 3s;
hls_playlist_length 15s;

but it didn't work. .m3u8 files were still generated with #EXTINF:49.957.

Is it possible to decrease the delay with Nginx configuration? Or it might be some kind of additional configuration on the cameras?

My current nginx.conf file:

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
    # ...

}
David
  • 5,882
  • 3
  • 33
  • 44
Krzysztof Majewski
  • 2,494
  • 4
  • 27
  • 51
  • 1
    Just getting the obvious out of the way, did you reload the Nginx config after modifying it? – aergistal Jun 08 '22 at 07:54
  • Did you try the option `rtmp_auto_push`? It's mentioned on https://github.com/arut/nginx-rtmp-module – David Jun 13 '22 at 22:37

0 Answers0