-
-
Save io-st/9aabbac93ef7d32f1312c763495f10fb to your computer and use it in GitHub Desktop.
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<link rel="stylesheet" href="https://unpkg.com/plyr@3/dist/plyr.css"> | |
<link rel="stylesheet" href="./style.ccs"> | |
<script src="https://cdn.jsdelivr.net/npm/hls.js"></script> | |
<script src="https://unpkg.com/plyr@3"></script> | |
<script src="./plyr-hls.js"></script> | |
<div class="container"> | |
<video controls crossorigin playsinline> | |
<source src="https://p2p.cy/WoZie9ph/master.m3u8" type="application/x-mpegURL" /> | |
</video> | |
</div> |
document.addEventListener("DOMContentLoaded", () => { | |
const video = document.querySelector("video"); | |
const source = video.getElementsByTagName("source")[0].src; | |
// For more options see: https://github.com/sampotts/plyr/#options | |
// captions.update is required for captions to work with hls.js | |
const defaultOptions = {}; | |
if (Hls.isSupported()) { | |
// For more Hls.js options, see https://github.com/dailymotion/hls.js | |
const hls = new Hls(); | |
hls.loadSource(source); | |
// From the m3u8 playlist, hls parses the manifest and returns | |
// all available video qualities. This is important, in this approach, | |
// we will have one source on the Plyr player. | |
hls.on(Hls.Events.MANIFEST_PARSED, function (event, data) { | |
// Transform available levels into an array of integers (height values). | |
const availableQualities = hls.levels.map((l) => l.height) | |
// Add new qualities to option | |
defaultOptions.quality = { | |
default: availableQualities[0], | |
options: availableQualities, | |
// this ensures Plyr to use Hls to update quality level | |
forced: true, | |
onChange: (e) => updateQuality(e), | |
} | |
// Initialize here | |
const player = new Plyr(video, defaultOptions); | |
}); | |
hls.attachMedia(video); | |
window.hls = hls; | |
} else { | |
// default options with no quality update in case Hls is not supported | |
const player = new Plyr(video, defaultOptions); | |
} | |
function updateQuality(newQuality) { | |
window.hls.levels.forEach((level, levelIndex) => { | |
if (level.height === newQuality) { | |
console.log("Found quality match with " + newQuality); | |
window.hls.currentLevel = levelIndex; | |
} | |
}); | |
} | |
}); |
.container { | |
padding-top: 18vh; | |
margin: 20px auto; | |
width: 600px; | |
} | |
video { | |
width: 100%; | |
} |
How to add quality to hls player (plyr.io) along with other controls(rewind, fast-forward,current-time)?
I tried adding quality option using your code, but it only shows quality under settings button and hides all the controls (rewind, fast-forward,current-time,etc.) so don't know what's wrong here. Below are the examples.
Player without Quality: https://codepen.io/ramvishu/pen/yLxpPgO
Player with Quality:https://codepen.io/ramvishu/pen/YzOEdxy
But when I add quality option using sampotts/plyr#1741 (comment), it only shows quality under settings button and hides all the controls (rewind, fast-forward,current-time,etc.) (see screenshot 2).
how can I keep both controls and quality in player? Any guidance will be much appreciated. TIA :)
bro I am facing issue Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://p2p.cy/WoZie9ph/master.m3u8. (Reason: CORS request did not succeed). Status code: (null).
plz fix this
@Princegupta20009 Replace that url with the link of the M3U8 of what you want to play.
also can you please also add, option for subtitles and audio switching as well?
ccs
->css