Vue 自定义控制视频播放器

 

// 获取视频对象

        getVideoEl() {

            let video = this.videoEl = this.$el.querySelector('video')

            this.currentTime = this.videoEl.currentTime



            video.addEventListener('loadeddata', () => {

                console.log('视频已经加载完成,时长为:' + video.duration + '秒');

                this.duration = video.duration

                this.videoLoading = false

            });

            video.addEventListener('play', () => {

                console.log('视频已经开始播放');

                this.paused = false

            });

            video.addEventListener('pause', () => {

                console.log('视频已经暂停');

                this.paused = true

            });

            video.addEventListener('ended', () => {

                console.log('视频已经播放完毕');

                this.paused = true

            });



            video.addEventListener('timeupdate', (e) => {

                if (this.sliderFlag) return

                this.currentTime = video.currentTime

                this.progress = video.currentTime / this.duration * 100;  // 计算播放进度百分比

            });

        },

        // 处理播放暂停事件

        handlePlay() {

            this.videoEl[this.paused ? 'play' : 'pause']()

        },

        // 处理静音

        handleMuted() {

            this.videoEl.muted = this.muted = !this.muted

        },
        // 处理自定义全屏
        handleFullScreen() {

            let video = this.$el.querySelector('.secure-video-box')

            if (document.fullscreenElement === video) {

                let arr = ['exitFullscreen', 'webkitExitFullscreen', 'msExitFullscreen']

                let method = arr.find(item => document[item])

                method && document[method]()

                this.isScreen = false

            } else {

                let arr = ['requestFullscreen', 'webkitRequestFullscreen', 'msRequestFullscreen']

                let method = arr.find(item => video[item])

                method && video[method]()

                this.isScreen = true

            }

        },
        // 格式化时分秒

        formatVideoTime(seconds) {

            const hours = Math.floor(seconds / 3600);

            const minutes = Math.floor((seconds - hours * 3600) / 60);

            const remainingSeconds = parseInt(seconds - hours * 3600 - minutes * 60);



            const hoursString = hours.toString().padStart(2, '0');

            const minutesString = minutes.toString().padStart(2, '0');

            const secondsString = remainingSeconds.toString().padStart(2, '0');



            return `${hoursString}:${minutesString}:${secondsString}`;

        },
        // 拖动播放进度

        handleDrag(e) {

            this.videoEl.currentTime = e

            this.videoEl.play()

        },

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值