Comments (33)
Hi @devmondo
regarding config options, i didnt find any tricks to provide params from JS to Flash using videoJS.
regarding quality switch, manual switching from API is straightforward but it would also require some UI changes on videoJS, on which I have no interest/expertise.
Cheers,
Mangui
from flashls.
@mangui thank you very much,
regarding switching from API manually, is there documentation on that ?
from flashls.
Hi @devmondo
there is no doc, but it is pretty straightforward, from your org.mangui.hls.HLS instance
hls.level = manual_level;
(hls.level = -1 for auto mode)
see https://github.com/mangui/flashls/blob/master/src/org/mangui/hls/HLS.as#L76-L94
Cheers,
Mangui
from flashls.
Hi Mangui. You're saying by passing flash params (videojs.options.flash.flashVars) you can't specify those options? I tried looking at the source to see if I could somehow hard code settings but I'm afraid I'm pretty weak at flash. You mentioned using the API but I don't see any reference to that. Appreciate your help.
from flashls.
@mangui thank you very much for your support, but i am as stuck as @triwav :)
i fear i am as weak in flash as him, and what i can do is develop a plugin for VideoJs to create a button to switch quality, but i don't know how to pass it to your flash player.
from flashls.
@mangui regarding config options:
Setting flashvar params in the embed code generated by video-js seems to work, using paramvideojs.options.flash.flashVars.
Apparently video-js.swf is ignoring the hls_* options passed.
This example contains the embed code generated by video-js
http://demo.cdn01.rambla.be/raplay/flashhls-videojs.html
The same embed code, but using GrindPlayer.swf + flashlsOSMF.swf
http://demo.master.cdn01.rambla.be/raplay/flashhls-grind.html
Both have hls_capleveltostage=true, video-js still loads the highest resolution available in the m3u8 while OSMF is using a lower level, as it should.
from flashls.
@ohmercy that's an interesting observation. However, you'll obviously have a different look than the videojs player and I would assume none of the callbacks would work either. I've temporarily solved this by building it myself. The settings can be found here: https://github.com/mangui/flashls/blob/master/src/org/mangui/hls/HLSSettings.as
You have to compile flashls then take the output file and put that in the jw-player-swf and compile that.
from flashls.
@triwav I only isolated the relevant (object) HTML markup generated by video-js, to show the hls_ options are present as flashvars and how both swf plugins handle these flashvars different.
Did not mean to suggest it as an alternative embed method.
Thanks for the tip! Being able to choose different default values is already a step forward.
from flashls.
So it would appear that the stage size must not be getting properly passed to the script. I've turned on capleveltostage and it just stays on the lowest level. My guess is it's defaulting to 0 thus it's the lowest level always. Could be an error on my side but that definitely puts a damper in things.
from flashls.
Hi @mangui,
I am considering to use flashls combining with video-js. As discussed in this thread already, I also want a little addition to its integration like passing hls_* options. I have some proposals of code change and the first tiny one was posted to your video-js-swf project as pull request. I wonder if you are interested in to take such changes.
from flashls.
Hi @Hiroshi-p
regarding your PR on video-js-swf : mangui/video-js-swf#1, it is meant to print additional debug traces in case of level switch right ? this one I am not interested into it.
however any patch welcomed to pass hls_* options.
Cheers,
Mangui
from flashls.
@mangui,
Thanks. I will post another PR for hooking up hls_* options shortly.
Re: logging, I needed to make it because the trace message from flashls itself is not showed on JS console although the one from integration code (HLSProvider.as) is displayed. Is this a known issue of this integration?
from flashls.
@mangui,
As mentioned above, I created a new pull request.
mangui/video-js-swf#2
This hooks up all existing hls_* options through flashVars of videojs.
Proposed change is not at all elegant, but it does the job.
From JS code, those can be set something like this.
videojs.options.flash.flashVars = {
'hls_debug': true,
'hls_capleveltostage': true,
'hls_maxlevelcappingmode': 'downscale'
};
from flashls.
@mangui,
Thank you for taking my change to hook hls_* option. That did not include .swf itself because I might have different build environment from you and I was afraid that I could push incompatible one. Could you rebuild it at your spare cycle?
I have a next set of proposal to hook up flashls API to switch quality. I will create a pull request shortly.
from flashls.
@Hiroshi-p
yes I will push swf shortly
from flashls.
sorry to sound like a noob but does this mean we can switch quality now :)
from flashls.
@devmondo,
Not yet. I proposed another change to achieve that part: mangui/video-js-swf#3
I expect a few iterations before @mangui becomes comfortable to take it.
from flashls.
@Hiroshi-p thank you very much man :)
from flashls.
@mangui,
Did you have a chance to look at this mangui/video-js-swf#3 ?
from flashls.
Hi @Hiroshi-p , the changes looks ok, but I did not test them, I will try to do next week as I will take couple of days off.
from flashls.
@mangui,
Thank you for the reply. Not urgent at all. Enjoy your vacation!
from flashls.
Capleveltostage seems to be broken in video-js-swf, as triwav mentions above. With hls_capleveltostage enabled, the lowest level is always playing, whatever the embed size of the video player.
Looks like _hls.stage is not set in AutoLevelManager.as
from flashls.
@Hiroshi-p
Take a look at https://github.com/dacast I have implemented quality switch and reporting to videojs in flashhls + a videojs module to control it.
Hope it helps.
from flashls.
Hi @ohmercy please recheck capleveltostage since last commits
from flashls.
Hi @mangui capleveltostage is working now
Thank you!
from flashls.
Hi @mangui, thank you for pulling a change.
Level control feature which was added there requires a slight change of video.js side.
https://www.dropbox.com/s/l6g4v4bwtm3xbdx/video.js.diff
I wonder whether you want to fork video.js project here, so that flashls on video.js users may take the most advantage of that?
from flashls.
Hi @dacast, it looks like you have your own forked video-js.swf project for the feature. I have not looked at your change, but if you think your design is better than me, feel free to discuss with @mangui to replace mine with yours. I am fine even if my code is dropped as far as the feature is maintained.
from flashls.
@Hiroshi-p
The basic of my videojs module design is the following:
3 differents message can achieve all possible quality actions:
- on content load, it retrieves all existing quality levels. (
- changing level does not change immediately the level in the player, because it can takes few seconds to be done (the next segment). It just notify the tech to change level.
- on level changed in the tech, a message is sent to the player (in our case video.js) with the new quality level id, then I modified the selector in the menu
@mangui knows he can reuse my design when he wants.
From my opinion, there is no need to pull anything until video.js really implements bitrates/quality messages between player and techs.
I have commited a test page in dacast/video-js-swf-flashhls-menu.
It includes a working version built of videojs.swf (flashhls + my 3 messages i/o) and unminifed version of videojs (not modified) are in lib folder, so you can test it on any HLS stream (live and vod).
from flashls.
@dacast, thank you for the detail explanation. It sounds like you've already made the same scope of the changes in your own repository.
from flashls.
Is it correct to say @dacast 's solution looks most interesting for now, as it can be implemented without changes in the video-js source?
@mangui any chance that design would make it into your repo?
from flashls.
No change in video.js. The menu selector is a module.
There is just a trick for the display of the active quality used (and so remove highligth on other in the menu). Because menu items are not freely accessible (minified) from videojs.min.js, you may need, or to modify video.js (see exports.js) or to access the minified version of the items (ex something like vjs.N.c.b.a)
from flashls.
closing, as https://github.com/mangui/video-js-swf provides API for quality switch
from flashls.
Is there a complete sample how to enable this feature using the latest video-js-sw fork?
from flashls.
Related Issues (20)
- Can this flash plugin support videojs version 6?
- probe fragment type fails on encrypted audio only .m4a files
- how to disabled auto level?
- Set custom referer and useragent
- I build an app with "adobe air", flashls support ios ? HOT 1
- Mute stream?
- CEA-608/EIA-608 Closed-captions are not getting rendered in v0.4.4.24 HOT 2
- video playback stutters in a specific scenario with alternative audio playlist
- setting new AudioTrack HOT 1
- Audio Track switch in FlashHls HOT 16
- What is relation between releases? HOT 2
- Video is buffering (or freezes) after Audio Track change HOT 1
- Any plan to support Subtitles in the official release? HOT 1
- M3u8 Not Playing after first ts segment
- Downloaded .ts (AES-128) doesn't play, probably still encrypted
- How to retrieve id3 tags through opencv
- how can i set query string on ts request?
- Issue with ABR switching to highest variant available HOT 1
- flashls doesn't play stream with AES-128 Encryption. It tries to load only the first segment HOT 2
- Subtitles are missing...
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flashls.