unfortunately HLS, by design, introduces significant latency. The HLS protocol works by first creating multiple "chunks" on disk, typically 10 seconds, and then organizing them into a playlist (the m3u8 file). Most HLS players will not start playing an HLS stream until there are at least 3 chunks available, meaning 30 seconds of video! You can reduce the latency by reducing the size of the chunkLength parameter, but you will never get true live video out of HLS.
To get true live, low latency video you have to stick with the traditional live streaming protocols: RTMP, RTSP, MPEG-TS