Hi Sean,
The main reason for the differences are in how each of the different methods deliver the video.
HLS delivers the videos in separate chunks or segments that are requested by the player as it needs them. The size of the chunks is determined by the cupertinoChunkDurationTarget property setting (default 10 seconds) and the key frame interval. Chunks are created at key frame boundaries so will be as close to the chunk duration target as the key frames will allow. For the best results, you should use a key frame interval that will multiply evenly to the chunk duration target. You can set the chunk duration target to a different value by setting the following property in the HTTPStreamer / Properties in your Application.xml or in Application > Properties > Custom Properties in the Wowza Streaming Engine Manager.
<Property>
<Name>cupertinoChunkDurationTarget</Name>
<Value>10000</Value>
<Type>Integer</Type>
</Property>
Because of the size of the chunks and the fact that the player needs to request them on demand, the delay that you are seeing is the time taken for this request. If you are close on your bandwidth then you will have to wait longer for the first chunk to be delivered.
In contrast, rtmp playback will start and seek a lot quicker because the player only needs to fill the playback buffer in order to start initially or after a seek request. The default rtmp buffer setting on JW player is 3 seconds and Wowza will send out a complete buffer duration of video as fast as the network connection will allow so it will normally fill in less time. Again, the closer the bandwidth is to the bitrate, the longer this will take.
Once the stream is running, rtmp will push out the stream data at roughly the video bitrate so that the player buffer remains full.
I wouldn’t go as far as saying that rtmp is a heavier protocol than HLS. It is public demand and the fact that iOS devices do not support flash that has made HLS so popular. RTMP is still probably the best option for flash based players or alternatively HDS which is a protocol similar to HLS but is designed around flash.
In an attempt to make player configuration simpler, JW Player has developed their own HLS implementation that will allow the HLS streams to play back in a flash player. As you are finding out, this is not as good as native HLS playback in iOS or Mac safari or RTMP in flash. The problems you are seeing in firefox and explorer are most likely player related as Wowza does not differentiate between players for HLS requests and will do the same thing each time to deliver the chunks.
I would suggest working with the team at JW Player to provide them with as much useful feedback as possible. As I mentioned in your other thread, set the player to use html5 as the primary on your HLS player and compare the results using Safari on a Mac OSX machine.
Lastly, from you description, it does sound like you may be using MediaCache to access your storage from your Wowza server. The old content will be flushed from MediaCache if it hasn’t been viewed for a while. If this is the case, have you tuned the MediaCache Settings or are you using the default settings.
You can adjust the TTL settings so that the content remains in the cache for longer and also the default block size so that you best utilise the network connection between the Wowza server and the storage.
If you are still having issues then please do send a request to Wowza Support where someone will be able to assist.
Roger.