【vue】vue+easyPlayer 实现宫格布局及视频播放

由于业务需要,ant-design-vue框架集成easyPlayer.js作为视频播放器。EasyPlayer.js H5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS视频直播与视频点播等多种协议,支持H.264、H.265、AAC等多种音视频编码格式,支持mse、wasm等多种解码方式。

官方教程地址:
https://www.npmjs.com/package/@easydarwin/easyplayer

1、npm安装easyPlayer依赖包及引入文件

// 安装命令
npm install @easydarwin/easyplayer --save

// Vue 集成调用
copy node_modules/@easydarwin/easyplayer/dist/component/crossdomain.xml 到 静态文件 根目录
copy node_modules/@easydarwin/easyplayer/dist/component/EasyPlayer-lib.min.js 到 静态文件 根目录
// 若视频流为H.265调用EasyPlayer.wasm
copy node_modules/@easydarwin/easyplayer/dist/component/EasyPlayer.wasm 到 静态文件 根目录

// 注意: 没有调用会出现无法加载对应插件的报错public/index.html中引入EasyPlayer-lib.min.js静态资源

demo:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  <meta name="viewport" content="width=device-width,initial-scale=1.0"/>
  <link rel="icon" href="<%= BASE_URL %>favicon.ico"/>
  <title>EasyPlayer-demo</title>
  <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
  <script src="./EasyPlayer-lib.min.js"></script>
</head>
<body>
<noscript>
  <strong
  >We're sorry but easynvr-token doesn't work properly without JavaScript
    enabled. Please enable it to continue.</strong
  >
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

2、vue页面引入easyPlayer组件

<div class="videoArea">
     <div class="gridBtn">
        <span>布局:</span>
        <span @click='splitScreen(24, 1)' :span='4' class='splitClass'><img :src="require('@/assets/img/1-screen.png')"> 1 x 1</span>
        <span @click='splitScreen(12, 4)' :span='4' class='splitClass'><img :src="require('@/assets/img/4-screen.png')"> 2 x 2</span>
        <span @click='splitScreen(8, 9)' :span='4' class='splitClass'><img :src="require('@/assets/img/9-screen.png')"> 3 x 3</span>
        <span @click='splitScreen(6, 16)' :span='4' class='splitClass'><img :src="require('@/assets/img/16-screen.png')"> 4 x 4</span>
      </div>
     <div class="playerList">
        <a-row>
          <a-col :span="colSpan" v-for="i in playerNum" :key="i" @click="currentIndex = i">
            <a-card size="small" :class="{selectedCard: currentIndex === i}" :title="'视频监控'">
              <easy-player 
              	 ref="player"
                 :video-title="videoList[i-1] ? videoList[i-1].title : ''"
                 :video-url="videoList[i-1] ?  videoList[i-1].url : ''"
                 style="height: 260px"
                 :autoplay="autoplay"
                 :muted="muted"
                 @error="restartPlayer"
                 @ended="restartPlayer"
            </a-card>
          </a-col>
        </a-row>
      </div>
</div>

<script>
export default {
	components: {
    	EasyPlayer: () => import('@easydarwin/easyplayer')
    },
    data () {
      return {
     	 // 分屏布局
        playerNum: 1,
        colSpan: 24,
        currentIndex: 1,
         // 视频播放器
 		muted: false,
        autoplay: true,
        videoList: [
          { title: '视频1', url: 'http://flv.bdplay.nodemedia.cn/live/bbb.flv'},
          { title: '视频2', url: 'http://data.mars3d.cn/file/video/lukou.mp4'},
          { title: '视频3', url: 'http://vjs.zencdn.net/v/oceans.mp4'}
		]
	},
	methods:{
	  splitScreen(span, num) {
        this.colSpan = span
        this.playerNum = num
        if (this.currentIndex > num) {
          this.currentIndex = 1
        }
      },
      restartPlayer() {
        let [player] = this.$refs.player
        player = player.getVueInstance()
        player.initPlayer()  // 重新初始化播放器
      }
	}
}
</script>
 

3、demo效果

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
视频分片上传是一种常见的大文件上传方式,可以有效地避免上传过程中网络不稳定、服务器压力过大等问题。下面是使用Vue、Spring Boot和FFmpeg实现视频分片上传的大致流程: 1. 前端使用Vue编写上传组件,将视频文件进行分片并上传到服务器。 2. 后端使用Spring Boot接收前端上传的视频分片,并将分片存储到服务器上。 3. 在所有分片上传完成后,后端使用FFmpeg将分片合并成一个完整的视频文件。 下面是具体实现步骤: 前端: 1. 安装vue-upload-component组件,在Vue组件中引入该组件。 2. 在Vue组件中编写上传方法,将视频文件进行分片并上传到服务器。分片的大小可以根据实际情况进行设置,一般为1MB ~ 2MB。 3. 在上传过程中,可以实现进度条、暂停上传、继续上传等功能,以提升用户体验。 后端: 1. 使用Spring Boot编写接收上传分片的接口,将分片存储到服务器上。可以使用Spring Boot提供的MultipartFile类来接收前端上传的文件。 2. 在接收到所有分片后,使用FFmpeg将分片合并成一个完整的视频文件。可以使用FFmpeg的命令行工具,也可以使用FFmpeg的Java API。 3. 合并完成后,可以将视频文件存储到服务器的指定路径下,或者将视频文件存储到云存储中。 综上所述,使用Vue、Spring Boot和FFmpeg实现视频分片上传可以有效地解决大文件上传过程中遇到的问题,提升用户体验,并且保证视频文件的完整性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值