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

这篇具有很好参考价值的文章主要介绍了关于vue播放flv,m3u8视频流(监控)的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

一、 JessibucaPlayer插件用来播放flv流

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

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

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

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

 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视频流(监控)的方法

 如有想要文件的请私聊

二、easyplayer插件播放m3u8流

教程:

1.首先npm安装EasyPlayer、copy-webpack-plugin
ps: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目录下

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

 4.引入组件使用

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

 最后效果

关于vue播放flv,m3u8视频流(监控)的方法文章来源地址https://www.toymoban.com/news/detail-414260.html

到了这里,关于关于vue播放flv,m3u8视频流(监控)的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • m3u8视频流,视频切片处理

    随着客户的增加,mp4文件播放的弊端也日益凸显。 mp4缺点 1):mp4的关键帧元素往往很大,需要加载很长时间才能开始播放。 2):当用户打开一个视频播放的时候,浏览器会持续请求下载mp4文件直到下载完成,就算是用户暂停视频播放浏览器也会持续这种下载状态,给服务器硬

    2024年02月02日
    浏览(61)
  • 小X通m3u8视频流AES加密分析

    最近有空研究了下小X通的视频协议,下面记录下研究过程 首先我们要了解下m3u8是什么 首先我们需要了解什么时HLS,所谓HLS(HTTP Live Streaming)是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。而m3u8是HLS协议的一部分,但是在直播,视频网站等用处很广泛。 HLS协议规定

    2024年02月05日
    浏览(40)
  • Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流

    Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流: Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流_霸道流氓气质的博客-CSDN博客 上面讲了Nginx-http-flv-module+flv.js进行流媒体服务器搭建和前端播放视频流的过

    2024年02月01日
    浏览(59)
  • 前端vue播放m3u8、flv、mp4视频的方法

    安装依赖 npm install video.js --save // 视频播放器插件 npm install videojs-contrib-hls --save // 播放hls流插件 页面引入插件 页面中的使用 简介:flv.js是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。由 bilibili 网站开源。 开源地址: https://github.com/Bilibili/flv.js/ 安装依

    2024年02月13日
    浏览(58)
  • 在AWS Lambda中使用FFmpeg处理m3u8视频流

    在直播里领域,我们经常需要对视频流进行处理。FFmpeg则是该领域中处理的利器。这篇文章,我们将以视频流截图为例,讲解如何在AWS Lambda中对m3u8视频流进行截图。因为Lambda是无服务架构,其本地存储是不可靠的,于是最后我们需要将截图文件上传S3桶。 这块的方案可以见

    2024年02月03日
    浏览(60)
  • ffmpeg + nginx 实现rtsp视频流转m3u8视频流,转码推流(linux)

    FFmpeg即是一款音视频编解码工具,同时也是一组音视频编码开发套件,作为编码开发套件,它为开发者提供了丰富的音视频处理的调用接口。 FFmpeg提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种多彩格式转换、多种采样率转换、多种码率

    2024年02月09日
    浏览(70)
  • Uniapp H5 播放m3u8、flv格式视频

    简述一下业务需求,仅仅是需要在H5页面播放m3u8格式的视频,但是Uniapp官方提供的video组件在H5端不支持m3u8格式的视频播放,所以需要使用第三方库来播放,这里我使用的是MuiPlayer,但是貌似MuiPlayer的官方文档没有过多提及UniApp的用法,由于MuiPlayer默认支持mp4格式播放,所以

    2024年04月15日
    浏览(35)
  • 使用 阿里云 播放器播放 .flv 和 hls(.m3u8) 格式的视频流

    官方教程:https://help.aliyun.com/document_detail/125570.htm?spm=a2c4g.11186623.0.0.4a3b125de04RLI#task-1997027 在 vue 项目中的 index.html 文件中,引入视频资源 封装组件 base_video_Flv : 组件调用: web前端HTML播放HLS在线视频流(m3u8): https://blog.csdn.net/Evil_0_0_0/article/details/105768336

    2024年02月06日
    浏览(50)
  • uniapp 使用 mui-player 插件播放 m3u8/flv 视频流

    背景 :uniapp 开发的h5项目,需要播放m3u8/flv后缀的视频,网上有很多视频插件,但是样式和效果不尽如人意,博主最后选择mui-player插件,定制化稍微强一点以及有官方文档可以阅读,官网文档https://muiplayer.js.org/zh/guide/ tips :建议先阅读官方文档,再在页面进行引入 博主最后

    2023年04月19日
    浏览(50)
  • video.js 播放m3u8、flv、rtmp、RTS格式视频

     第一种方案(只适用m3u8格式): 属性 说明    options: {                     autoplay: true, // 设置自动播放                     muted: true, // 设置了它为true,才可实现自动播放,同时视频也被静音 (Chrome66及以上版本,禁止音视频的自动播放)                     prelo

    2024年02月12日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包