Detecting video resolution changes
There is now a resize
event which fires when the video resolution changes.
HTML
<p data-content="resolution"></p>
<video src="https://bug1250345.bmoattachments.org/attachment.cgi?id=8722238"></video>
JavaScript
document.querySelector('video').addEventListener('resize', (e) => {
document.querySelector('[data-content="resolution"]').textContent = [
e.target.videoWidth,
e.target.videoHeight
].join('x');
});
(JSFiddle: http://jsfiddle.net/qz61o2xt/)
References:
- HTML Living Standard Media Events - resize
- Chromium Bug: Add a 'resize' event to elements for when the video data changes dimensions
- Chromium Bug: Fire 'resize' event on initial metadata load, too.
You can use loadedmetadata
event to define global variables or utilize Element.dataset
to reflect initial .videoWidth
, .videoHeight
properties of <video>
element; at timeupdate
event of <video>
initially stored and current event .videoWidth
, .videoHeight
values, if one of the properties changed call function
window.onload = function() {
function handleResolutionChange(event) {
// do stuff if `.videoWidth` or `.videoHeight` changed from initial value
}
var video = document.querySelector("video");
video.addEventListener("loadedmetadata", function(event) {
event.target.dataset.width = event.target.videoWidth;
event.target.dataset.height = event.target.videoHeight;
})
video.addEventListener("timeupdate", function(event) {
if (+event.target.dataset.width !== event.target.videoWidth
&& +event.target.dataset.height !== event.target.videoHeight) {
// call `handleResolutionChange` one or more times
// if `event.target` `.videoWidth` or `.videoHeight` changed
handleResolutionChange.call(event.target, event)
}
})
}
look if this helps I'm not sure.
Link - https://www.w3.org/2010/05/video/mediaevents.html