@RAPOS

Как узнать размеры видео-файла в JavaSript?

Собственно если использовать FileReader для чтения выбранного файла перед загрузкой на сайт, то к примеру узнать ширину или высоту изображения на поможет:
var img = new Image(file);
Для работы с аудио поможет:
var audio = new Audio(file);
А как быть с видео? Я хочу проверять ширину и высоту видео перед загрузкой на сайт. Какие есть способы? Или для этого не использовать FileReader?
<input id="file" type="file"/>
<script>
var file = document.getElementById('file').files[0];
document.getElementById('file').addEventListener('change', read_file(file));
function read_file(){
     var fr = new FileReader();
     fr.onloaded = function(e){
          var src = e.target.result;
          document.getElementByTagName('body').appendChild('<video src="'+ src +'"></video');
          var video = document.getElementByTagName('video')[0];
          console.log(video.videoHeight); // Возвращает '0', хотя видео присутствует
     }
}
</script>

Прошу помощи в решении этой проблемы.
  • Вопрос задан
  • 619 просмотров
Решения вопроса 1
deadbyelpy
@deadbyelpy
веб-шмеб
после - var video = document.getElementByTagName('video')[0];
вот такой код сделать:

var interval = setInterval(function () {
       if ( video.videoHeight > 0 ) {
           clearInterval(interval);
           console.log(video.videoHeight);
      }
}, 200);


200 мс - для примера, можно сделать меньше/больше.
почему вы 0 получаете - потому что браузер не обработал видео полностью, а вы уже пытаетесь обратиться к нему, чем больше размер видео - тем больше придется ждать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы