位置: IT常识 - 正文

关于vue播放flv,m3u8视频流(监控)的方法(vue播放器)

编辑:rootadmin
关于vue播放flv,m3u8视频流(监控)的方法

推荐整理分享关于vue播放flv,m3u8视频流(监控)的方法(vue播放器),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue播放hls,vue播放视频文件,vue播放器,vue播放视频,vue播放视频,vue-video-player,vue播放器,vue视屏播放插件,内容如对您有帮助,希望把文章链接给更多的朋友!

前文:随着前端大屏页面的逐渐壮大,客户的需求也越来越多,大屏上面展示的事物也越来越丰     富。其中实时播放监控的需求逐步增加,视频流格式也是有很多种,用到最多的.flv、.m3u8。

一、 JessibucaPlayer插件用来播放flv流

1.首先是先把文件放在vue项目的public下面

2.在index.html文件里面引入 index.js文件(直接引入即可)

 3.把封装好的JessibucaPlayer组件放到公共components

<template> <div class="jessibuca-player" style="width: 100%; height: 100%"> <div class="container" :id="id" ref="container"></div> </div></template><script>export default { name: "JessibucaPlayer", props: { videoUrl: { type: String, default: "" }, id: { type: Number, required: true } }, data() { return { jessibuca: null // jessibuca 实例化对象 }; }, methods: { init() { this.jessibuca = new window.Jessibuca({ container: document.getElementById(this.id), // 播放器容器,若为 string ,则底层调用的是 document.getElementById('id') videoBuffer: 0.2, // 设置最大缓冲时长,单位毫秒,播放器会自动消除延迟。 forceNoOffscreen: true, // 是否不使用离屏模式(提升渲染能力) hasAudio: false, // 是否有音频 rotate: 0, // 设置旋转角度,只支持,0(默认) ,180,270 三个值 isResize: false, // 1.当为true的时候:视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边;2.当为false的时候:视频画面完全填充canvas区域,画面会被拉伸 isFullSize: true, // 当为true的时候:视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全 debug: false, // 是否开启控制台调试打印 timeout: 30, // 设置超时时长, 单位秒,在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件 supportDblclickFullscreen: true, // 是否支持屏幕的双击事件,触发全屏,取消全屏事件。 showBandwidth: false, // 是否显示网速 operateBtns: { // 配置功能 fullscreen: false, // 是否显示全屏按钮 screenshot: false, // 是否显示截图按钮 play: false, // 是否显示播放暂停按钮 audio: false // 是否显示声音按钮 }, keepScreenOn: false, // 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮。 isNotMute: false, // 是否开启声音,默认是关闭声音播放的。 loadingText: "加载中...", // 加载过程中文案。 background: "" // 背景图片。 }); // 事件: this.jessibuca_load() // 1. 监听 jessibuca 初始化事件。 this.jessibuca.on("load", () => { this.jessibuca_load()}); // 2. 信息,包含错误信息 this.jessibuca.on("log", data => this.jessibuca_log(data)); // 3. 触发暂停事件 this.jessibuca.on("pause", this.jessibuca_pause); // 4. 触发播放事件 this.jessibuca.on("play", this.jessibuca_play); // 5. 当前是否全屏 this.jessibuca.on("fullscreen", this.jessibuca_fullscreen); // 6. 触发声音事件,返回boolean值 this.jessibuca.on("mute", this.jessibuca_mute); // 7. 当解析出音频信息时回调 this.jessibuca.on("audioInfo", this.jessibuca_audioInfo); // 8. 当解析出视频信息时回调 this.jessibuca.on("videoInfo", this.jessibuca_videoInfo); // 9. 错误信息 this.jessibuca.on("error", this.jessibuca_error); // 10. 当设定的超时时间内无数据返回,则回调 this.jessibuca.on("timeout", this.jessibuca_timeout); // 11. 流状态统计,流开始播放后回调,每秒1次 this.jessibuca.on("start", this.jessibuca_start); // 12. 渲染性能统计,流开始播放后回调,每秒1次 this.jessibuca.on("performance", this.jessibuca_performance); // 13. 当前网速, 单位KB 每秒1次, this.jessibuca.on("kBps", this.jessibuca_kBps); }, // 事件: jessibuca_load() { // 监听 jessibuca 初始化事件。 console.log("on load"); console.log("module", this.videoUrl); this.methods_play(this.videoUrl); }, jessibuca_log(data) { // 信息,包含错误信息 console.log("on log", data); }, jessibuca_pause(flag) { // 触发暂停事件 console.log("on pause", flag); }, jessibuca_play(flag) { // 触发播放事件 console.log("on play", flag); }, jessibuca_fullscreen(flag) { // 当前是否全屏 console.log("on fullscreen", flag); if (flag) { let myEvent = new Event("resize"); setTimeout(() => { window.dispatchEvent(myEvent); }, 100); } }, jessibuca_mute(flag) { // 触发声音事件 console.log("on mute", flag); }, jessibuca_audioInfo(data) { // 当解析出音频信息时回调,2个回调参数 // 1. numOfChannels:声频通道 // 2. sampleRate 采样率 console.log("audioInfo", data); }, jessibuca_videoInfo(data) { // 当解析出视频信息时回调 // 1. w:视频宽 // 2. h:视频高 console.log("videoInfo", data); }, jessibuca_error(error) { // 错误信息 console.log("error:", error); }, jessibuca_timeout() { // 当设定的超时时间内无数据返回,则回调 console.log("timeout"); }, jessibuca_start(s) { // 流状态统计,流开始播放后回调,每秒1次 // 1. buf: 当前缓冲区时长,单位毫秒 // 2. fps: 当前视频帧率, // 3. abps: 当前音频码率,单位bit, // 4. vbps: 当前视频码率,单位bit, // 5. ts:当前视频帧pts,单位毫秒 // console.log('stats is', s); }, jessibuca_performance(performance) { // 渲染性能统计,流开始播放后回调,每秒1次。 // 0: 表示卡顿、1: 表示流畅、2: 表示非常流程 // console.log('performance', performance); }, jessibuca_kBps(kBps) { // 当前网速, 单位KB 每秒1次, // console.log('kBps', kBps); }, // 方法: methods_play(url) { // 播放 if (this.jessibuca.hasLoaded()) { this.jessibuca.play(url); } else { console.error("视频数据未加载完毕,请稍后操作"); } }, methods_mute() { // 静音 this.jessibuca.mute(); }, methods_cancelMute() { // 取消静音 this.jessibuca.cancelMute(); }, methods_pause() { // 暂停 this.jessibuca.pause(); }, methods_setVolume(volume) { // 设置音量 this.jessibuca.setVolume(volume); }, methods_setRotate(rotate) { // 设置旋转角度 0\180\270 this.jessibuca.setRotate(rotate); }, methods_destroy() { // 关闭视频,释放底层资源 if (this.jessibuca) { this.jessibuca.destroy(); } }, methods_fullscreen(flag) { // 全屏(取消全屏)播放视频 this.jessibuca.setFullscreen(flag); }, methods_screenShot() { // 截图 // 1. screenshot(filename, format, quality) // 2. {string} filename、 {string} format、{number} quality // 3.filename: 保存的文件名, 默认 时间戳、format : 截图的格式,可选png或jpeg或者webp ,默认 png、quality: 可选参数,当格式是jpeg或者webp时,压缩质量,取值0 ~ 1 ,默认 0.92 this.jessibuca.screenshot(); }, methods_setBufferTime(time) { // 设置最大缓冲时长,单位秒,播放器会自动消除延迟。 // {number} time this.jessibuca.setBufferTime(Number(time)); }, methods_setScaleMode(mode) { // 设置播放器填充 // 1. 0 视频画面完全填充canvas区域,画面会被拉伸 等同于参数 isResize 为false // 2. 1 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边 等同于参数 isResize 为true // 3. 2 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全 等同于参数 isFullSize 为true this.jessibuca.setScaleMode(Number(mode)); }, restartPlay() { // 重新加载 this.methods_destroy(); this.methods_play(this.videoUrl); } }, mounted() { this.init(); window.onerror = msg => (this.err = msg); }, beforeDestroy() { if (this.jessibuca) this.jessibuca.destroy(); }};</script><style>@import url("./JessibucaPlayer.css");</style>

 4.最后再自己用到的文件里面 引入组件即可

关于vue播放flv,m3u8视频流(监控)的方法(vue播放器)

 如有想要文件的请私聊

二、easyplayer插件播放m3u8流

教程:

1.首先npm安装EasyPlayer、copy-webpack-pluginps:copy-webpack-plugin版本一定一定一定不能大于6.0,否则会报错。

npm install @easydarwin/easyplayer --save npm install copy-webpack-plugin@5.1.2 --save-dev

2.最重要的地方 一定要把这个地方弄好 那就是在vue.config.js里面

const CopyWebpackPlugin = require('copy-webpack-plugin')configureWebpack: { plugins:[ new CopyWebpackPlugin([ { from: 'node_modules/@easydarwin/easyplayer/dist/component/EasyPlayer.swf', to: './libs/EasyPlayer/' }, { from: 'node_modules/@easydarwin/easyplayer/dist/component/crossdomain.xml', to: './libs/EasyPlayer/' }, { from: 'node_modules/@easydarwin/easyplayer/dist/component/EasyPlayer-lib.min.js', to: './libs/EasyPlayer/' } ]) ]}

3.还需要在public/index.html 引入EasyPlayer-lib.min.js,可以直接在node_modules里找到@easydarwin下的dist/compent/EasyPlayer-lib.min.js复制到pubilc目录下,还有需要EasyPlayer.wasm同样放到public目录下

 4.引入组件使用

 最后效果

本文链接地址:https://www.jiuchutong.com/zhishi/269638.html 转载请保留说明!

上一篇:DHCP安全维护范围(dhcp的安全防范)

下一篇:怎么解决Win7关闭锁屏不起作用?(win7如何取消关机)

  • 陌陌怎么搜索账号找人(陌陌怎么搜索账号找回)

    陌陌怎么搜索账号找人(陌陌怎么搜索账号找回)

  • 抖音可以看蛀牙那个特效在哪里(抖音看牙齿)

    抖音可以看蛀牙那个特效在哪里(抖音看牙齿)

  • 京东支付密码是什么(京东支付密码是什么时候设置的)

    京东支付密码是什么(京东支付密码是什么时候设置的)

  • 声呐是利用什么波(声呐是利用什么工作的)

    声呐是利用什么波(声呐是利用什么工作的)

  • 钉钉卡住算观看时间么(钉钉卡住算观看时长吗)

    钉钉卡住算观看时间么(钉钉卡住算观看时长吗)

  • dns地址一般是多少(dns数字是多少啊)

    dns地址一般是多少(dns数字是多少啊)

  • vb的三种工作模式分别是(简述vb工程的三种模式)

    vb的三种工作模式分别是(简述vb工程的三种模式)

  • 苹果手机建议贴后膜吗(苹果手机建议贴镜头膜吗)

    苹果手机建议贴后膜吗(苹果手机建议贴镜头膜吗)

  • 天猫超市卡和88会员叠加吗(天猫超市卡和88会员区别)

    天猫超市卡和88会员叠加吗(天猫超市卡和88会员区别)

  • 真我是oppo旗下的嘛(真我是oppo的牌子吗)

    真我是oppo旗下的嘛(真我是oppo的牌子吗)

  • 微信群200人怎么增加到500(微信群200人怎么扫码进群)

    微信群200人怎么增加到500(微信群200人怎么扫码进群)

  • 华为p40可以分屏吗(华为p40pro换屏)

    华为p40可以分屏吗(华为p40pro换屏)

  • 电话被拉黑能收到信息吗(电话被拉黑能收到提示吗)

    电话被拉黑能收到信息吗(电话被拉黑能收到提示吗)

  • 微信删除好友后搜索还有备注(微信删除好友后怎么找回聊天记录)

    微信删除好友后搜索还有备注(微信删除好友后怎么找回聊天记录)

  • 华为录屏快捷键怎么弄出来(华为录屏快捷键怎么设置)

    华为录屏快捷键怎么弄出来(华为录屏快捷键怎么设置)

  • 爱奇艺有tv版吗(爱奇艺有TV版吗)

    爱奇艺有tv版吗(爱奇艺有TV版吗)

  • iphone11耗电很厉害怎么回事(iphone11耗电严重)

    iphone11耗电很厉害怎么回事(iphone11耗电严重)

  • nove5怎么截屏(华为nove5怎么截屏快捷)

    nove5怎么截屏(华为nove5怎么截屏快捷)

  • 小度无法开机如何解决(小度 无法开机)

    小度无法开机如何解决(小度 无法开机)

  • ipadmini在哪插内存卡(ipad mini4在哪里插卡)

    ipadmini在哪插内存卡(ipad mini4在哪里插卡)

  • 手机怎么设置紧急号码(手机怎么设置紧急报警)

    手机怎么设置紧急号码(手机怎么设置紧急报警)

  • 微信步数没网能记步吗(微信步数没网能登录吗)

    微信步数没网能记步吗(微信步数没网能登录吗)

  • 华为mate30pro要不要贴膜(华为mate30pro还有必要买吗)

    华为mate30pro要不要贴膜(华为mate30pro还有必要买吗)

  • 淘宝地址邮编怎么是000000(淘宝地址的邮政编码怎么改)

    淘宝地址邮编怎么是000000(淘宝地址的邮政编码怎么改)

  • 抖音共同好友是通讯录好友吗(抖音里共同好友指什么)

    抖音共同好友是通讯录好友吗(抖音里共同好友指什么)

  • 织梦dede数据库内容替换,正则去掉文章内容中的img标签(织梦数据库连接失败的原因)

    织梦dede数据库内容替换,正则去掉文章内容中的img标签(织梦数据库连接失败的原因)

  • phpcms怎么安装模块(phpcms模板制作教程)

    phpcms怎么安装模块(phpcms模板制作教程)

  • 个体工商户超过免税额度如何收税
  • 小规模无进项怎么补税
  • 合并后税务局的全称是什么
  • 境外增值税代扣代缴
  • 转登记小规模纳税人转让固定资产
  • 房产折旧计算方法 举例
  • 小规模纳税人免税会计分录
  • 购买展示样品怎么入账
  • 递延所得税当期所得税费用
  • 没有进货发票怎么处罚
  • 开票金额和实际金额不一致
  • 无形资产的加计扣除为什么不影响应纳税所得额
  • 你如何界定成本与费用之间区别?
  • 教育费附加减免政策
  • 多扣社保个人部分怎么做分录
  • 未开票收入增值税如何计提
  • 公司冲账发票做账流程
  • 企业如何处理劳方与资方的关系
  • 小微企业减免所得税优惠政策
  • 税务局买税控盘需要的资料
  • 如何查找使用过的手机号
  • 以公允价值模式后续计量的投资性房地产无须计提减值
  • 所得税费用按月还是按年算
  • 工会经费怎么做账务处理
  • 合伙企业分红是免税企业需要缴纳什么税
  • 税务发票盖章要求
  • 企业所得税什么时候交
  • 企业收到工程款会计分录
  • php数组函数输出《咏雪》里有多少"片"字
  • linux怎么用gcc编译c程序
  • 企业发生的哪些费用可以结转
  • 房地产开发公司组织架构
  • 天国拯救晕倒的人多久起来
  • 增值税及附加税是什么意思
  • javascript保留字有哪些
  • vue sse
  • 注意!PHP 7中不要做的10件事
  • 一张专票可以开几项
  • 一般纳税人上月有普通发票收入没入账可以次月加上吗
  • 商业承兑汇票贴现会计分录
  • Monaco-editor的JSONSchema配置及使用介绍
  • 处置固定资产净收益属于利得吗
  • 新版电子税务局怎么增加办税人员
  • 一般纳税人不开票收入怎么做账
  • 新会计准则其他收益核算内容
  • 公司公账转私账违法吗
  • 以前年度是指哪一年
  • 制造费用怎么写
  • 小微企业社保代缴
  • 建筑公司挂靠单位的财务处理是?
  • 存货换入无形资产账务处理
  • 对公账户可以转让吗
  • 上年度会计凭证怎么填
  • 电子发票上面的字体是什么字体
  • 应纳税额与应纳所得额
  • 保险赔偿收入如何减税额
  • win mysql
  • mysql批量执行sql文件
  • mysql闪退处理
  • 微软6月24发布
  • xp无法识别的usb设备 怎么解决
  • 如何清理浏览器缓存
  • windows xp无法访问samba共享夹
  • win10更新后浏览器打不开网页
  • win7如何打开命令窗口
  • 在linux系统中,用来存放系统所需要的配置文件和子目录
  • linux使用命令查看ip地址
  • nodejss
  • Android自定义控件高级进阶与精彩实例
  • jQuery插件安装教程
  • linux查找功能
  • Python高手之路第3版PDF下载
  • javascript要怎么学
  • python设计程序
  • python3获取本机ip
  • python 字典怎么添加数据
  • 光伏电站电力监控系统
  • 火药概念股有哪些
  • 甘肃方正税务师事务所王小云
  • 山西省国家税务总局山西省电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设