Мне нужны размеры видео для видео, которое загружается через тег ввода.Но когда я устанавливаю загруженное видео в качестве источника тега видео, событие загруженных метаданных не вызывается.
В этом методе я устанавливаю видео и слушателя:
function getVideoDimensionsOf(objUrl){
return new Promise(function(resolve){
let video = document.createElement('video');
//THIS GETS CALLED AS EXPECTED
video.addEventListener( "loadedmetadata", function () {
//THIS GETS NEVER CALLED
let height = this.videoHeight;
let width = this.videoWidth;
console.log(height,width)
}, false );
video.src = objUrl;
});
}
Вэтим методом я настроил обратный вызов для загрузки видео:
function localFileVideoPlayer() {
var URL = window.URL || window.webkitURL
var uploadSelectedFile = function (event) {
var file = this.files[0]
var type = file.type
var fileURL = URL.createObjectURL(file)
var fileReader = new FileReader();
fileReader.onload = function() {
var videofile = this.result;
//do something here with video data
};
fileReader.readAsArrayBuffer(file);
getVideoDimensionsOf(window.URL.createObjectURL(file))//-->>HERE I CALL THE FUNCTION THAT SHOULD SET THE VIDEO SOURCE
}
var inputNode = document.getElementById("videofile")
inputNode.addEventListener('change', uploadSelectedFile, false)
}
И это поле загрузки html:
<div>
Upload Video:
<input id="videofile" type="file" accept="video/*"/>
</div>
Я проверил, что вызывается метод getVideoDimensionsOf, но почемупрослушиватель загруженных метаданных не получает обратный вызов?