Copy link to clipboard
Copied
I'm noticing a 13-16 second delay with live streams to iOS devices. Is there any way to improve this delay time by modifying the Event.xml parameters or the Apache hlshttp_module parameters in httpd.conf?
Thank you for any tips.
Copy link to clipboard
Copied
Apples HLS spec for client says that client will play the 3rd last segment in the playlist. So you are bound to get the latency of 3*media-file-duration. In FMS, we set media file duration to be 8000 ms (8 sec).. You can try to reduce it to 4000 or 2000 ..in either httpd.conf, or event.xml, application.xml
However, you may read http://knowfms.wordpress.com/2011/09/22/best-practices-for-setting-ios-media-file-duration/ for knowing the implications (pros-cons) of this..
Copy link to clipboard
Copied
Great, thanks. I saw the parameter media-file-duration in httpd.conf but I assume this is the same as FragmentDuration in Event.xml, correct?
Copy link to clipboard
Copied
No its not same - it needs to same or multiple of FragmentDuration. I think article which Nitin has pointed out in his previous post should help you understand things better,
Copy link to clipboard
Copied
I have the same problem,..the delay around 8~12 seconds,..
I changed the keyframe frequency to 1 second in Flash Media Live Endcoder's video setting,..
and the "httpd.conf" config file in "Flash Media Server4.5\Apache2.2\conf",..
<IfModule hlshttp_module>
<Location /hls-live>
xxxxxxxxxxxxx
HLSMediaFileDuration 2000
the other config is default,..can't solve this problem,..anyone can help us>??
Copy link to clipboard
Copied
Just request the m3u8 from browser and download it.. This is plan text file. Just check that your target duration is set to 2 after the httpd.conf change. If not, you have either not restarted the apache server after the change or Event.xml or Application.xml is overridign this vlaue..
Regarding delay.. I am not sure you can get better than this on Http streaming.. I hope you read the article and understands why all Http streaming protocols suffers from delay..
Copy link to clipboard
Copied
Nitin Goel, thanks for your help!
I have readed your link in previous post, I have a little bit understands why have delay in the http streaming protocols
But the delay is around ten more second, I think it must somhavee problem in my setting.
After I restart the server after change the "httpd.conf" file and check m3u8 's xml, the duration is 0.
I have find the 2 Event.xml file in "Flash Media Server 4.5" folder
"sample\application\livepkgr\events\_definst_\liveevent"
I don't know where is this file's duration setting.
"Apache2.2\manual\mod"
<FragmentDuration>4000</FragmentDuration>
<SegmentDuration>400000</SegmentDuration>
<DiskManagementDuration>3</DiskManagementDuration>
And I find the Application.xml in "application\livepkgr"
the only 1 setting is
<Live>
<AssumeAbsoluteTime>true</AssumeAbsoluteTime>
</Live>
Copy link to clipboard
Copied
In httpd.conf , you can edit HLSMediaFileDuration .. it is specified in milliseconds
<Location /hls-live>
HLSHttpStreamingEnabled true
HttpStreamingLiveEventPath "../applications"
HttpStreamingContentPath "../applications"
HLSMediaFileDuration 8000
HLSSlidingWindowLength 6
HLSFmsDirPath ".."
HLSM3U8MaxAge 2
HLSTSSegmentMaxAge -1
Options -Indexes FollowSymLinks
</Location>
In Event.xml
You can add
<Recording>
</Recording>
<HLS>
<MediaFileDuration>2000</MediaFileDuration>
</HLS>
<HLS> tag has to be sibling tag of the <Recording>
Same applies to Application.xml
Read Application-level and event-level configurations for live HLS @ http://help.adobe.com/en_US/flashmediaserver/devguide/WSeb6b7485f9649bf23d103e5512e08f3a338-8000.htm...
Copy link to clipboard
Copied
Am I correct in assuming that Event.xml overrides Application.xml and httpd.conf, and Application.xml overrides httpd.conf? Then httpd.conf values are used if they are not specified in the Application or event?
Copy link to clipboard
Copied
Yes you are right in your assumptions.