vue+flv.js+SpringBoot+websocket实现视频监控与回放

本文介绍如何利用vue、flv.js、SpringBoot和websocket实现视频监控与回放功能。通过设备注册、socket连接、后端推流接口,实现实时监控和回放。在前端,遇到ie浏览器flv.js引用问题,通过修改webpack配置解决。后端使用SDK实现设备服务和推流。在播放时注意hasAudio参数设置,否则可能导致播放错误。这种方式虽支持多种浏览器但对服务器压力较大,可能导致卡顿。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue+flv.js+SpringBoot+websocket实现视频监控与回放

需求:vue+springboot的项目,需要在页面展示出海康的硬盘录像机连接的摄像头的实时监控画面以及回放功能.

  1. 之前项目里是纯前端实现视频监控和回放功能.但是有局限性.就是ip地址必须固定.新的需求里设备ip不固定.所以必须换一种思路.
  2. 通过设备的主动注册,让设备去主动连接服务器后端通过socket推流给前端实现实时监控和回放功能;

思路:

1:初始化设备.后端项目启动时就调用初始化方法.
2:开启socket连接.前端页面加载时尝试连接socket.
3:点击播放,调用后端推流接口.并且前端使用flv.js实现播放.

准备工作:

1:vue项目引入flv.js。
npm install --save flv.js
main.js里面引入
import flvjs from ‘flv.js’;
Vue.use(flvjs)
但是这里我遇见一个坑.开发模式没有问题.但是打包之后发现ie浏览器报语法错误.不支持此引用.所以修改引用地址.
在webpack.base.conf.js的module.exports下添加

  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      'flvjs':'flv.js/dist/flv.js'
    }
  },

plugins下添加

  plugins: [
    new webpack.ProvidePlugin({
      flvjs:'flvjs',
      $: "jquery",
      jQuery: "jquery",
      "window.jQuery": "jquery"
    })
  ],

最后页面引入时:

import flvjs from "flv.js/dist/flv.js";

2.准备一个硬盘录像机,并添加一个摄像头设备以做测试使用.
硬盘录像机设置为主动注册模式.并配置好ip和端口以及子设备ID
在这里插入图片描述
在设置里的网络设置里面
在这里插入图片描述

3.后端搭建好websocket工具类
包含通用的OnOpen,onClose,onError等方法.

实现:
1.项目启动开启设备服务.这个SDKLIB里面都有就不介绍了.
2.页面加载尝试开启socket连接.

//尝试连接websocket
    startSocket(channelnum, device_value) {
      try {
        let videoWin = document.getElementById(this.currentSelect);
        if (flvjs.isSupported()) {
          let websocketName =
            "/device/monitor/videoConnection/" + channelnum + device_value;
          console.log("进入连接websocket", this.ipurl + websocketName);
          const flvPlayer = flvjs.createPlayer(
            {
              type: "flv",
              //是否是实时流
              isLive: true,
              //是否有音频
              hasAudio: false,
              url: this.ipurl + websocketName,
              enableStashBuffer: true,
            },
            {
              enableStashBuffer: false,
              stashInitialSize: 128,
            }
          );
          flvPlayer.on("error", (err) => {
            console.log("err", err);
          });
          flvjs.getFeatureList();
          flvPlayer.attachMediaElement(videoWin);
          flvPlayer.load();
          flvPlayer.play();
          return true;
        }
      } catch (error) {
        console.log("连接websocket异常", error);
        return false;
    
### 如何在电脑上播放FLV格式视频文件 #### 使用专用软件播放FLV文件 对于希望直接在本地计算机上观看FLV文件的情况,可以考虑下载并安装专门用于处理这类媒体类型的程序。例如,VLC Media Player是一款开源多媒体播放器,它能够很好地支持多种编码标准和技术规格,包括FLV在内的众多流行音视频容器格式均在其兼容列表之内[^1]。 如果遇到使用Flash Player尝试打开FLV文件却只显示出空白页面的问题,则可能是因为Adobe已经停止更新和支持Flash Player服务,建议寻找替代方案来查看这些内容。此时转向其他更为现代且安全的选择将是明智之举。 #### 利用浏览器插件在线播放FLV文件 当涉及到网络环境下的实时传输或存储于云端服务器上的FLV资源时,可以通过特定JavaScript库如`flv.js`实现无需额外客户端配置即可流畅回放的效果。此方法特别适合开发者构建自定义HTML5播放界面的需求[^2]。 为了简化集成过程以及提高用户体验的一致性和稳定性,在Vue框架项目里还可以借助Video.js这样的第三方组件库完成更加优雅美观的嵌入式解决方案开发工作。只需按照官方文档指导完成必要的依赖项声明初始化设置操作就能快速投入使用了[^4]。 ```javascript // main.js 中的部分代码片段展示如何注册全局可用的 Video.js 实例对象 import videojs from 'video.js'; import 'video.js/dist/video-js.css'; Vue.prototype.$video = videojs; ``` 另外值得注意的是,随着WebRTC技术的发展及其广泛应用场景不断扩展,现在越来越多的服务提供商倾向于采用这种方式来进行低延迟直播推拉流业务部署。尽管如此,针对某些特殊需求而言,仍然存在利用WebSocket协议配合FLV.js做进一步优化的可能性[^3]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值