JS获取视频播放时长
2021-09-22 本文已影响0人
Asuler
给定一个视频播放地址,获取该视频播放的时长
思路: 前提是能被播放,无法被浏览器播放则无法获取时长,所以根据这一点,下面的方案也能判断视频能否被浏览器支持解码
- 当传入的地址是 string类型的网络地址时,直接赋给video的src
- 当传入的地址是文件流时,需要用URL.createObjectURL去创建一个url
- 如果视频无法被播放,则直接会走到error,被监听器捕获
const getVideoDuration = src => {
return new Promise((res, rej) => {
const v = document.createElement('video');
if (typeof src === 'string') {
v.src = src;
}
else {
v.src = URL.createObjectURL(src);
}
v.autoplay = 'autoplay';
v.play();
v.addEventListener('loadedmetadata', () => {
+v.duration && res(v.duration);
!+v.duration && res(null);
});
v.addEventListener('durationchange', () => {
+v.duration && res(v.duration);
!+v.duration && res(null);
});
v.addEventListener('error', () => {
res(null);
});
});
};
export default getVideoDuration;