JS 获取视频时长的方法

2,957 阅读1分钟

验证上传视频时长

我们在用input上传文件的时候,我们能够获取到大小,但是如果获取时长就没有办法了。如果验证上传的视频在100s以上,这个需要要怎么做呢?

video元素有一个duration属性,它表示的是视频时长的秒数。

let video = document.createElement('video');
let i = setInterval(function() {
	if(video.readyState > 0) {
		// 在这里获取时长,不然有可能获取错误的视频时长,获取到的时长是一个string格式,注意格式化
                console.log(parseFloat(video.duration, 10))

		clearInterval(i);
	}
}, 100);

需要说明的一点是,我们需要使用setInterval来检查视频的readyState是否有效,如果视频还没有加载成功,我们就去获取这个值,得到的数值就会有问题。 另外如果在异步操作中,可以用 Promise进行包裹。