An Open-source HLS Flash plugin that allows you to play HLS streams.
The plugin is compatible with the following players:
#EXTM3U
#EXTINF
#EXT-X-STREAM-INF
(Multiple bitrate)#EXT-X-ENDLIST
(VoD / Live playlist)#EXT-X-MEDIA-SEQUENCE
#EXT-X-TARGETDURATION
#EXT-X-DISCONTINUITY
#EXT-X-DISCONTINUITY-SEQUENCE
#EXT-X-PROGRAM-DATE-TIME
(optional, used to synchronize time-stamps and sequence number when switching from one level to another)#EXT-X-KEY
(AES-128 method supported only)#EXT-X-BYTERANGE
The plugin accepts several optional configuration options, such as:
hls_debug
(default false) - Toggle debug traces, outputted on JS consolehls_debug2
(default false) - Toggle verbose debug traces, outputted on JS consolehls_minbufferlength
(default -1) - Minimum buffer length in seconds that needs to be reached before playback can start (after seeking) or restart (in case of empty buffer)
-1
some heuristics based on past metrics are used to define an accurate value that should prevent buffer to stallminBufferLengthCapping
(default -1) - minimum buffer length capping value (max value) if minBufferLength is set to -1hls_lowbufferlength
(default 3) - Low buffer threshold in seconds. When crossing down this threshold, HLS will switch to buffering state, usually the player will report this buffering state through a rotating icon. Playback will still continue.hls_maxbufferlength
(default 300) - Maximum buffer length in seconds (0 means infinite buffering)hls_maxbackbufferlength
(default 30) - Maximum back buffer length in seconds (0 means infinite back buffering). back buffer is seekable without redownloading segments.hls_startfrombitrate
(default -1)
hls_startfromlevel
(default -1)
hls_autoStartMaxDuration
(default -1) max fragment loading duration ( bw test + fragment loading) in automatic start level selection mode (in ms)
hls_seekfromlevel
(default -1) - If set to true, playback will start from lowest non-audio level after any seek operation. If set to false, playback will start from level used before seeking
hls_flushliveurlcache
(default false) - If set to true, Live playlist will be flushed from URL cache before reloading (this is to workaround some cache issues with some combination of Flash Player / IE version)hls_initiallivemanifestsize
(default 1) - Number of segments needed to start playback of Live stream.hls_seekmode
hls_manifestloadmaxretry
(default -1): max number of Manifest load retries after I/O Error.
hls_keyloadmaxretry
(default -1): max number of key load retries after I/O Error.
hls_fragmentloadmaxretry
(default 4s): max number of Fragment load retries after I/O Error.
hls_fragmentloadskipaftermaxretry
(default true): control behaviour in case fragment load still fails after max retry timeout
hls_maxskippedfragments
(default 5): Maximum count of skipped fragments in a row before an I/O Error will be raised.
hls_capleveltostage
(default false) : limit levels usable in auto-quality by the stage dimensions (width and height)
hls_maxlevelcappingmode
option. Note: this setting is ignored in manual mode so all the levels could be selected manually.hls_maxlevelcappingmode
(default downscale) : defines the max level capping mode to the one available in HLSMaxLevelCappingMode:
hls_usehardwarevideodecoder
(default true) : enable/disable hardware video decoding. disabling it could be useful to workaround hardware video decoding issues.hls_fpsdroppedmonitoringperiod
(default 5000ms) : dropped FPS Monitor Period in ms. period at which number of dropped FPS will be checked.hls_fpsdroppedmonitoringthreshold
(default 0.2) : every fpsDroppedMonitoringPeriod, dropped FPS will be compared to displayed FPS. if during that period, ratio of (dropped FPS/displayed FPS) is greater or equal than hls_fpsdroppedmonitoringthreshold, HLSEvent.FPS_DROP event will be fired.hls_caplevelonfpsdrop
(default true) : Limit levels usable in auto-quality when FPS drop is detected.i.e. if frame drop is detected on level 5, auto level will be capped to level 4. Note: this setting is ignored in manual mode so all the levels could be selected manually.hls_smoothautoswitchonfpsdrop
(default true) : force a smooth level switch Limit when FPS drop is detected in auto-quality. i.e. if frame drop is detected on level 5, it will trigger an auto quality level switch to level 4 for next fragment. Note: this setting is active only if capLevelonFPSDrop==true.hls_switchdownonlevelerror
(default true) : if level loading fails, and if in auto mode, and we are not on lowest level, don't report Level loading error straight-away, try to switch down firsthls API and events are described here
examples
directory you will find examples for ChromelessPlayer, Flowplayer, Strobe Media Playback (SMP) and GrindPlayerFlowPlayer/flashls setup is described here : http://flash.flowplayer.org/plugins/streaming/flashls.html please also refer to example below if you want to use specific configuration options:
flowplayer("player", 'http://releases.flowplayer.org/swf/flowplayer-3.2.12.swf', {
// Flowplayer configuration options
// ...
plugins: {
httpstreaming: {
// flashls configuration options
url: 'flashlsFlowPlayer.swf',
hls_debug: false,
hls_debug2: false,
hls_lowbufferlength: 3,
hls_minbufferlength: 8,
hls_maxbufferlength: 60,
hls_startfromlowestlevel: false,
hls_seekfromlowestlevel: false,
hls_live_flushurlcache: false,
hls_seekmode: 'ACCURATE',
hls_capleveltostage: false,
hls_maxlevelcappingmode: 'downscale'
}
}
});
var playerOptions = {
// Strobe Media Playback configuration options
// ...
source: 'http://example.com/stream.m3u8',
// flashls configuration options
plugin_hls: "flashlsOSMF.swf",
hls_debug: false,
hls_debug2: false,
hls_minbufferlength: -1,
hls_lowbufferlength: 2,
hls_maxbufferlength: 60,
hls_startfromlowestlevel: false,
hls_seekfromlowestlevel: false,
hls_live_flushurlcache: false,
hls_seekmode: 'ACCURATE',
hls_capleveltostage: false,
hls_maxlevelcappingmode: 'downscale'
};
swfobject.embedSWF('StrobeMediaPlayback.swf', 'player', 640, 360, '10.2', null, playerOptions, {
allowFullScreen: true,
allowScriptAccess: 'always',
bgColor: '#000000',
wmode: 'opaque'
}, {
name: 'player'
});
Run FLEXPATH=/path/to/flex/sdk sh ./build.sh
inside the build
directory
FLEXPATH
should point to your Flex SDK location (i.e. /opt/local/flex/4.6)
After a successful build you will find fresh binaries in the bin/debug
and bin/release
directories
Logo | Company |
---|---|
![]() |
Amazon |
![]() |
Bitmovin |
![]() |
Dailymotion |
![]() |
FlowPlayer |
![]() |
globo.com |
![]() |
The New York Times |
![]() |
Radiant Media Player |
![]() |
Tidal |
Ubicast |
If you'd like to support future development and new product features, please make a donation via PayPal. These donations are used to cover my ongoing expenses - web hosting, domain registrations, and software and hardware purchases.