前端使用rtsp视频流接入海康威视摄像头的具体步骤

 更新时间:2025年09月16日 09:12:34   作者:啃火龙果的兔子  
这篇文章主要介绍了前端使用rtsp视频流接入海康威视摄像头的具体步骤,前端调用海康威视摄像头的过程中,主要涉及到摄像头的连接、视频流的获取以及前端页面的展示,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

在纯前端(Vue 2)中直接通过 RTSP 协议接入海康威视摄像头是不可行的,因为:

  1. 浏览器限制:现代浏览器(Chrome、Firefox等)不支持直接播放 RTSP 流(基于 TCP/UDP 的协议)。
  2. 安全策略:浏览器通常禁止直接访问本地网络设备(如摄像头)。

可行的前端解决方案

需要借助中转服务将 RTSP 转成浏览器支持的格式(如 HLS、WebRTC 或 FLV)。以下是具体实现方案:

方案 1:RTSP → WebSocket + flv.js(推荐)

使用 FFmpegNode.js 中转服务 将 RTSP 转成 FLV,前端用 flv.js 播放。

步骤

1. 后端中转服务(Node.js + FFmpeg)

安装 node-rtsp-stream 或自行搭建转流服务:

npm install node-rtsp-stream

示例代码(Node.js 服务端)

const NodeRTSPStream = require('node-rtsp-stream');
const stream = new NodeRTSPStream({
  name: '海康摄像头',
  streamUrl: 'rtsp://admin:password@192.168.1.64:554/Streaming/Channels/101', // 海康 RTSP 地址
  wsPort: 9999, // WebSocket 端口
  ffmpegOptions: { // FFmpeg 转码选项
    '-stats': '',
    '-r': 30,
    '-f': 'flv',
  },
});

注意streamUrl 格式通常为:
rtsp://[用户名]:[密码]@[IP地址]:[端口]/Streaming/Channels/[通道号]
海康默认端口 554,通道号 101 通常代表主码流。

2. 前端 Vue 2 使用flv.js播放

安装 flv.js

npm install flv.js

Vue 组件示例

<template>
  <div>
    <video ref="videoPlayer" controls autoplay muted width="800"></video>
  </div>
</template>

<script>
import flvjs from 'flv.js';

export default {
  mounted() {
    this.initVideo();
  },
  methods: {
    initVideo() {
      if (flvjs.isSupported()) {
        const videoElement = this.$refs.videoPlayer;
        const flvPlayer = flvjs.createPlayer({
          type: 'flv',
          url: 'ws://localhost:9999', // 对应 Node.js 服务的 WebSocket
        });
        flvPlayer.attachMediaElement(videoElement);
        flvPlayer.load();
        flvPlayer.play();
      }
    },
  },
  beforeDestroy() {
    if (this.flvPlayer) {
      this.flvPlayer.destroy();
    }
  },
};
</script>

方案 2:RTSP → HLS(HTTP Live Streaming)

使用 FFmpeg 将 RTSP 转成 HLS(.m3u8 + .ts),前端用 hls.js 播放。

步骤

1. FFmpeg 转码

ffmpeg -i "rtsp://admin:password@192.168.1.64:554/Streaming/Channels/101" \
  -c:v libx264 -c:a aac -f hls \
  -hls_time 2 -hls_list_size 3 -hls_flags delete_segments \
  ./stream/stream.m3u8

2. 前端 Vue 使用hls.js

<template>
  <video ref="videoPlayer" controls></video>
</template>

<script>
import Hls from 'hls.js';

export default {
  mounted() {
    const video = this.$refs.videoPlayer;
    const hls = new Hls();
    hls.loadSource('http://your-server/stream.m3u8');
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED, () => {
      video.play();
    });
  },
};
</script>

方案 3:WebRTC 实时流(更复杂,需后端支持)

使用 WebRTC(如 Janus GatewayMediasoup)实现低延迟播放,但需要额外搭建信令服务器。

海康 RTSP 地址格式

海康威视摄像头的 RTSP URL 通常为:

rtsp://[用户名]:[密码]@[IP地址]:[端口]/Streaming/Channels/[通道号]
  • 主码流/Streaming/Channels/101
  • 子码流/Streaming/Channels/102(低分辨率)
  • 默认用户名/密码admin + 设备背面密码

总结

方案技术延迟适用场景
RTSP → WebSocket + flv.jsNode.js + FFmpeg2-5s局域网/内网
RTSP → HLSFFmpeg + hls.js10-30s录播/高兼容
WebRTCJanus/Mediasoup<1s超低延迟

推荐

  • 内网/低延迟flv.js
  • 公网/高兼容HLS

如果有后端支持,可进一步优化(如鉴权、CDN 分发)。

到此这篇关于前端使用rtsp视频流接入海康威视摄像头的文章就介绍到这了,更多相关前端接入海康威视摄像头内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用vue对比两组数据差异的可视化组件详解

    利用vue对比两组数据差异的可视化组件详解

    这篇文章主要给大家介绍了关于利用vue对比两组数据差异的可视化组件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友可以参考下
    2021-09-09
  • vite打包去除console.log和debugge的方法实践

    vite打包去除console.log和debugge的方法实践

    本文主要介绍了vite打包去除console.log和debugge的方法实践,vite 已经将这个功能内置了,所以我们只需要修改配置文件,下面就来介绍一下如何修改
    2023-12-12
  • Vue利用Mixin轻松实现代码复用

    Vue利用Mixin轻松实现代码复用

    Mixin,中文翻译为"混入",在Vue中是一种非常有用的功能,可以解决许多开发中的常见问题,下面就让我们一起深入了解一下Mixin在Vue中解决了哪些问题吧
    2023-06-06
  • Vue项目如何在js文件里获取路由参数及路由跳转

    Vue项目如何在js文件里获取路由参数及路由跳转

    日常业务中路由跳转的同时传递参数是比较常见的,下面这篇文章主要给大家介绍了关于Vue项目如何在js文件里获取路由参数及路由跳转的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • 在Vue3项目中集成CodeMirror创建SQL编辑器的方法详解

    在Vue3项目中集成CodeMirror创建SQL编辑器的方法详解

    在这篇文章中,我们将学习如何在 Vue 3 项目中集成 CodeMirror,以创建一个支持 SQL 语法高亮和自动补全的代码编辑器,需要的朋友可以参考下
    2025-04-04
  • 基于Vue+element-ui 的Table二次封装的实现

    基于Vue+element-ui 的Table二次封装的实现

    这篇文章主要介绍了基于Vue+element-ui 的Table二次封装的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Vue防止白屏添加首屏动画的实例

    Vue防止白屏添加首屏动画的实例

    今天小编就为大家分享一篇Vue防止白屏添加首屏动画的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • vue中路由传参6种方式总结

    vue中路由传参6种方式总结

    这篇文章主要为大家详细介绍了vue中路由传参6种方式,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-08-08
  • Vue.js中v-show和v-if指令的用法介绍

    Vue.js中v-show和v-if指令的用法介绍

    这篇文章介绍了Vue.js中v-show和v-if指令的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 使用命令行工具npm新创建一个vue项目的方法

    使用命令行工具npm新创建一个vue项目的方法

    Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用。下面小编给大家分享使用命令行工具npm新创建一个vue项目的方法,需要的朋友参考下吧
    2017-12-12

最新评论