plyr.js 使用小记

206 阅读1分钟

cnpm i plyr 

//  git 地址
https://github.com/sampotts/plyr

<template>
    <div>
        <video id="player" controls webkit-playsinline="true" playsinline="true" x5-playsinline>
            <p> 你的浏览器不支持 HTML 视频。可点击<a :href="videoDetail?.url">此链接</a>观看。</p>
        </video>
    </div>
</template>

<script>
    import Plyr from 'plyr';
    import 'plyr/dist/plyr.css';
    export default {
        data() {
            return {
                videoDetail: {}, // 视频详情
                player: null, // plyr播放器
            }
        },
        methods:{
            videoInit() {
              this.player = new Plyr('#player', {
                settings: ['captions', 'quality', 'fullscreen'],
                // fullscreen: { iosNative: true },
              });
              // iosNative设置后 在浏览器里全屏后会使用原生iOS播放器的控件,在app里 全屏后控件不会显示。
              this.player.source = {
                title: this.videoDetail?.videoName,
                type: 'video',
                sources: [
                  {
                    src: this.videoDetail?.url,
                    type: 'video/mp4',
                  },
                ],
                poster: this.videoDetail?.imgUrl,
              };
              // 可以监听控件的响应事件 对应的样式也可自行调整
              this.player.on('enterfullscreen', () => {
                // console.log('enterfullscreen',document.getElementsByTagName('video')[0]);
                document.getElementsByTagName('video')[0].classList.add('plyr__poster_fullscreen');
                document.getElementsByClassName('plyr__poster')[0].classList.add('plyr__poster_fullscreen');
              });
              this.player.on('exitfullscreen', () => {
                // console.log('exitfullscreen',document.getElementsByClassName('plyr__poster')[0]);
                document.getElementsByTagName('video')[0].classList.remove('plyr__poster_fullscreen');
                document.getElementsByClassName('plyr__poster')[0].classList.remove('plyr__poster_fullscreen');
              });

            },
        },
    }
</script>