暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

vue+H5+阿里Aliplayer 实现视频播放实战

研发生产率生态 2020-09-13
716
  • 技术栈

         前端

             h5  vue  sockjs  stomp  axios

          后端

             SpringBoot  websocket

  • 功能

        1. 服务端主动推送视频,自动播放,自动续播

        2. 断开后重连机制

     代码实战

  • <!DOCTYPE html>

    <html>

    <head>

    <meta charset="utf-8">

    <meta http-equiv="x-ua-compatible" content="IE=edge" >

    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/>

    <title>Aliplayer Online Settings</title>

    <link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.8/skins/default/aliplayer-min.css" />

    <script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.8.8/aliplayer-min.js"></script>

    <script src="js/vue.js"></script>

    <script src="js/axios.min.js"></script>

    <script src="js/config.js"></script>

    <script src="js/api.js"></script>

    </head>

    <body>

    <div id="playerVideo">

    <div class="prism-player" id="player-con"></div>

    </div>

    <script>

    new Vue({

    el: '#playerVideo',

    data: {

    videolist: [],

    videoindex: 0,

    storeId: -1,

    showsetting: true,

    stompClient: null,

    player:null

    },

    created: function () {

    alert('created')

    },

    mounted: function () {

    alert('mounted')

    this.loadpic();

    this.show();

    this.initWebSocket()

    },

    methods: {

    initWebSocket: function () {

    // this.connection()

    // 需要有一个失败重连得到问题

    },

    connection: function (count) {

    let num=count||1;

    const socket = new SockJS(`${base_url}/h5/endpointstore`)

    this.stompClient = Stomp.over(socket)

    //建立连接,订阅主题

    this.stompClient.connect({}, (frame) => {

    this.stompClient.subscribe('/topic/reloadpic', (val) => {

    alert("重新加载图片")

    window.location.reload(true);

    })

    },()=>

    {

    if (num < 10) {

    console.log("重试链接次数:"+num);

    setTimeout(() => {

    this.connection(num + 1);

    }, 10000 * num);

    } else {

    console.log("重试"+num+"此放弃重连了");

    }

    })

    },

    loadpic: function () {

    // if (localStorage.getItem("loginname") != "" && localStorage.getItem("loginname") != null) {

    // this.showsetting = false;

    //this.show();

    //this.showSlides();

    //}else

    //{

    // window.location.href="login.html"

    // }

    this.videolist=[] //视频地址数组

    },


    show: function () {

    this.player = new Aliplayer({

    "id": "player-con",

    "source": this.videolist[0],

    "width": "100%",

    "height": "700px",

    "autoplay": true,

    "isLive": false,

    "rePlay": false,

    "playsinline": true,

    "preload": true,

    "language": "zh-cn",

    "controlBarVisibility": "hover",

    "useH5Prism": true

    }, function (player) {

    //先静音然后播放

    //player.mute();

    // player.play();

    alert("The player is created")

    console.log("The player is created");

    }

    );

    var thatplayer= this.player;

    var videolistTemp=this.videolist;

    var videoindexTemp=0;

    this.player.on('autoplay', function(data) {

    if(data.paramData) //可以自动播放

    {

    // alert(data.paramData)

    //隐藏提示

    }else //不可以自动播放

    {

    //alert(data.paramData)

    //显示提示用户点击播放

    }


    });

    this.player.on("ended", function()

    {

    thatplayer.loadByUrl(videolistTemp[++videoindexTemp]);

    });

    //let loginname = localStorage.getItem("loginname");

    // getStoreImages(loginname).then(function (res) {

    // t//his.piclist = res;

    //}.bind(this)).catch(function (error) {

    // console.log(error);

    // });

    },

    endedHandle:function()

    {


    },

    }

    })

    </script>

    </body>

      实现效果

  •   

相关技术群

  

文章转载自研发生产率生态,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论