Hello,
Unfortunately HLS will always have some delay involved, it is the major drawback of that protocol. The delay is caused by two factors: the size of the *.ts file chunks and the length of the playlist. By default (and by recommendation from Apple) the chunk size is 10 seconds. The playlist length by default (and again by recommendation by Apple) is 10. In addition to this, most iOS players will not play an HLS stream until there are at least 3 or 4 chunks present in the playlist. This means that you have a minimum of 30 seconds of delay, and potentially as much as 100 seconds.
To reduce this delay, we can tweak the createHLSStream command to reduce both the chunk size and the playlist length. For the chunks, you don’t want to make them too small, otherwise you risk thrashing and buffering. I would recommend you not set "chunkLength" to anything less than 5 seconds. For the playlist, it can’t be less than 4 otherwise some players will never play the stream. I would again recommend 5. This means you have a minimum of 15 seconds delay and a maximum of 25 seconds.
To get away from the delays of HLS your options are a bit limited, as iOS does not natively support any other protocols. You can use a player like Rock Player (http://www.rockplayer.com) to send RTSP, but i believe that it must be installed (as opposed to loaded through via Javascript like Flash).
As for the freezing in your stream, it sounds like there is a connection problem either between the EMS and the camera, or between the EMS and your player. I would suspect the camera connection is getting periodically lost for some reason, but would need to see the logs to be sure. Could you post them here?
Thanks,
Bryan