Coder Social home page Coder Social logo

mangui / flashls Goto Github PK

View Code? Open in Web Editor NEW
753.0 99.0 267.0 130.71 MB

HLS Flash Plugin/Player (Chromeless,OSMF,FlowPlayer,mediaelement.js,video.js,Clappr)

Home Page: http://www.flashls.org

License: Mozilla Public License 2.0

Python 1.09% Shell 0.84% ActionScript 97.45% Batchfile 0.62%

flashls's Introduction

flashls

An Open-source HLS Flash plugin that allows you to play HLS streams.

The plugin is compatible with the following players:

Features

  • VoD & Live playlists
    • Sliding window (aka DVR) support on Live playlists
  • Adaptive streaming
    • Manual & Auto quality switching
    • 3 switching modes are available:
      • instant switching : playback will be paused, whole buffer will be flushed, and fragments matching with new quality level and current playback position will be fetched, then playback will resume.
      • smooth switching : buffer will be flushed on next fragment boundary, and fragments matching with new quality level and next fragment position will be fetched. this allows a smooth (and still fast) quality switch, usually without interrupting the playback.
      • bandwidth conservative switching : buffer will not be flushed, but next fragment to be buffered will use the newly selected quality level.
    • ABR algorithm : Serial segment fetching method from Rate adaptation for dynamic adaptive streaming over HTTP in content distribution network, Chenghao Liu,Imed Bouazizi, Miska M. Hannuksela,Moncef Gabbouj
    • Emergency quality switch-down to avoid buffering in case of sudden bandwidth drop
  • Alternate Audio Track Rendition
    • Master Playlist with alternative Audio
  • Configurable seeking method on VoD & Live
    • Accurate seeking to exact requested position
    • Key frame based seeking (nearest key frame)
    • ability to seek in buffer and back buffer without redownloading segments
  • Timed Metadata for HTTP Live Streaming (in ID3 format, carried in MPEG2-TS, as defined in https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/HTTP_Live_Streaming_Metadata_Spec/HTTP_Live_Streaming_Metadata_Spec.pdf)
  • AES-128 decryption
  • Buffer progress report
  • Error resilience
  • frame drop detection
    • if the device is not powerful enough to decode content, an event will be triggered.
  • max quality level selectable by auto switch algorithm could be capped
    • to player dimension
    • upon frame drop detection

Supported M3U8 tags

  • #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

Configuration

The plugin accepts several optional configuration options, such as:

  • hls_debug (default false) - Toggle debug traces, outputted on JS console
  • hls_debug2 (default false) - Toggle verbose debug traces, outputted on JS console
  • hls_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)
    • If set to -1 some heuristics based on past metrics are used to define an accurate value that should prevent buffer to stall
  • minBufferLengthCapping (default -1) - minimum buffer length capping value (max value) if minBufferLength is set to -1
  • hls_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)
  • If greater than 0, specifies the preferred bitrate to start with.
  • If -1, and hls_startfromlevel is not specified, automatic start level selection will be used.
  • This parameter, if set, will take priority over hls_startfromlevel.
  • hls_startfromlevel (default -1)
  • from 0 to 1 : indicates the "normalized" preferred bitrate. As such,
    • if 0, lowest non-audio bitrate is used,
    • if 1, highest bitrate is used,
    • if 0.5, the closest to the middle bitrate will be selected and used first.
  • -1 : automatic start level selection, playback will start from level matching download bandwidth (determined from download of first segment)
  • -2 : playback will start from the first level appearing in Manifest (regardless of its bitrate)
  • hls_autoStartMaxDuration (default -1) max fragment loading duration ( bw test + fragment loading) in automatic start level selection mode (in ms)
    • If -1 : max duration not capped
    • If greater than 0 : max duration is capped to given value. this will avoid long playback starting time. basically if set to 2000ms, and download bandwidth test took 1500ms, we only have 500ms left to load the proper fragment ... which is not enough ... this means that flashls will stick to level 0 in that case, even if download bandwidth would be enough to select an higher bitrate
  • 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
  • from 0 to 1 : indicates the "normalized" preferred bitrate. As such,
    • if 0, lowest non-audio bitrate is used,
    • if 1, highest bitrate is used,
    • if 0.5, the closest to the middle bitrate will be selected and used first.
  • -1 : automatic seek level selection, keep level before seek.
  • 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
    • "ACCURATE" - Seek to exact position
    • "KEYFRAME" - Seek to last keyframe before requested position
  • hls_manifestloadmaxretry (default -1): max number of Manifest load retries after I/O Error.
    • if any I/O error is met during initial Manifest load, it will not be reloaded. an HLSError will be triggered immediately.
    • After initial load, any I/O error will trigger retries every 1s,2s,4s,8s (exponential, capped to 64s). please note specific handling for these 2 values:
      • 0, means no retry, error message will be triggered automatically
      • -1 means infinite retry
  • hls_keyloadmaxretry (default -1): max number of key load retries after I/O Error.
    • any I/O error will trigger retries every 1s,2s,4s,8s (exponential, capped to 64s). Please note specific handling for these 2 values:
      • 0, means no retry, error message will be triggered automatically
      • -1 means infinite retry
  • hls_fragmentloadmaxretry (default 4s): max number of Fragment load retries after I/O Error.
    • Any I/O error will trigger retries every 1s,2s,4s,8s (exponential, capped to 64s). Please note specific handling for these 2 values:
      • 0, means no retry, error message will be triggered automatically
      • -1 means infinite retry
  • hls_fragmentloadskipaftermaxretry (default true): control behaviour in case fragment load still fails after max retry timeout - true : fragment will be skipped and next one will be loaded. - false : an I/O Error will be raised.
  • hls_maxskippedfragments (default 5): Maximum count of skipped fragments in a row before an I/O Error will be raised.
    • 0 - no skip (same as fragmentLoadSkipAfterMaxRetry = false).
    • -1 - no limit for skipping, skip till the end of the playlist.
  • hls_capleveltostage (default false) : limit levels usable in auto-quality by the stage dimensions (width and height)
    • true : level width and height (defined in m3u8 playlist) will be compared with the player width and height (stage.stageWidth and stage.stageHeight). Max level will be set depending on the hls_maxlevelcappingmode option. Note: this setting is ignored in manual mode so all the levels could be selected manually.
    • false : levels will not be limited. All available levels could be used in auto-quality mode taking only bandwidth into consideration.
  • hls_maxlevelcappingmode (default downscale) : defines the max level capping mode to the one available in HLSMaxLevelCappingMode:
    • "downscale" - max capped level should be the one with the dimensions equal or greater than the stage dimensions (so the video will be downscaled)
    • "upscale" - max capped level should be the one with the dimensions equal or lower than the stage dimensions (so the video will be upscaled)
  • 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 first

hls API

hls API and events are described here

Examples :

Usage

  • Download flashls from https://github.com/mangui/flashls/releases
  • Unzip, extract and upload the appropiate version to your server
  • In the examples directory you will find examples for ChromelessPlayer, Flowplayer, Strobe Media Playback (SMP) and GrindPlayer

Setup


Flowplayer

FlowPlayer/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'
    }
  }
});

Strobe Media Playback (SMP) and other OSMF based players

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'
});

Project branches


  • The master branch holds the most recent minor release.
  • Most development work happens on the dev branch.
  • Additional development branches may be established for major features.

Building


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

License

they use flashls in production !

Logo Company
Amazon
Bitmovin
Dailymotion
FlowPlayer
globo.com
The New York Times
Radiant Media Player
Tidal
Ubicast

Donation

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.

Donate


flashls's People

Contributors

aevange avatar andreiatevs avatar bahaa-aidi avatar caseypugh avatar cbeckr avatar chromsh avatar dighan avatar flavioribeiro avatar irazhnov avatar jlacivita avatar jussike avatar karlqumu avatar leandromoreira avatar lgprodigy avatar mangui avatar mixmastermitch avatar myarcane avatar natebeck avatar neilrackett avatar nicolassiver avatar paztis avatar rwlodkowski avatar shaharmor avatar steve6 avatar stevemayhew avatar suuhas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flashls's Issues

AES secure key delivery

Hi @mangui, I have a question about AES secure key delivery. Is there a way how to deliver a key in secure way? For example, you have to know credentials to get the key. Thank you.

video js change dynamicall src

Hi Mangui,

sad to see that jw ask to remove your work on hlsprovider...

I have a question for you, maybe you know why. Do you know why, with videojs, when we change src dynamically, it fails, but only with flash backend.
Maybe there is something to reinitialize before switching?

I continue now the work I did on your project for m3u8 flash reader with quality switcher.

Please help me, if you have any lead, I would appreciate.

Seeking forward causes beginning fragments to download

I've found a reproducible bug when seeking with flashls. I have a video that is 90+ minutes long and when I seek forward in time, the playback eventually switches levels and then starts loading new fragments starting from the very beginning, rather than where it should be in the timeline.

Here's my trace to show you what happens after I seek forward.

Loading fragment: hls-400-00418.ts
Switching to level 2
Loading fragment: hls-600-00418.ts
seekTo 4306
onPlaybackState PAUSED_BUFFERING
Switching to level 0
Loading fragment: hls-200-00432.ts
Switching to level 1
Loading fragment: hls-400-00003.ts
onPlaybackState PLAYING
Switching to level 0
Loading fragment: hls-200-00002.ts

Unfortunately I can only recreate this bug in the specific video I'm testing, but I can't recreate it in any other video. I've also tested it on the chromeless player example and it also happens there. Do you have any idea why or how this would happen?

I've also noticed that it only happens at specific part of the video. Seeking anywhere else works perfectly fine. Is it possible there's a faulty fragment that flashls doesn't recover well from?

It's worth noting that playback works great in Quicktime and Safari.

Here's the m3u8 contents, unfortunately I can't share the m3u8 link itself. Sorry!

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=256000
hls-200.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=456000
hls-400.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=656000
hls-600.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1256000
hls-1200.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1856000
hls-1800.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2556000
hls-2500.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=4556000
hls-4500.m3u8

Visible stuttering in AES encrypted playlist

When loading this playlist in the examples or directly using HLSPlugin, there is visible stuttering or glitching every 10 seconds when a new fragment is loaded:

http://vhx-uploads-development.s3.amazonaws.com/charlietran/videos/8197/39380/THE%20PATH%20OF%20THE%20SUN%20TRAILER%201080p_adaptive.m3u8

AES-128 CBC, keys rotated every 10 seconds, random IV

These issues are not apparent on the same clip encoded without AES encryption:

http://vhx-uploads-development.s3.amazonaws.com/charlietran/videos/8196/39374/THE%20PATH%20OF%20THE%20SUN%20TRAILER%201080p_adaptive.m3u8

Video plays with hlsprovider, not flashls when used with videojs

The below video plays fine with safari:
http://www.dvidshub.net/video/355615.m3u8

It also plays fine with the old version of the code in videojs in the revision right before the switch from hlsprovider to flashls. This is the revision that causes the issue:
mangui/video-js-swf@a1d3c08

But it doesn't play correctly in the newest version of video-js-swf. If you play it about half way through it stops and complains about no src:
http://defensetv.tv/#/video:355615/news-stream

I took the hlsprovider.swc from the old revision and put it in the latest revision for video-js-swf and with a few changes to variable names got it to compile. This appears to have solved it so my best guess is there's actually something within the flashls.swc that's causing the issue. One other note is that it only happens on the 1280x720 stream. If I remove that it works just fine. It's possible it's an issue with the encode but considering Safari plays it, I wanted to see if this might be something that needs to be looked at.

Disable autobitrate

Hi,

In OSMF autoDynamicStreamSwitch property doesn't work.

How can i disable autobitrate? I want that player starts highest bitrate and client selects manualy switch to lower bitrates.

Thanks

disable console log messages

I want to prevent all messages from printing to the console (Access issues across an iframe causes the video not to play on Facebook).

hls_info: False prevents all future messages, but the plugin still prints INFO:onConfig(), etc.

How can I prevent this? I will try to rebuild the plugin myself - but I'm not sure of your build process.

Thank you!

Plugin info

Hello,

I want to use the Flowplayer version of your plugin, and I'd like to know which segments it already supports (e.g. FMS, Wowza, Akamai HD, ffmpeg, etc.) and if it already integrates with the "bwcheck" or the "bitrateselect".

My contact: [email protected]

Thanks in advance!

Leandro Zanol

capleveltostage = true causes videos to play base level only

I originally thought this was just a videojs issue however I've tested it in flowplayer as well and capleveltostage causes the player to only play the base level. Most likely because the stage size is somehow not getting passed properly.

TS File fails to parse

The library seems to be unable to parse that specific TS fragment but other players (safari, VLC) are able to.

http://wsi.li/zWoeROBjdoit

I get that (note that line numbers might not match exactly as I added debug code at some places):

[Fault] exception, information=Error: TS: Could not parse file: sync byte not found @ offset/len 377/161256
at org.mangui.hls.demux::TSDemuxer/_readPacket()[/Users/ubald/Workspace/HLSMonitor/src/org/mangui/hls/demux/TSDemuxer.as:384]
at org.mangui.hls.demux::TSDemuxer/_readData()[/Users/ubald/Workspace/HLSMonitor/src/org/mangui/hls/demux/TSDemuxer.as:141]
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()

No audio, pausing stream, "error trying to load 3 of [0,1],level 4"

HI Mangui,

Our streams used to work but upon updated the player we now experience various issues:

  • Audio does not play
  • Stream jutters, pauses for long periods of time or stops completely.

Around the time the juttering starts the console exhibits strange behaviour:

[14:59:44] load URL **CENSORED (for now)**
INFO:1 alternate audio tracks found
[14:59:45] new track list (index):212
[14:59:45] manifest loaded, playlist duration:10.00 (index):212
[14:59:45] new track list (index):212
[14:59:45]     audio1 [0] (index):212
[14:59:45] switching audio track to 0 (index):212
INFO:Setting audio track to 0
INFO:HLSNetStream:play(-1)
INFO:HLSNetStream:seek(-1)
[14:59:48] switching state to PLAYING_BUFFERING (index):212
[14:59:48] start playback (index):212
[14:59:48] switching level to 0 (index):212
[14:59:48] new track list (index):212
[14:59:48]     audio1 [50] (index):212
6
WARN:TS: Discarding audio packet with id 50
INFO:enough download bandwidth, adjust start level from 0 to 4
[14:59:48] switching level to 4 (index):212
6
WARN:TS: Discarding audio packet with id 50
[14:59:49] onVideoSize(), 1024x576 (index):212
[14:59:49] onVideoSize(),resize stage to 1024x576 (index):212
[14:59:49] switching state to PLAYING (index):212
18
WARN:error trying to load 3 of [0,1],level 4 VM728:1
[15:0:0] switching state to PLAYING_BUFFERING (index):212
[15:0:0] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM820:1
[15:0:1] switching state to PLAYING_BUFFERING (index):212
[15:0:1] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM827:1
[15:0:1] switching state to PLAYING_BUFFERING (index):212
[15:0:1] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM834:1
[15:0:1] switching state to PLAYING_BUFFERING (index):212
[15:0:1] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM841:1
[15:0:1] switching state to PLAYING_BUFFERING (index):212
[15:0:1] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM848:1
[15:0:1] switching state to PLAYING_BUFFERING (index):212
[15:0:1] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM855:1
[15:0:1] switching state to PLAYING_BUFFERING (index):212
[15:0:1] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM862:1
[15:0:1] switching state to PLAYING_BUFFERING (index):212
[15:0:1] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM869:1
[15:0:1] switching state to PLAYING_BUFFERING (index):212
[15:0:1] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM876:1
[15:0:2] switching state to PLAYING_BUFFERING (index):212
[15:0:2] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM883:1
[15:0:2] switching state to PLAYING_BUFFERING (index):212
[15:0:2] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM890:1
[15:0:2] switching state to PLAYING_BUFFERING (index):212
[15:0:2] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM897:1
[15:0:2] switching state to PLAYING_BUFFERING (index):212
[15:0:2] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM904:1
[15:0:2] switching state to PLAYING_BUFFERING (index):212
[15:0:2] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM911:1
[15:0:2] switching state to PLAYING_BUFFERING (index):212
[15:0:2] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM918:1
[15:0:2] switching state to PLAYING_BUFFERING (index):212
[15:0:2] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM925:1
[15:0:2] switching state to PLAYING_BUFFERING (index):212
[15:0:3] switching state to PLAYING (index):212
WARN:error trying to load 3 of [0,1],level 4 VM932:1
[15:0:3] switching state to PLAYING_BUFFERING (index):212
[15:0:3] switching state to PLAYING (index):212
[15:0:3] switching level to 3 (index):212
[15:0:3] switching state to PLAYING_BUFFERING (index):212
[15:0:3] switching state to PLAYING (index):212
[15:0:3] switching state to PLAYING_BUFFERING (index):212
[15:0:3] switching state to PLAYING (index):212
14
WARN:TS: Discarding audio packet with id 50 VM952:1
[15:0:3] switching state to PLAYING_BUFFERING (index):212
[15:0:3] switching state to PLAYING (index):212
12
WARN:TS: Discarding audio packet with id 50 

The playing_buffering and playing states switch within miliseconds of each other. Its strange, as sometimes it does work for long periods. The audio track when it does work for long periods is recognised as TS/AAC (0) (or something similar? I cant remember) instead of just audio1.

I can get you access to our stream -- but it will require a lot of trial and error to actually see the problem. Sometimes it just works -- its very temperamental (at the moment, its working).

Possible link to #43

Videojs tech order messed up with html5 and flashls on Windows

It seems a little bit strange, but on Windows in latest Firefox (31.0) tech order does not work because of type='video/mp4'

You can check this behavior on
http://tolookat.me/dev/flashls/

Flashls does not initialized properly then you have html5 in your tech order list. video/mp4 works as html5 tech and videojs decides to work with html5 player. Wich leads to blank screen, because HLS is not supported in Firefox.

On OS X it's a little bit different (in Firefox): html5 tech ignored due to unsupported HLS -> then videojs tries to use dashjs, but FF cant handle it yet -> and, finally, videojs decides to use flash (and flashls).

I think it happens on Win 7-8 (with any architecture), but i was able to test this only on Windows 7 x64.

'Flash srcnotfound' when use flashls in video.js

display error "Flash srcnotfound" when play video url like

http://pl.youku.com/playlist/m3u8?ts=1409711861&keyframe=1&vid=XNzY5NzYyNjA0&type=hd2&ctype=30&sid=440971186093030f346cf&token=2076&ev=1&oip=3030801442&did=ac414b9ae04f0547e9205724f5de48c8&ep=lS6tkypLk8qgkFGRFh29%2Fmjb%2FJYcsQB7xM%2BJKjD8A5nQ8UVulcvszbAmZLrtEL65

seek not work

when a video is play to end,state is idle.then i load another video,play and seek to a position,it just play;
but if a video is pause,state is paused,then i load another video,play and seek to a position,it work;
code like below:
videoPlayer.playerLoad("xxxx.m3u8");
videoPlayer.playerPause();
videoPlayer.playerPlay();
videoPlayer.playerSeek(9);
videoPlayer.playerResume();

BTW,can you add a method play(Number: startPosition) to chromelessplayer;

How to use this plugin in Wordpress?

Dear Sir,

I tried too many ways using this plugin for my m3u8 live stream format. could you please let me know why it shows perfectly in example files from ftp, but when I try to add script of index.html to my head.php(template header) also add ... directly from index.html(Flow Player) it shows nothing and it says Html 5 Unsupported format.
It would be much appreciate if you let me know how can I use from this plugin in my wordpress.
Also I have attached two links that I mentioned.

1.works Perfectly(Not in Wordpress) :
http://pars-tv.com/flashls 0.1.0/examples/flowplayer/index.html

2.Not working in wordpress: http://www.pars-tv.com/شبکه-۳/

Best
Mo Motahedian

Osmf Hls on Flash Player 14.0.0.145

In HLSDisplayObjectTrait.as on line 46 and 47:

    private function onFrame(event : Event) : void {
        var newWidth : int = videoSurface.videoWidth; // This is not correct size on some qualities
        var newHeight : int = videoSurface.videoHeight; // This is not correct size on some qualities
        if (newWidth != 0 && newHeight != 0 && newWidth != mediaWidth && newHeight != mediaHeight) {
            // If there is no layout, set as no scale.
            if (videoSurface.width == 0 && videoSurface.height == 0) {
                videoSurface.width = newWidth;
                videoSurface.height = newHeight;
            }
            CONFIG::LOGGING {
            Log.info("HLSDisplayObjectTrait:setMediaSize(" + newWidth + "," + newHeight + ")");
            }
            setMediaSize(newWidth, newHeight);
        }
        // videoSurface.removeEventListener(Event.ENTER_FRAME, onFrame);
    }
}

But in Flash Player 14.0.0.125 not problem, please fix this.

avoid redownloading of fragments

copy pasting mangui's previous post

mark the fragments that have already been loaded, to avoid switching up in case they are reloaded. this is the only way to get rid of this.
a better alternative in the long term would be to to implement a fragment cache of configurable size, with LRU policy (in case we reach the cache size limit, the Least Recently Used items would be flushed, i.e. the oldest fragments in case of continuous playback)

Need help with API

Hi. Github doesn't provide a way to contact you. Looking at your project and may want to use it for something. But I might need some help - possibly paid consultation. Can you drop me an email at [email protected]?

Thanks,
Rafi

control bar not streaming

Hello,

When a video first begins in FlowPlayer, the control bar does not track to the right position in the video. If I pause, then play, the control bar works normally. This also occurs during seeking.

Can you reproduce this issue?

Flash Version 9

HI Mangui,

does "flashls" support Flash 9 or there are any chances it may support it ?
I'm trying to stream an online tv service on my PS3 browser; unfortunately flash shipped with PS3 is 9.0.159 and as far as i've understood there is not plan to upgrade it.

Thanks.

no tag found error

I found an issue with the flashls. At the end of a specific video it throws an error "error parsing fragment, no tag found". The video is hosted and segmented by Akamai's video service. Here's the part of debug messages in the console before the error happens.

DEBUG:m/M audio PTS:650120/660082
DEBUG:m/M video PTS:650150/660061
DEBUG:Delta audio/video m/M PTS:30/-21 
DEBUG:Total Process duration/length/bw:75633/532792/55 kb/s 
DEBUG:Loaded        66 of [1,67],level 0 m/M PTS:650120/660082 
DEBUG:AutoBufferManager:minBufferLength:60 
DEBUG:loadnextfragment()
DEBUG:Loading       67 of [1,67],level 
DEBUG:loading fragment:http://schoolimp-vh.akamaihd.net/i/PD360/media/video/PD360/1502S/1502S_7/1502S_7_,304,552,800,1152,1552,1952,2448,.mp4.csmil/segment67_0_av.ts
DEBUG:loading completed 
DEBUG:Loading       duration/RTT/length/speed:221/134/3384/120 kb/s
DEBUG:TS: flushing demux 
DEBUG:TS: parsing complete
ERROR:HLSError(code/url/msg)=6/http://schoolimp-vh.akamaihd.net/i/PD360/media/video/PD360/1502S/1502S_7/1502S_7_,304,552,800,1152,1552,1952,2448,.mp4.csmil/segment67_0_av.ts/error parsing fragment, no tag found 
INFO:HLSNetStream:close 
DEBUG:TS: cancel demux 
DEBUG:[PLAYBACK_STATE] from PLAYING_BUFFERING to IDLE 
DEBUG:cancel any manifest load in progress 
DEBUG:state:IDLE 
DEBUG:[SEEK_STATE] from SEEKED to IDLE
DEBUG:error!!!!:error parsing fragment, no tag found

And here's the manifest file for the video segments https://gist.github.com/sydcanem/4518e00ef1377f035f25.

The error does not occur using safari and quicktime HLS.
Unfortunately, this only affects this specific video.

Playback freezing problem at safari on macosx

Hi @mangui ,

i have opened an issue on other plugin about this problem.

Please, could you test this link http://www.flashls.org/latest/examples/osmf/GrindPlayer.html?src=http%3A%2F%2Fmultihls.mynet.streamprovider.net%2Fmediacache%2F_definst_%2Fmynet%2Fmynet%2Fmynet%2Fvideo%2F014%2F087%2F1936387%2F1936387%2C1936387480HD%2C1936387720HD.mp4%2Fplaylist.m3u8 at safari on macosx? Many videos we have generating mosaic areas and freezing. I have tested the video (http://multihls.mynet.streamprovider.net/mediacache/_definst_/mynet/mynet/mynet/video/014/087/1936387/1936387,1936387480HD,1936387720HD.mp4/playlist.m3u8) at several plugin (osmf-hls-plugin, osmfktu.ru etc) and there is not this problem. Therefore, i have to compile another player version to run at safari (using osmf-hls-plugin).

Thank you.

Need help with API

Hi. Github doesn't provide a way to contact you. Looking at your project and may want to use it for something. But I might need some help - possibly paid consultation. Can you drop me an email at [email protected]?

Thanks,
Rafi

Getting: WARN:error trying to load xx of xx

Hello,

Playing a live stream that suddenly stops. What is the reason for this error?

Monitoring the streaming it looks like it loads files continously without any issues.

WARN:error trying to load 11 of [0,0],level 0 VM5345:1
WARN:error trying to load 11 of [0,0],level 0 VM5357:1
23
WARN:error trying to load 11 of [0,0],level 0 VM5359:1
22
WARN:error trying to load 11 of [0,1],level 0 VM5401:1
WARN:error trying to load 11 of [0,1],level 0 VM5423:1
45
WARN:error trying to load 11 of [0,1],level 0 VM5424:1
WARN:error trying to load 11 of [0,1],level 0 VM5469:1
16
WARN:error trying to load 11 of [0,1],level 0 VM5470:1
WARN:error trying to load 11 of [0,1],level 0 VM5486:1
45
WARN:error trying to load 11 of [0,1],level 0 VM5487:1
WARN:error trying to load 11 of [0,1],level 0 VM5532:1
30
WARN:error trying to load 11 of [0,1],level 0 VM5533:1
50
WARN:error trying to load 11 of [0,2],level 0 VM5563:1
WARN:error trying to load 11 of [0,2],level 0 VM5613:1
22
WARN:error trying to load 11 of [0,2],level 0

Surface M3U8 tags during playback

It would be great to know whenever playback (or seeking) crosses an interesting M3U8 tag, e.g.

EXT-X-DISCONTINUITY

or even custom tags, e.g.

EXT-X-MYCUSTOMTAG: Hello World

This would enable storing (and responding to) meta-data inside the M3U, which is a common practice.

Bonjour Mangui

désolé si je post ici
juste un petit mot pour te remercier pour hlsprovider et tout le boulot que tu a fais depuis pas mal de temps.
je suis écoeurer de voir que Longtail jwplayer ne te soutiennes pas et qu'ils bloquent tes travaux sur hlsprovider.
les bras m'en tombe de voir ça.....
Un grand merci et j'espere que tu continueras tes travaux avec d'autres players.
Grand soutien a toi et
Vive Mangui......

Cannot get hls to work

Hello.

Im using the js from the flowplayer example (for flowplayer), also ttp://releases.flowplayer.org/swf/flowplayer-3.2.12.swf for the flowplayer swf. then i have the following code

flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.12.swf", {
// configure the required plugins
wmode: 'direct',
plugins: {
httpstreaming: {
url: 'http://boxlistsdev.com/boxlists/scripts/flowplayer/flashlsFlowPlayer.swf',
hls_debug: true,
hls_debug2: true,
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'
}
},
clip: {
accelerated: true,
url: Url,
//url: "http://boxlistsdev.com/boxlists/content/music/master.m3u8",
urlResolvers: ["httpstreaming", "brselect"],
provider: "httpstreaming",
autoPlay: true
}
});
}

The URL points to a m3u8 file which contains

EXTM3U

EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=125000,CODECS="mp4a.40.2"

https://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/index_0_a.m3u8?null=&id=AgCX4LhXWt%2fYJgHt5VP%2fdx1ezv+e18GoFB%2f6y35WgLvpr+5yVqnPQxKVW5ZvHIbYzg89QTLNziJY5Q%3d%3d&hdntl=exp=1407663745~acl=%2fi%2f132%2f750%2f079%2f155%2faudio.mp4*~data=hdntl~hmac=0082a22557fd8cd00eba9c76c6eab4a92cf1013dd2da89283fedb6b3b5931098

as you see there is another m3u8 file which is

EXTM3U

EXT-X-TARGETDURATION:10

EXT-X-ALLOW-CACHE:YES

EXT-X-KEY:METHOD=AES-128,URI="https://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/crypt.key?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669"

EXT-X-VERSION:2

EXT-X-MEDIA-SEQUENCE:1

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment1_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment2_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment3_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment4_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment5_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment6_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment7_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment8_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment9_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment10_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment11_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment12_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment13_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment14_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment15_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment16_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment17_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:10,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment18_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXTINF:9,

http://webstream-vh.akamaihd.net/i/132/750/079/155/audio.mp4/segment19_0_a.ts?null=&id=AgCX4LhXWt%2fYJJPV5VMUV8HghDyfCj6Tnr3YGI9n33WHh8fim1VPkGenbb2bSJa7FHqowD%2faD4PDZQ%3d%3d&hdntl=exp=1407657747~acl=/i/132/750/079/155/audio.mp4*~data=hdntl~hmac=67bf470953d01f0177ef7fa852fc314b6f86a055d83731be23f753015e17c669

EXT-X-ENDLIST

From developer tools of chrome, I can see that the swfs are loaded in and something is requesting the cross domain from both sides, but then nothing..!

Any help please.

How to set config vars when loading HLSPlugin in Flash?

Hi, thanks for this great plugin! Was wondering how to pass config options when loading the plugin resource? I tried the following and it didn't work, not seeing DEBUGS or a trace for "HLSSettings"

factory = new DefaultMediaFactory();

var plugin_resource:MediaResourceBase = new PluginInfoResource(new HLSPlugin());
plugin_resource.addMetadataValue('info',  false);
plugin_resource.addMetadataValue('debug',  true);
plugin_resource.addMetadataValue('debug2', true);

factory.loadPlugin(plugin_resource);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.