vue2 使用liveplayer加载视频

vue2 使用liveplayer加载视频

官网: https://www.liveqing.com/docs/manuals/LivePlayer.html

  • 支持WebRTC/MP4播放;
  • 支持m3u8/HLS播放;
  • 支持HTTP-FLV/WS-FLV/RTMP播放;
  • 支持直播和点播播放;
  • 支持播放器快照截图;
  • 支持点播多清晰度播放;
  • 支持全屏或比例显示;
  • 自动检测IE浏览器兼容播放;
  • 支持自定义叠加层;
  • 安装
npm install @liveqing/liveplayer@2.7.35
# 安装 copy-webpack-plugin 插件,用于复制依赖到public下
npm install copy-webpack-plugin@4.6.0
  • 配置vue.config.js
const CopyWebpackPlugin = require('copy-webpack-plugin');module.exports = {configureWebpack: {plugins: [new CopyWebpackPlugin([{ from: 'node_modules/@liveqing/liveplayer/dist/component/crossdomain.xml'},{ from: 'node_modules/@liveqing/liveplayer/dist/component/liveplayer.swf'},{ from: 'node_modules/@liveqing/liveplayer/dist/component/liveplayer-lib.min.js', to: 'js/'},])]}}
  • index.html中引入 liveplayer-lib.min.js
 <script src="js/liveplayer-lib.min.js"></script>
  • 创建组件SDVideoPlayer.vue
<template><LivePlayerref="livePlayerRef":videoUrl="url":videoTitle="videoTitle":poster="poster":controls="controls":loop="loop":fluent="fluent":autoplay="autoplay":live="live":stretch="stretch":alt="alt":muted="muted":aspect="aspect":timeout="timeout":showCustomButton="showCustomButton":hideBigPlayButton="hideBigPlayButton":hideSnapshotButton="hideSnapshotButton":hideFullscreenButton="hideFullscreenButton":hideFluentButton="hideFluentButton":hideStretchButton="hideStretchButton":resolution="resolution":resolutiondefault="resolutiondefault":playbackRates="playbackRates":playbackRate="playbackRate":hasaudio="hasaudio":hasvideo="hasvideo":customButtons="customButtons":autofocus="autofocus":dblclickFullscreen="dblclickFullscreen":language="language":waterMark="waterMark":digitalZoom="digitalZoom"@message="handleMessage"@error="handleError"@ended="handleEnded"@timeupdate="handleTimeupdate"@pause="handlePause"@play="handlePlay"@fullscreen="handleFullscreen"@snapOutside="handleSnapOutside"@snapInside="handleSnapInside"@customButtons="handleCustomButtons"@canplay="handleCanplay"@volumechange="handleVolumechange"></LivePlayer>
</template><script>
import LivePlayer from '@liveqing/liveplayer';export default {components: { LivePlayer },props: {/*** 视频地址*/url: {type: String,default: '',},/*** 视频右上角显示的标题*/videoTitle: {type: String,default: '',},/*** 视频封面图片*/poster: {type: String,default: '',},/*** 自动播放*/autoplay: {type: Boolean,default: true,},/*** 显示播放器控制栏*/controls: {type: Boolean,default: true,},/*** 是否循环播放*/loop: {type: Boolean,default: false,},/*** 是否直播, 标识要不要显示进度条*/live: {type: Boolean,default: false,},/*** 视频流地址没有指定情况下, 视频所在区域显示的文字,相当于 html img 标签的 alt 属性*/alt: {type: String,default: '无信号',},/*** 是否静音*/muted: {type: Boolean,default: true,},/*** 视频显示区域的宽高比,fullscreen 即是全屏展示*/aspect: {type: String,default: '16:9',},/***  流畅模式*/fluent: {type: Boolean,default: true,},/***  是否拉伸*/stretch: {type: Boolean,default: false,},/***  m3u8 加载超时(秒)*/timeout: {type: Number,default: 20,},/***  是否在工具栏显示自定义按钮(极速/流畅, 拉伸/标准)*/showCustomButton: {type: Boolean,default: true,},/***  是否隐藏起播状态下的大播放按钮*/hideBigPlayButton: {type: Boolean,default: false,},/***  是否隐藏 快照 按钮*/hideSnapshotButton: {type: Boolean,default: false,},/***  是否隐藏 全屏 按钮*/hideFullscreenButton: {type: Boolean,default: false,},/***  是否隐藏 极速/流畅 按钮*/hideFluentButton: {type: Boolean,default: false,},/***  是否隐藏 拉伸/标准 按钮*/hideStretchButton: {type: Boolean,default: false,},/***  HLS点播流播放时使用:需已有对应清晰度的HLS流,供选择的清晰度配置,*  如 "yh,fhd,hd,sd" (说明:*  yh:原始分辨率,*  fhd:超清,*  hd:高清,*  sd:标清,*  不配置则不启用,*  需要提供多清晰度源,比如原画源是test.m3u8, 则hd源即为test_hd.m3u8)*/resolution: {type: String,default: '',},/***  HLS点播流播放时使用:默认播放的清晰度*/resolutiondefault: {type: String,default: 'hd',},/***  HLS点播流播放时使用:倍速列表*/playbackRates: {type: Array,default: [0.5, 1, 2, 3],},/***  HLS点播流播放时使用:默认倍速*/playbackRate: {type: Number,default: 1,},/***  HTTP-FLV播放时使用: 是否有音频,传递该属性用于处理只有音频或只有视频的源, Boolean 默认不配置自动判断*/hasaudio: {type: Boolean,},/***  HTTP-FLV播放时使用: 是否有视频,传递该属性用于处理只有音频或只有视频的源, Boolean 默认不配置自动判断*/hasvideo: {type: Boolean,},/***  v2.5.1  自定义工具栏按钮, 配置模板(按钮名称[:class名称]), 多个用英文逗号分隔,*  示例:custom-buttons="对讲,配置:vjs-icon-cog"*/customButtons: {type: String,default: '',},/***  v2.5.2  是否自动获取焦点*/autofocus: {type: Boolean,default: false,},/***  v2.5.3  是否双击全屏*/dblclickFullscreen: {type: Boolean,default: true,},/***  v2.6.2  语言(zh-CN/en) 默认不配置自动判断*/language: {type: String,},/***  v2.7.12  水印文字*/waterMark: {type: String,default: '',},/***  v2.7.29  电子放大*/digitalZoom: {type: Boolean,default: false,},},methods: {/////////////////////////////// 事件 ////////////////////////////////*** m3u8 加载失败时触发通知消息, 参数: { type: '', message: ''}*/handleMessage(obj) {this.$emit('message', obj);},/*** 播放器出错回调, 参数: Error Object*/handleError(obj) {this.$emit('error', obj);},/*** 播放结束, 参数: 无*/handleEnded() {this.$emit('ended');},/*** 进度更新, 参数: 当前时间进度*/handleTimeupdate(obj) {this.$emit('timeupdate', obj);},/*** 暂停, 参数: 当前时间进度*/handlePause(obj) {this.$emit('pause', obj);},/*** 播放, 参数: 当前时间进度*/handlePlay(obj) {this.$emit('play', obj);},/*** 全屏状态改变, 参数:true/false*/handleFullscreen(obj) {this.$emit('fullscreen', obj);},/*** 外部快照回调, 参数: 快照 Base64 数据*/handleSnapOutside(obj) {this.$emit('snapOutside', obj);},/*** 内部快照回调, 由控制栏快照按钮触发, 参数: 快照 Base64 数据*/handleSnapInside(obj) {this.$emit('snapInside', obj);},/*** v2.5.1 自定义按钮点击回调, 参数:名称*/handleCustomButtons(obj) {this.$emit('customButtons', obj);},/*** v2.7.32 可播放, 参数:时长(秒)*/handleCanplay(obj) {this.$emit('canplay', obj);},/*** v2.7.32 音量改变回调, 参数:音量(0~1),静音状态*/handleVolumechange(obj) {this.$emit('volumechange', obj);},/////////////////////////////// 方法 ////////////////////////////////*** 播放*/play() {this.$refs.livePlayerRef.play();},/*** 暂停*/pause() {this.$refs.livePlayerRef.pause();},/*** 获取暂停状态*/paused() {this.$refs.livePlayerRef.paused();},/***  获取当前播放时间进度, 同步返回播放时间进度数据*/getCurrentTime() {this.$refs.livePlayerRef.getCurrentTime();},/***  v2.2.5 设置当前播放时间进度, 即 seek*/setCurrentTime() {this.$refs.livePlayerRef.setCurrentTime();},/***  外部 API 方式获取快照, 快照获取成功后, 触发 snapOutside Event*/snap() {this.$refs.livePlayerRef.snap();},/***  获取静音状态*/getMuted() {this.$refs.livePlayerRef.getMuted();},/***  设置静音状态*/setMuted() {this.$refs.livePlayerRef.setMuted();},/***  v1.7.6 获取全屏状态*/isFullscreen() {this.$refs.livePlayerRef.isFullscreen();},/*** v1.7.6 触发全屏, 需要放置到交互事件回调中调用*/requestFullscreen() {this.$refs.livePlayerRef.requestFullscreen();},/*** v2.1.9 退出全屏, 需要放置到交互事件回调中调用*/exitFullscreen() {this.$refs.livePlayerRef.exitFullscreen();},/*** v2.1.9 触发全屏, 需要放置到交互事件回调中调用, 如果已处在全屏状态, 则退出全屏*/toggleFullscreen() {this.$refs.livePlayerRef.toggleFullscreen();},/*** v1.7.7 获取音量*/getVolume() {this.$refs.livePlayerRef.getVolume();},/*** v1.7.7 设置音量, 0~1*/setVolume(val) {this.$refs.livePlayerRef.setVolume(val);},/*** v2.7.10 获取点播时长(秒)*/getDuration() {this.$refs.livePlayerRef.getDuration();},},
};
</script><style lang="scss" scoped></style>
  • 使用组件
 <div style="width: 500px; height: 400px"><SDVideoPlayer :url="url"></SDVideoPlayer></div>
 url: 'https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/hls/xgplayer-demo.m3u8'

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

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

相关文章

JavaScript语法树简介:AST/CST/词法/语法分析/ESTree/生成工具

AST简介 在平时的开发中&#xff0c;经常会遇到对JavaScript代码进行检查或改动的工具&#xff0c;例如ESLint会检查代码中的语法错误&#xff1b;Prettier会修改代码的格式&#xff1b;打包工具会将不同文件中的代码打包在一起等等。这些工具都对JavaScript代码本身进行了解析…

Java函数式编程之【基本数据类型流】

一、基本数据类型与基本数据的包装类 在Java编程语言中&#xff0c;int、long和double等基本数据类型都各有它们的包装类型Integer、Long和Double。 基本数据类型是Java程序语言内置的数据类型&#xff0c;可直接使用。 而包装类型则归属于普通的Java类&#xff0c;是对基本数据…

.NET Core部署服务器

1、以.NET Core5.0为例&#xff0c;在官网下载 下载 .NET 5.0 (Linux、macOS 和 Windows) | .NET 根据自己需求选择x64还是x86&#xff0c;记住关键下载完成还需要下载 Hosting Bundel &#xff0c;否则不成功 2、部署https将ssl证书放在服务器上&#xff0c;双击导入&#…

YOLO---04YOLOv3

YOLOV3 论文地址&#xff1a;&#xff1a;【https://arxiv.org/pdf/1804.02767】 YOLOV3 论文中文翻译地址&#xff1a;&#xff1a;【YOLO3论文中文版_yolo v3论文 中文版-CSDN博客】 YOLOv3 在实时性和精确性在当时都是做的比较好的&#xff0c;并在工业界得到了广泛应用 …

Qt知识点3『自定义属性的样式表失败问题』

问题1&#xff1a;自定义类中的自定义属性&#xff0c;如何通过样式表来赋值除了QT自带的属性&#xff0c;我们自定义的类中如果有自定义的静态属性&#xff0c;也可以支持样式表&#xff0c;如下 &#xff1a; Q_PROPERTY(QColor myBorderColor READ getMyBorderColor WRITE s…

RDQS_c和RDQS_t的作用及区别

&#x1f501; LPDDR5 中的 RDQS_t 和 RDQS_c — 复用机制详解 &#x1f4cc; 基本角色 引脚名 读操作&#xff08;READ&#xff09;作用 写操作&#xff08;WRITE&#xff09;作用&#xff08;当启用Link ECC&#xff09; RDQS_t Read DQS True&#xff1a;与 RDQS_c…

测试分类:详解各类测试方式与方法

前言&#xff1a;为什么要将测试进行分类呢&#xff1f;软件测试是软件生命周期中的⼀个重要环节&#xff0c;具有较高的复杂性&#xff0c;对于软件测试&#xff0c;可以从不同的角度加以分类&#xff0c;使开发者在软件开发过程中的不同层次、不同阶段对测试工作进行更好的执…

新手docker安装踩坑记录

最近在学习docker&#xff0c;安装和使用折腾了好久&#xff0c;在这里记录一下。下载# 依赖安装 sudo apt update sudo apt install -y \ca-certificates \curl \gnupg \lsb-release# 使用清华镜像源&#xff08;Ubuntu 24.04 noble&#xff09; echo \"deb [arch$(dpkg …

TOGAF指南1

1.TOGAF标准简介 TOGAF&#xff08;The Open Group Architecture Framework&#xff09;就像是一个企业架构的“操作手册”。它帮助企业设计、搭建和维护自己的“系统地图”&#xff0c;确保不同部门、技术、业务目标能像齿轮一样协调运转。 它的核心是&#xff1a; 用迭代的方…

[Linux入门] Linux 防火墙技术入门:从 iptables 到 nftables

目录 一、防火墙基础&#xff1a;netfilter 与 iptables 的关系 1️⃣什么是 netfilter&#xff1f; 2️⃣什么是 iptables&#xff1f; 二、iptables 核心&#xff1a;五链四表与规则体系 1️⃣什么是 “链”&#xff08;Chain&#xff09;&#xff1f; 2️⃣ 什么是 “…

函数fdopendir的用法

以下是关于 fdopendir 函数的详细解析&#xff0c;结合其核心功能、参数说明及典型应用场景&#xff1a;&#x1f50d; ‌一、函数功能与原型‌‌核心作用‌将已打开的目录文件描述符&#xff08;fd&#xff09;转换为目录流指针&#xff08;DIR*&#xff09;&#xff0c;用于后…

[源力觉醒 创作者计划]_文心4.5开源测评:国产大模型的技术突破与多维度能力解析

声明&#xff1a;文章为本人真实测评博客&#xff0c;非广告&#xff0c;并没有推广该平台 &#xff0c;为用户体验文章 一起来轻松玩转文心大模型吧&#x1f449; 文心大模型免费下载地址 一、引言&#xff1a;文心4.5开源——开启多模态大模型新时代 2025年6月30日&#x…

微信小程序无法构建npm,可能是如下几个原因

安装位置的问题&#xff0c;【npm安装在cd指定位置】小程序缓存的问题退出小程序&#xff0c;重新构建即可

从 MyBatis 到 MyBatis - Plus:@Options 注解的那些事儿

在 MyBatis 以及 MyBatis - Plus 的开发过程中&#xff0c;注解的使用是提升开发效率和实现特定功能的关键。今天我们就来聊聊 Options 注解&#xff0c;以及在 MyBatis - Plus 中它的使用场景和替代方案。 一、MyBatis 中的 Options 注解 在 MyBatis 框架中&#xff0c;Option…

转换图(State Transition Diagram)和时序图(Sequence Diagram)画图流程图工具

针对程序员绘制状态转换图&#xff08;State Transition Diagram&#xff09;和时序图&#xff08;Sequence Diagram&#xff09;的需求&#xff0c;以下是一些好用的工具推荐&#xff0c;涵盖在线工具、桌面软件和基于文本的工具&#xff0c;适合不同场景和偏好。这些工具在易…

基于php的在线酒店管理系统(源代码+文档+PPT+调试+讲解)

课题摘要在旅游住宿行业数字化转型的背景下&#xff0c;传统酒店管理存在房态更新滞后、预订渠道分散等问题。基于 PHP 的在线酒店管理系统&#xff0c;凭借其开发高效、兼容性强的特点&#xff0c;构建集客房管理、预订处理、客户服务于一体的综合性管理平台。 系统核心功能包…

视频质量检测中卡顿识别准确率↑32%:陌讯多模态评估框架实战解析

原创声明本文为原创技术解析&#xff0c;核心技术参数与架构设计引用自《陌讯技术白皮书》&#xff0c;禁止未经授权的转载与改编。一、行业痛点&#xff1a;视频质量检测的现实挑战在实时流媒体、在线教育、安防监控等领域&#xff0c;视频质量直接影响用户体验与业务可信度。…

流式输出阻塞原因及解决办法

流式输出不懂可看这篇文章&#xff1a;流式输出&#xff1a;概念、技巧与常见问题 正常情况&#xff0c;如下代码所示&#xff1a; async def event_generator():# 先输出数字1yield "data: 1\n\n"# 然后每隔2秒输出数字2&#xff0c;共输出10次for i in range(10):…

linux系统----Ansible中的playbook简单应用

目录 Playbooks中tasks语法使用 1、file 创建文件&#xff1a;touch 创建目录&#xff1a;directory 2、lineinfile 修改文件某一行文本 3、replace 根据正则表达式替换文件内容&#xff08;指定换字符串&#xff09; 5、template/copy 模板作用类似于copy&#xff0…

bmcweb工作流程

在openbmc中,bmcweb是一个web服务程序,类似于lighttpd,提供web服务。本文将简单介绍这个服务进程的执行流程。 bmcweb的入口函数main(). main() -> run() run()先注册routes,最后调用app.run(). 第一个注册的route为crow::webassets:requestRoutes(). crow::webasse…