vue+videojs视频播放、视频切换、视频断点分段上传

news2025/1/16 16:56:27

“本次需求是做一个视频列表,点击视频列表播放对应视频;同时要求实现断点分段上传大文件(视频)的功能 。

videojs文档:Getting Started with Video.js - Video.js: The Player Framework | Video.js

断点续传组件地址:GitHub - gaoyuyue/MyUploader: 单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传

整体界面大致如下:

 

1. 安装依赖

npm i -S video.js

2.入口文件引入js和样式文件

// main.js (入口文件中引入js和样式文件)
import videojs from 'video.js'
import 'video.js/dist/video-js.css'

// 如果需要可以注册为vue全局方法
Vue.prototype.$video = videojs;

3.开始封装video组件

<!-- 视频播放组件 -->

<template>
    <video
    ref="videoPlayer"
    class="video-js"
    >

    </video>
</template>
<script>
export default {
    name: 'VideoPlayer',
    props: {
        // 视频播放地址
        url: {
            type: String,
        }
    },
    data () {
        return {
            // 视频实例
            player: null,
        }
    },
    methods: {
        // 改变视频播放地址
        changeVideoSrc (src) {
            this.player.src([{
                src,
                type: 'video/mp4'
            }])
        },
    },
    mountd () {
        // 初始化视频
        // this.$video 就是 videojs, 文件入口内已经全局注册了
        this.player = this.$video(this.$refs.videoPlayer, {
            language: 'zh-CN', // 中文
            responsive: true,
            autoplay: false,
            preload: 'auto',
            playbackRates: [1, 1.5, 2],
            sources: [{
                src: this.url,
                type: 'video/mp4'
            }]
        }, () => {
            this.player.log('ready', this)
        })
    },
    beforeDestory () {
        this.player && this.player.dispose();
    },
    
}
</script>

4.测试视频组件是否正常

// 父组件中引入视频组件

<VideoPlayer :url="url">

// 这里可以写个固定的地址测试一下视频组件能否播放
// 注意:不能是本地视频。比如是服务器上的视频才可以播放。

失败信息】-- 通常就是code为4.  大概意思就是因为视频格式和网络原因不能播放。这有几个原因:

1.视频格式不正确。 要求是type是MP4,而请求播放的视频不是MP4格式。

2.网络不同或者跨域。这种错误很常见且隐秘。需要看看播放地址是否能正常访问,或者该视频地址是不是存在跨域(corss origin)。跨域就用代理,很好解决,不在追叙。

【汉化失败】

明明设置了language为中文,但是结果还是英文。这里有个问题,videojs不会自动引入语言包,需要我们自行引入中文语言包。找到语言包,单独拿出来,放在src目录下,在入口文件中引入即可。

方法:node_moudles下找打videojs.dist/lang/zh-cn.js,如下图,

找到zh-cn.js,单独复制出来,放进src的js文件夹下。

当然,这时候还要再这个js文件中引入video.js,

 然后在入口文件引入这个语言包即可汉化成功。

5.视频列表切换视频播放

// 视频列表代码比较简单不再写了  直接写切换方法

// 比如在父组件中  
<VideoPlayer ref="players" />

<!-- 视频切换列表 -->

<li
v-for="video in videos"
:key="video.id"
@click="changeVideoSource(video)"
>{{ 视频名称 }}</li>


// 视频切换方法
changeVideoSource (video) {
    this.$refs.players.changeVideoSrc(video.src);
},

至此,完成视频切换播放功能。

6.断点续传的插件

使用了下边这个断点续传的插件

GitHub - gaoyuyue/MyUploader: 单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传

首先,我们需要自行安装plupload。因为上边组件基于此组件封装的。

npm i -S plupload

然后,引入上边github项目中的如下几个文件:

这四个文件引入自己项目中去即可。

上传地址】 

 url就是上传地址。

上传参数

 可以在这里定义上传所需参数,

up.setOption("multipart_params", {
            
            "size":file.size,
            "md5":file.md5,
            filename: 'hahaha',
            id: '123456',
            // .......
        });

至此,视频播放与视频上传基本完成。要多看文档,多实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebRTC学习笔记六 兼容性 adapter.js

一、adapter.js发展背景 adapter.js自2012年底或者2013年初WebRTC早期的时候就已经出现了。它最初是Google的apprtc demo的一部分。原始版本仍可在Chrome tree中找到。它是一个非常小的项目&#xff0c;还没有150行。主要功能是隐藏像webkitRTCPeerConnection和mozRTCPeerConne…

Spring Boot+Mybatis:实现数据库登录注册与两种properties配置参数读取

〇、参考资料 1、hutool介绍 https://blog.csdn.net/abst122/article/details/124091375 2、Spring BootMybatis实现登录注册 https://www.cnblogs.com/wiki918/p/16221758.html 3、Spring Boot读取自定义配置文件 https://www.yisu.com/zixun/366877.html 4、Spring Boot读取p…

医院用故障电弧探测器AAFD 安科瑞 时丽花

摘 要&#xff1a; 医院运行中对于用电方面的要求越来越高&#xff0c;为了更好地体现用电价值&#xff0c;首先应该确保用电的安全性&#xff0c;尤其是对 于越来越繁杂的医院用电系统。基于此&#xff0c;在未来医院用电过程中应该加大关注力度&#xff0c;切实做好相关管理工…

Compose学习-> Text()

设置文本&#xff1a;text xxx 直接设置 Text(text "我是一个Text")引用资源文件&#xff1a;stringResource Text(text stringResource(id R.string.string_text))设置字体颜色&#xff1a;color xxx 引用系统自带的颜色 Text(text "我是一个Text"…

【技术分享】NB860+Lierda云平台=上电即上云——云管端协作让万物互联更简单(二)

随着物联网行业的快速发展&#xff0c;越来越多的物联网云服务平台涌现。如何快速实现应用开发&#xff0c;如何管理&#xff0c;如何让设备快速上云&#xff0c;成为关注的焦点。 第一期中我们介绍了基于MQTT协议快速接入利尔达物联网全连接云平台&#xff0c;本期我们将介绍如…

ManageEngine 第六次入选 Gartner® 安全信息和事件管理魔力象限™!

今天&#xff0c;我们很高兴地宣布&#xff0c;ManageEngine 已在2022年 Gartner 安全信息和事件管理 (SIEM) 魔力象限中获得认可&#xff0c;今年已经是其连续第六次出现在Gartner中。ManageEngine非常高兴再次获得这一认可。 在过去两年中&#xff0c;互联网向云计算的转变不…

svn的常规使用

svn的常规使用svn的常规使用1 客户端2 svn server3 qt使用svn4 svn项目迁移svn的常规使用 1 客户端 下载地址&#xff1a;官网&#xff0c;中文简体语言包在其下方 分别安装客户端可语言包&#xff0c;在安装语言包的时候勾选应用&#xff0c;svn便可变成中文了&#xff0c;或…

改革后IB数学该如何选?

IB数学&#xff0c;作为一个IB课程里必选科目&#xff0c;让无数IB学霸为之自豪&#xff0c;他们能解出外教都不会做的题。另一方面&#xff0c;也让很多同学&#xff08;自称“学渣”&#xff09;避之不及。 从2019年起&#xff0c;IB数学教学大纲发生重大改革。▲图源&#x…

Android -- 每日一问:如何理解 Android 中的 Context,它有什么用?

经典回答 官方文档对于 Context 的解释&#xff1a; Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and cla…

[附源码]SSM计算机毕业设计学生宿舍设备报修JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

光格科技将于12月6日上会:拟募资6亿元,姜明武为实控人

近日&#xff0c;苏州光格科技股份有限公司&#xff08;下称“光格科技”&#xff09;在上海证券交易所科创板递交招股书&#xff08;上会稿&#xff09;。据贝多财经了解&#xff0c;光格科技将于2022年12月6日接受科创板上市委的现场审议。 公开信息显示&#xff0c;光格科技…

微信小程序开发笔记

微信小程序开发笔记html条件渲染列表渲染按钮组件 buttoncss单位 rpx、px、vw、vh、rem定位方法设置图片为页面的背景自定义按钮的图标js全局变量底部导航栏 tabBar其他配置config.js带参数跳转页面云数据库的使用初始化查找地图组件 map从云数据库中调用经纬度&#xff0c;并且…

【附源码】计算机毕业设计JAVA资源循环利用

【附源码】计算机毕业设计JAVA资源循环利用 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA mybati…

数字化门店| 美业/医美门店管理系统 | 医美小程序

近些年来&#xff0c;随着人们消费升级和颜值经济的不断驱动&#xff0c;美业发展非常迅速&#xff0c;而医美行业也顺势规模增长。 当今互联网时代&#xff0c;各行业都在开展门店数字化转型&#xff0c;而这也让不少医美医院愿意构建基于门店会员管理的O2O闭环&#xff0c;并…

Vscode同时开发前后端

VSCode统一前后端文档 一、软件下载 软件地址下载 Documentation for Visual Studio Code 二、软件汉化 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B0uCKmDL-1669770108463)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALA…

React+Electron快速创建并打包成桌面应用

一、创建react项目 首先使用creat-react-app脚手架来创建一个react项目 # 安装 create-react-app 命令,如果已将安装请忽略 npm install -g create-react-app # 创建 react项目 create-react-app react-electron # 启动项目( create-react-app 真的超级方便啊) cd react-elec…

数仓之hive自定义UDTF函数详解

学习目录一、自定义UDTF函数一、自定义UDTF函数 1.说明文档 A custom UDTF can be created by extending the GenericUDTF abstract class and then implementing the initialize, process, and possibly close methods. The initialize method is called by Hive to notify t…

全局JSON序列化导致prometheus数据格式错乱

现象 现场配置完prometheus端点后&#xff0c;返回数据格式乱了&#xff0c;如下图所示 正常结果数据如下图所示 分析 在单个微服务上访问prometheus端点数据返回格式正常。在小型化化格式返回就错乱了。数据返回格式是由消息转化统一处理的。在小型化工程中&#xff0c;…

有限责任公司股东出资的方式有哪几种

一、有限责任公司股东出资的方式有哪几种 有限责任公司股东出资的方式有以下两种&#xff1a; 1.货币出资方式。股东以货币出资的&#xff0c;应当将货币出资足额存入公司在银行开设的账户&#xff1b; 2.非货币财产作价出资方式。以非货币财产出资的&#xff0c;应当依法办…

Web3中文|连年亏损下,web3能拯救B站吗?

作者 | XiaoZiNFTnews.com 11月15日&#xff0c;百度旗下DuDu Lab发行的DuDu Bear NFT已完成铸造&#xff0c;NFT搭建于以太坊上&#xff0c;铸造价格为0.02ETH&#xff0c;发售价格为0.05ETH&#xff0c;共发行1万个&#xff0c;总价值约为455万人民币&#xff0c;目前已售罄…