Как правильно выводить длину видео?

Как правильно выводить длину видео файла, у меня сейчас выводит

"00:00:10"
"00:00:06"

Нужно если длина видео в секундах было вот так
"00:10"
если в минутах
"10:40"
и если в часах уже вот так как сейчас
"00:00:10"


const a = 'https://www.w3schools.com/html/mov_bbb.mp4';
const b = 'https://assets.codepen.io/6093409/hubspot-video-example.mp4';

const arr = [a, b];

arr.map((item) => {
  let media = new Audio(item);
  media.onloadedmetadata = function () {
    console.log(new Date(media.duration * 1000).toISOString().slice(11, 19));
  };
});


codepen
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно начальный индекс вырезания подстроки менять, и часы забирать только когда длиннее часа:
-    console.log(new Date(media.duration * 1000).toISOString().slice(11, 19));
+    console.log(new Date(media.duration * 1000).toISOString().slice(media.duration > 3600 ? 11 : 14, 19));
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@calculator212
Просто делать проверку на то, что длительность меньше одного часа. Если использовать ваш код, то можно сделать так
arr.map((item) => {
  let media = new Audio(item);
  media.onloadedmetadata = function () {
    
    let ac = new Date(media.duration * 1000);
    const hours = ac.getUTCHours();
    
    if (hours == 0){
      console.log(ac.toISOString().slice(14, 19))
    } else {
      console.log(ac.toISOString().slice(11, 19))
    }  
    
  };
});
Ответ написан
Комментировать
Okujava-script
@Okujava-script
Веб-программист с абсолютным слухом и композитор
Но разве удобно использовать такой странный метод, как toISOString() :) Я бы сделал так:
const a = 'https://www.w3schools.com/html/mov_bbb.mp4';
const b = 'https://assets.codepen.io/6093409/hubspot-video-example.mp4';

const arr = [a, b];

arr.map((item) => {
	let media = new Audio(item);
	media.onloadedmetadata = function () {
		let date = new Date(this.duration * 1000);
		let h = date.getUTCHours();
		h = h ? h + ':' : '';
		let m = date.getMinutes();
		let s = date.getSeconds();
		console.log(h + m + ':' + s);
	};
});
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы