美文网首页
H5 js获取video视频时长

H5 js获取video视频时长

作者: 王善良_ | 来源:发表于2021-05-19 16:14 被阅读0次

需求:通过接口得到的一个视频在线地址,以及一个百分数进度,需要前端跳到对应的进度

过程:
1.video src=接口得到的src.

  1. video设置ref,通过ref得到video的dom实例
  2. 假设进度为60%,通过loadedmetadata事件,得到video的总时长,手动乘百分比,获取实时进度秒数,再用currentTime 设置
// 假设进度为60%
const video=videoRef.current;
video.addEventListener('loadedmetadata', () => {
                    const currentTime = 0.6 * video.duration;
                    video.currentTime = currentTime;
      }
});
  1. video不需要整个视频下载完才能得到总时长,loadedmetadata也不是视频全下载完触发,是开头缓冲了一下能播放了就触发,所以不用担心视频文件过大的问题。

4.5 PC端的直接用上面代码即可,移动端的还有点问题,需要再往下看.

  1. 移动端(真机)的video,不会自动加载,所以也不会触发loadedmetadata。需要手动触发下,用play()+pause(),其他代码跟之前的那篇自动实现poster效果一样
            const video=videoRef.current;
            video.setAttribute('playsinline', 'true');
            video.setAttribute('autoplay', 'false');
            video.setAttribute('preload', 'auto');
            video.setAttribute('webkit-playsInline', 'true');
            video.setAttribute('x-webkit-airplay', 'allow');
            video.setAttribute('x5-video-player-type', 'h5');
            video.setAttribute('x5-video-player-fullscreen', 'true');
            video.setAttribute('x5-video-orientation', 'landscape|portrait');
            //  让移动端视频开始缓冲
            video.play();
            video.pause();

            video.addEventListener('loadedmetadata', () => {
                    const currentTime = 0.6 * video.duration;
                    video.currentTime = currentTime;
                }
            });

微信浏览器里 play() + pause() 不好使,要用下面的代码 ,所以这两种都要写上

// 兼容移动端微信浏览器video
            if (window.WeixinJSBridge) {
                window.WeixinJSBridge.invoke('getNetworkType', {}, () => {
                    video.play();
                    video.pause();
                }, false);
            }

相关文章

  • H5 js获取video视频时长

    需求:通过接口得到的一个视频在线地址,以及一个百分数进度,需要前端跳到对应的进度 过程:1.video src=接...

  • 关于H5(3)

    H5里音视频小例子: 1:视频:video(css) 2:video (js控制) 3:文件拖拽 4:音频:audio

  • 【web前端】用video标签获取视频的时长

    用户上传视频时,要获取用户所选的视频的时长,如果太长就提示用户不能上传通过video标签来获取视频的时长

  • JS获取视频播放时长

    给定一个视频播放地址,获取该视频播放的时长 思路: 前提是能被播放,无法被浏览器播放则无法获取时长,所以根据这一点...

  • video标签属性方法和事件

    标签的属性 html 代码: //audio和video都可以通过JS获取对象,JS通过id获取video和aud...

  • js 获取上传视频的时长

    由于用阿里云解析视频的时候,是按照视频时长收费的,为了节省测试费用,老板要我在上传之前限制一下视频的时长! 这里通...

  • vue使用video.js

    下载video.js main.js引入video 创建视频播放器组件 在组件中引入视频组件 video配置 常用...

  • video.js实现视频播放

    video.js实现视频播放 在vue中使用video.js实现文件播放。 安装 yarn add video.j...

  • 解决HTML5 Video标签poster无法自适应video大

    在做H5视频播放,Video标签设置poster属性后,图片无法自适应Video大小,如下 给Video标签设置 ...

  • 解决HTML5 Video标签poster无法自适应video大

    在做H5视频播放,Video标签设置poster属性后,图片无法自适应Video大小,如下 给Video标签设置 ...

网友评论

      本文标题:H5 js获取video视频时长

      本文链接:https://www.haomeiwen.com/subject/zuvpjltx.html