We are getting more than 5 to 6 mins of delay in live streaming after recovering from error. When we unplug our camera we use to get error "cannot load m3u8: 404 not found". But once camera back to plug in we dont get live streaming straight after that. We use to get data feed url (for ex: "http://d3o036smo35ikq.cloudfront.net/live/smil:5883_216.smil/chunklist_b364000.m3u8") but jwPlayer play video again after 5 to 6 mins of delay. But If we play same url from VLC player then It plays without getting error. We are using jwPlayer version 6.4
If you need any other information please let me know.
While I cannot guarantee the results would be any different, I would suggest trying your same setup in the latest version of our player (currently 7.5.2) to see if the behavior is any different. After trying it with version 7.5.2, please let me know if the player displays an error or if it continues showing the spinning circle icon in the middle of the player.
By the sounds of things, it sounds like a encoding or latency issue you are having which is not related to JW Player, of there is a delay this is usually caused by a number of factors. JW Player simply plays the feed like VLC Player can do Additionally, JW Player you may need to have it set to auto play, i use IPTV and know VLC can handle it well since it allows auto replay
Url I have provided in live streaming URL so If event is live then only you can test it. But after I have upgraded jwplayer version 7 then our archive events also stop working. Here is link to check our archive event (https://swww.oneroom.co.nz/view/authorise.php?k=aXl5amZabWJCNzNLdmdtV0MwK0lsVzU1NytrUkZPNFJUQnUrSFExMnRJVT06L2J0Y0tOYlluWEFSeDZMMkg2VVc4Q2hZMTRmV042RXlLc0kzYlJoSXN6RT0=)
The license key you are embedding on that page is associated with a Free account. The ability to play back HLS streams in the player requires a Premium subscription, or higher.
I have changed my license key and error disappear but still not get video. If I copy video url(http://dtnt9f3kwl9rl.cloudfront.net/v3/playback/5884/5884_216.m3u8) and play in VLC player then it plays fine.
Your stream also works fine in our Stream Tester (if you uncheck “Attempt to render in HTML5”).
If I copy your exact .setup() method and paste it into the browser’s console, the player re-sets up itself and the stream plays. When you first load the page, the player is having the following error:
Cannot read property 'load' of undefined
I would suggest trying to create a reproduction page with just a basic setup and making sure that works (it should) and then adding a little bit of your custom setup at a time and seeing where the issue lies.
Please let me know if you need any more help or have any other questions.
I have tried with simple jwplayer setup with test video and It also gives me same error. But That error does not repetitive it occasional. When I debug it I come to know that u.load is undefined came from jwplayer-7.5.2.js file.
Is this version stable? And Do I need to include any other supportive js files? If I switch back to jwplayer 6.4 then It works fine. Can I have stable version of jwplayer 7?
As long as the version of 7.5.2 that you downloaded was listed as stable, it should be considered to be such. Right now, version 7.6.0 is the current stable release but I don’t think using that is going to make a difference in your issue.
Can you provide me with the URL to your test page with the simple setup so I may take a look?
I have created test page on same link (https://swww.oneroom.co.nz/view/authorise.php?k=aXl5amZabWJCNzNLdmdtV0MwK0lsVzU1NytrUkZPNFJUQnUrSFExMnRJVT06L2J0Y0tOYlluWEFSeDZMMkg2VVc4Q2hZMTRmV042RXlLc0kzYlJoSXN6RT0=)
If I run in Firefox it plays but .play() .pause() and .seek() does not work when I call this function. If same link run on chrome then It gives error "Cannot load M3U8: Unable to fetch HTTP resource over HTTP"
When I open your page in Firefox, I’m able to use .play(), .pause() and .seek() successfully in Firefox’s console successfully. I took a look at your code but I don’t see when you are calling the swapFeed() function. Can you point me in the right direction?
I am also getting the same mixed-content (HTTP over HTTPS) errors in Firefox’s console but Firefox is a little more lenient with still playing the content than Chrome is. Either way, if you site is HTTPS, you should only be requesting HTTPS resources.
When I call .play() It should trigger onplay event which is "playerInstance.on('play', function(event) {console.log("On Play");});"
In my case It does not print "On play" when I call .play() function. You can see in my code that after init(); function I have commented playerInstance.play(); because It does not work and does not print "On Play" on console.
When you click on thumbnail at bottom of the page, It will change the video footage. And call swapFeed() function. At that time I use seek() but It does not seek from where I am. Instead of that It starts from beginning.
I have added playerInstance.play(true); under playerInstance.on('error', function(event) {}); event So When I get error It display error message and then continious try to play video if It gets back then without delay it starts playing.
But As I said previously playerInstance.play(); does not work and It doesnt try again to look for play
In my case It does not print “On play” when I call .play() function. You can see in my code that after init(); function I have commented playerInstance.play(); because It does not work and does not print “On Play” on console.
I took a look at your page again in Firefox 48.0.1 and “On Play” is printing out to the console for me. I’ve attached a screenshot for your reference. It also prints “On Play” for me when I switch to a different feed and when I run playerInstance.play(true) in the console.
When you click on thumbnail at bottom of the page, It will change the video footage. And call swapFeed() function. At that time I use seek() but It does not seek from where I am. Instead of that It starts from beginning.
In your swapFeed() function, can you try wrapping playerInstance.play(true) inside of a playerInstance.on(‘play’) event. If you call .seek() right after .play(), it probably won’t work because it the player is not ready to be seeked right when .play() is called.
I have added playerInstance.play(true); under playerInstance.on(‘error’, function(event) {}); event So When I get error It display error message and then continious try to play video if It gets back then without delay it starts playing.
I do not believe .play() would work after an error is thrown. You may want to try at least re-loading the same playlist in the player using .load(). If that doesn’t work, you may have to call .setup() again.
1) On Play display in console because of init() and playerInstance.load() function called. Not because of playerInstance.play() so .play() not work in JW7 it was working fine in JW6.
Same as .seek() we used call straight after load() and play() and It was working fine in JW6 but not working in JW7. When I switch to different thumbnail It should start from where I was not from begining. I have tried to wrap seek() inside firstFrame event but it fails randomly. So its not best way to do. Do you have any better way to do that?
Please take a look at this test page in which I have a similar setup to what you are describing:
When the “Play First Playlist Item From Beginning” is clicked, it calls playerInstance.play() to begin playback.
When the .on(‘play’) event fires, a message is printed to the browser’s console.
When the buttons for the second or third playlist item are clicked, it will retrieve the current playback position, load the respective new video and seek to that stored playback position.
The code responsible for all this can be found on the “Code” tab of the page. Please let me know if I am leaving something out.
Thank you.
This question has received the maximum number of answers.