JS获取视频播放时长

2021-09-22  本文已影响0人  Asuler

给定一个视频播放地址,获取该视频播放的时长

思路: 前提是能被播放,无法被浏览器播放则无法获取时长,所以根据这一点,下面的方案也能判断视频能否被浏览器支持解码

  1. 当传入的地址是 string类型的网络地址时,直接赋给video的src
  2. 当传入的地址是文件流时,需要用URL.createObjectURL去创建一个url
  3. 如果视频无法被播放,则直接会走到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;
上一篇 下一篇

猜你喜欢

热点阅读