videojs宫格视频选择播放

2024-08-30 05:36

本文主要是介绍videojs宫格视频选择播放,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目需要四宫格播放视频,而且还要实现点击视频加入播放。

首先,肯定要实现再一个页面上显示多个视频源并播放视频:

<template><div><div v-for="(item,index) in videoList" :key="index"  class="test_two_box"><video :id="'myVideo' + item.id" class="video-js"><source :src="item.src" type="video/mp4" /></video></div></div>
</template><script>
export default {data() {return {videoList: [{id: 0,type: 'video/mp4',src: '/mp4/1.mp4',name:'视频1'},{id: 1,type: 'video/mp4',src: '/mp4/2.mp4',name:'视频2'},{id: 2,type: 'video/mp4',src: '/mp4/3.mp4',name:'视频3'},{id: 4,type: 'video/mp4',src: '/mp4/4.mp4',name:'视频5'}]}},mounted() {this.videoList.map((item, index) => {let myPlayer = this.$video('myVideo' + item.id, {//确定播放器是否具有用户可以与之交互的控件。没有控件,启动视频播放的唯一方法是使用autoplay属性或通过Player API。controls: true,poster: item.cover,//自动播放属性,muted:静音播放// autoplay: "muted",//建议浏览器是否应在<video>加载元素后立即开始下载视频数据。preload: "auto",//设置视频播放器的显示宽度(以像素为单位)width: "300px",//设置视频播放器的显示高度(以像素为单位)height: "150px"});})}
}
</script>

这样就能显示四个视频,但是四个视频的格式是一列的格式,与我们的目标四宫格不符。

可以在前端展示部分做一个步长2的循环,让每一行都有两个视频:

<template><div><div v-for="(item,index) in videoList" :key="index"><ul v-if="index % 2 == 0"><video :id="'myVideo' + videoList[index].id" class="video-js"><source :src="videoList[index].src" type="video/mp4" /></video><video :id="'myVideo' + videoList[index + 1].id" class="video-js"><source :src="videoList[index + 1].src" type="video/mp4" /></video></ul></div></div>
</template><script>......
</script>

这样就能实现一个页面四宫格播放四个视频。但是这样只能播放固定的写死的四个视频,怎么实现选择播放哪个呢?

首先,一定获取待播放的全部视频列表showallvideoList。之后可以按钮的方式,选择全部视频列表的某个视频,将其替换正在播放视频列表showvideoList中的某一个视频。至于替换哪一个,可以通过flag的形式标记最早播放的视频,替换后更新flag即可。

但是代码里,播放视频是通过循环建立myPlayer实现的,这种实现方法,只能修改最后一个建立的myPlayer。所以为此要建立四个不同的myPlayer

<template>......
</template>
<script>
export default {data() {return {oddflag:true,showvideoList: [{id: 0,type: 'video/mp4',src: '/mp4/1.mp4',name:'视频1'},{id: 1,type: 'video/mp4',src: '/mp4/2.mp4',name:'视频2'},{id: 2,type: 'video/mp4',src: '/mp4/3.mp4',name:'视频3'},{id: 4,type: 'video/mp4',src: '/mp4/4.mp4',name:'视频4'}],showallvideoList: [{id: 0,type: 'video/mp4',src: '/mp4/1.mp4',name:'视频1'},{id: 1,type: 'video/mp4',src: '/mp4/2.mp4',name:'视频2'},{id: 2,type: 'video/mp4',src: '/mp4/3.mp4',name:'视频3'},{id: 3,type: 'video/mp4',src: '/mp4/4.mp4',name:'视频4'},{id: 4,type: 'video/mp4',src: '/mp4/5.mp4',name:'视频5'},{id: 5,type: 'video/mp4',src: '/mp4/6.mp4',name:'视频6'}]}},mounted() {this.showvideoList.map((item, index) => {if(index == 0){this.myPlayer0 = this.$video('myVideo' + item.id, {//确定播放器是否具有用户可以与之交互的控件。没有控件,启动视频播放的唯一方法是使用autoplay属性或通过Player API。controls: true,// poster: item.cover,//自动播放属性,muted:静音播放// autoplay: "muted",//建议浏览器是否应在<video>加载元素后立即开始下载视频数据。preload: "auto",//设置视频播放器的显示宽度(以像素为单位)width: "600px",//设置视频播放器的显示高度(以像素为单位)height: "300px",})}if(index == 1){this.myPlayer1 = this.$video('myVideo' + item.id, {//确定播放器是否具有用户可以与之交互的控件。没有控件,启动视频播放的唯一方法是使用autoplay属性或通过Player API。controls: true,// poster: item.cover,//自动播放属性,muted:静音播放// autoplay: "muted",//建议浏览器是否应在<video>加载元素后立即开始下载视频数据。preload: "auto",//设置视频播放器的显示宽度(以像素为单位)width: "600px",//设置视频播放器的显示高度(以像素为单位)height: "300px",})}if(index == 2){this.myPlayer2 = this.$video('myVideo' + item.id, {//确定播放器是否具有用户可以与之交互的控件。没有控件,启动视频播放的唯一方法是使用autoplay属性或通过Player API。controls: true,// poster: item.cover,//自动播放属性,muted:静音播放// autoplay: "muted",//建议浏览器是否应在<video>加载元素后立即开始下载视频数据。preload: "auto",//设置视频播放器的显示宽度(以像素为单位)width: "600px",//设置视频播放器的显示高度(以像素为单位)height: "300px",})}if(index == 3){this.myPlayer3 = this.$video('myVideo' + item.id, {//确定播放器是否具有用户可以与之交互的控件。没有控件,启动视频播放的唯一方法是使用autoplay属性或通过Player API。controls: true,// poster: item.cover,//自动播放属性,muted:静音播放// autoplay: "muted",//建议浏览器是否应在<video>加载元素后立即开始下载视频数据。preload: "auto",//设置视频播放器的显示宽度(以像素为单位)width: "600px",//设置视频播放器的显示高度(以像素为单位)height: "300px",})}})},methods:{show(item){console.log(item)if(this.oddflag){console.log(this.showvideoList[2])this.showvideoList[2] = item}else{console.log(this.showvideoList[3])this.showvideoList[3] = item}this.reshow(this.oddflag)this.oddflag = !this.oddflag},reshow(oddflag){console.log(this.showvideoList)if(oddflag){this.myPlayer2.src({src:this.showvideoList[2].src,type:this.showvideoList[2].type})}else{this.myPlayer3.src({src:this.showvideoList[3].src,type:this.showvideoList[3].type})}// console.log(this.showvideoList)// this.myPlayer.src({src:this.showvideoList[3].src,type:this.showvideoList[3].type})}}
}
</script>

(本示例实现最后两个视频的选择播放)
这样就可以实现宫格视频选择播放了

这篇关于videojs宫格视频选择播放的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119934

相关文章

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

exfat和ntfs哪个好? U盘格式化选择NTFS与exFAT的详细区别对比

《exfat和ntfs哪个好?U盘格式化选择NTFS与exFAT的详细区别对比》exFAT和NTFS是两种常见的文件系统,它们各自具有独特的优势和适用场景,以下是关于exFAT和NTFS的详细对比... 无论你是刚入手了内置 SSD 还是便携式移动硬盘或 U 盘,都需要先将它格式化成电脑或设备能够识别的「文

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

基于Python实现多语言朗读与单词选择测验

《基于Python实现多语言朗读与单词选择测验》在数字化教育日益普及的今天,开发一款能够支持多语言朗读和单词选择测验的程序,对于语言学习者来说无疑是一个巨大的福音,下面我们就来用Python实现一个这... 目录一、项目概述二、环境准备三、实现朗读功能四、实现单词选择测验五、创建图形用户界面六、运行程序七、

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②