vue 封装视频播放组件,支持m3u8

折月煮酒 提交于 2020-01-24 02:43:43

现小视频横行时代,原video本身不支持m3u8格式,需要做兼容,使video支持meu8格式的视频播放,现容入并封装成vue组件。

<!-- 视频播放 -->
<template>
    <div class="video_box">
        <video ref="video" preload="none" :poster="myposter" width="100%" height="100%" muted  autoplay controls>
            您的浏览器不支持 video 标签。
            <source :src="videoSrc" type="video/mp4">
            <source :src="videoSrc" type="video/WebM">
            <source :src="videoSrc" type="video/Ogg">
            <source v-if="isM3u8" id="source" :src="videoSrc" type="application/x-mpegURL">
        </video>
    </div>
</template>

<script>

export default {
    name: 'YqVideo',
    props : ["videoSrc","myposter"],
    head () {
        return {
            script :[
                {src:"https://cdn.jsdelivr.net/npm/hls.js@latest"},
            ],
            meta : [
                {name:"referer",content:"no-referrer"}
            ]
        }
    },
    data () {
        return {
            isM3u8 : false
        }
    },
    watch: {
        videoSrc(){
            this.initVideo();
        }
    },
    computed: {},
    mounted() {
        this.initVideo();
    },
    methods: {
        initVideo (){
            const isM3u8 = this.videoSrc.indexOf("m3u8");
            this.isM3u8 = isM3u8 == -1?true:false;
            if(isM3u8 != -1){
                setTimeout(()=>{
                    var video = this.$refs.video;
                    if(Hls.isSupported()) {
                        var hls = new Hls();
                        hls.loadSource(this.videoSrc);
                        hls.attachMedia(video);
                        hls.on(Hls.Events.MANIFEST_PARSED,function() {
                            video.play();
                        });
                    }
                },200);
            }
        }
    },
}

</script>
<style lang='less' scoped>
.video_box{
    width: 100%;height: 100%;.pa;top: 0;left: 0;
    video{width: 100%;height: 100%;display: block;object-fit: fill;}
}
</style>

在需要的组件引入使用

import YqVideo from "@/components/utils/YqVideo";

<!-- videoSrc 为视频地址 -->
<yq-video :videoSrc="config.video.company" />

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!