vue3+vite+ts 使用webrtc-streamer播放海康rtsp监控视频

了解webrtc-streamer

webrtc-streamer 是一个使用简单机制通过 WebRTC 流式传输视频捕获设备和 RTSP 源的项目,它内置了一个小型的 HTTP server 来对 WebRTC需要的相关接口提供支持。相对于ffmpeg+flv.js的方案,延迟降低到了0.4秒左右,画面的加载速度也变快了,切换浏览器标签后也不会暂停画面,并且解决了http1.1的同域名中的并发限制(在谷歌浏览器中可以同时播放6个以上的video)。

探索WebRTC Streamer:实时通信的新境界-CSDN博客

一、下载webrtc-streamer

网址:Releases · mpromonet/webrtc-streamer (github.com)

二、下载完成解压并启动

启动方式:最好选2

1、双击webrtc-streamer.exe启动。

2、当前目录cmd,使用 webrtc-streamer.exe -o -H 0.0.0.0:9001 命令行开启,

      -o:是指无需转码,降低CPU

      -H:指定端口号

 

三、 测试webRtc插件是否有问题

打开浏览器,输入127.0.0.1:9001/webrtcstreamer.html?video=rtsp://admin:01@10.0.151.254:554/h264/ch1/main/av_stream

 127.0.0.0是webrtc-streamer的运行ip,video后面是rtsp流的网络URL

我用的是海康摄像头,rtsp流的网络URL是rtsp://admin:01@10.0.151.254:554/h264/ch1/main/av_stream

海康摄像头rtsp格式:

rtsp://<账号>:<密码>@<IP>:<端口,默认554>/<视频编码,h264/h265>/<通道>/<码流,main主 sub子>/av_stream
例:rtsp://admin:12345@1.0.151.254:554/h264/ch1/main/av_stream

 

 到这里说明webRtc插件没问题!

四、下面整合到项目中(vue3+vite+ts)~~~~

1、assets文件夹下放入两个js文件(在下载的插件中寻找)

两个js分别为webrtcstreamer.js和adater.min.js,分别在html文件夹中和html/lib文件夹中

js在插件中位置(如图):

 

将两个js放入项目的assets目录中 

 

2、index.html中引入webrtcstreamer.js

 <script type="text/javascript" src="/src/assets/webrtcstreamer.js"></script>

3、vue中使用

<script setup lang="ts">
import {ref, onMounted, defineComponent, onUnmounted,nextTick} from "vue";
import {RouterView, useRouter} from "vue-router";
import ScaleScreen from "@/components/scale-screen";
import Headers from "@/views/header.vue";
import Setting from "@/views/setting.vue";
import {useSettingStore} from "@/stores/index";
import {storeToRefs} from "pinia";
import {BorderBox1, Decoration3} from '@kjgl77/datav-vue3';
import {ArrowLeft} from "@element-plus/icons-vue";

//返回按钮使用
const router =useRouter();
//自适应窗体
const settingStore = useSettingStore();
 const {isScale} = storeToRefs(settingStore);
const wrapperStyle = {};


//webRtcServer
//rtsp视频流的URL
const RTSP_URL = "rtsp://admin:hmrghck01@10.0.151.254:554/h264/ch1/main/av_stream";
//对应video的id
let video = document.getElementById('video');
//后端运行的webrtc-streamer.exe中的ip
const webRtcServerIp = ref('127.0.0.1');
const webRtcServer = ref(null);

const initWebRtcServer = () => {
  nextTick(() => {
    video = document.getElementById('video');
    if (video) {
//9001后端运行的webrtc-streamer.exe中的端口
      webRtcServer.value = new WebRtcStreamer('video', `${location.protocol}//${webRtcServerIp.value}:9001`);
      webRtcServer.value.connect(RTSP_URL);
    } else {
      console.error('视频元素未找到');
    }
  });
};
// Call initWebRtcServer when the component is mounted
onMounted(() => {
//启动
  initWebRtcServer();
});

// Destroy WebRTC server on component unmount
onUnmounted(() => {
  if (webRtcServer.value) {
//销毁
    webRtcServer.value.disconnect();
    webRtcServer.value = null;
  }
});

</script>

<template>
 <video id="video" class="video-js"  autoplay  ></video>
</template>
<style lang="scss" scoped>
#video{
  width: 95%;
  height: 95%;
  margin: 0 auto;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  //   blur(5px):这是一个模糊滤镜,它使图像的边缘变得模糊。5px表示模糊的程度,你可以根据需要调整这个值。
  // opacity(50%):这是一个透明度滤镜,它使图像变得半透明。50%表示透明度的程度,你可以根据需要调整这个值。
  filter: blur(0.5px) opacity(80%);
}

</style>

 五、运行成功!!

参考:大佬文章

webRtc播放rtsp视频流(vue2、vue3+vite+ts)_webrtc播放rtsp流-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据预处理 #数据挖掘 #python

数据分析中的预处理步骤是数据分析流程中的重要环节&#xff0c;它的目的是清洗、转换和整理原始数据&#xff0c;以便后续的分析能够准确、有效。预处理通常包括以下几个关键步骤&#xff1a; 数据收集&#xff1a;确定数据来源&#xff0c;可能是数据库、文件、API或网络抓取…

linux中: IDEA 由于JVM 设置内存过小,导致打开项目闪退问题

1. 找到idea安装目录 由于无法打开idea&#xff0c;只能找到idea安装目录 在linux(debian/ubuntu)中idea的插件默认安装位置和配置文件在哪里? 默认路径&#xff1a; /home/当前用户名/.config/JetBrains/IntelliJIdea2020.具体版本号/options2. 找到jvm配置文件 IDEA安装…

GIGE 协议摘录 —— 照相机的标准特征列表(五)

系列文章目录 GIGE 学习笔记 GIGE 协议摘录 —— 设备发现&#xff08;一&#xff09; GIGE 协议摘录 —— GVCP 协议&#xff08;二&#xff09; GIGE 协议摘录 —— GVSP 协议&#xff08;三&#xff09; GIGE 协议摘录 —— 引导寄存器&#xff08;四&#xff09; GIGE 协议…

踩坑!被node-sass折磨的一天

文章目录 被node-sass折磨的一天折磨过程了解原因注意事项 被node-sass折磨的一天 折磨过程 起因是要开发一个老项目&#xff0c;照常拉代码、下依赖、启动三步走 依赖开始下载不对了&#xff0c;以为是node版本问题&#xff0c;寻找node-sass对应的node版本 利用nvm&#…

Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包

Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包 一、Gerber文件层叠与参数设置二、装配图文件设置导出三、光绘参数设置四、Gerber孔符图、钻孔表及钻孔文件输出五、输出Gerber文件六、输出IPC网表七、导出坐标文件八、文件打包 一、Gerber文件层叠与参数设置…

安卓动画特效(帧动画、补间动画、属性动画、遮罩动画及滚动器)

本章介绍App开发中常见的动画特效技术&#xff0c;主要包括&#xff1a;如何使用帧动画实现电影播放效果&#xff0c;如何使用补间动画实现视图的4种基本状态变化&#xff0c;如何使用属性动画实现视图各种状态的动态变换效果&#xff0c;以及如何借助绘图层次与滚动器实现动画…

uniapp中u-input点击事件失效

当给u-input设置了disabled/readonly属性后&#xff0c;pc浏览器中点击事件失效&#xff0c;但是app/移动端h5中却仍有效 解决办法 给外边包上一个盒子设置点击事件&#xff0c;给input加上css属性&#xff1a;pointer-events&#xff1a;none pointer-events CSS 属性指定在什…

Web端在线Stomp服务测试与WebSocket服务测试

Stomp服务测试 支持连接、发送、订阅、接收&#xff0c;可设置请求头、自动重连 低配置云服务器&#xff0c;首次加载速度较慢&#xff0c;请耐心等候 预览页面&#xff1a;http://www.daelui.com/#/tigerlair/saas/preview/lxbho9lkzvgc 演练页面&#xff1a;http://www.da…

【外汇天眼】交易智慧:遵循趋势,稳中求胜

在交易中&#xff0c;新手往往因对未来走势的不确定性感到恐惧&#xff0c;从而不断要求对市场进行全面分析。这种需求反映了他们在投机心理幼稚期缺乏安全感的表现。有些勤奋的交易者甚至在做单前、持仓时和寻找出局理由时都在不断分析行情。然而&#xff0c;这种过度分析真的…

Android本地Gradle Plugin的创建以及使用

有些Gradle插件&#xff0c;不想放到云端&#xff0c;本来也只是小功能而已&#xff0c;还放到云端&#xff0c;每次修改和发布都很麻烦&#xff0c;这种需求的插件放到本地还是合适的。 1.直接放到build.gradle 2.新建一个module 取名叫buildSrc(注意&#xff0c;一定要叫这个…

【StableDiffusion】Lora 底层原理,低秩适配,Lora 如何与 checkpoint 联合发挥作用

鸣谢UP主&#xff1a;是花子呀 本篇博客参考视频&#xff1a;https://www.bilibili.com/video/BV17i421X7q7/?spm_id_from333.880.my_history.page.click&vd_source38d6ea3466db371e6c07c24eed03219b Lora 是个啥&#xff1f;Lora 的 缩写 Lora&#xff1a;Low Rank Ada…

数据库课设-中小企业工资管理系统

一、效果展示 二、后端代码 import string import random from flask import Flask, render_template, request, jsonify, redirect, session import pymysql from flask_cors import CORS import time import schedule from datetime import datetime import threading from …

国内服务器安装 Docker 服务和拉取 dockerhub 镜像

前提: 有一台海外的VPS,目的是安装dockerhub镜像.适用debian系统 1: 安装 docker-ce (国内服务器) sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/…

bfs+枚举,CF666B - World Tour

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 666B - Codeforces 二、解题报告 1、思路分析 数据量允许跑N次bfs预处理所有点的最短路&#xff0c;以及预处理到达每个点距离最远的3个点&#xff0c;以及每个点能够到达的最远的3个点 我们枚举…

第 6 章: Spring 中的 JDBC

JDBC 的全称是 Java Database Connectivity&#xff0c;是一套面向关系型数据库的规范。虽然数据库各有不同&#xff0c;但这些数据库都提供了基于 JDBC 规范实现的 JDBC 驱动。开发者只需要面向 JDBC 接口编程&#xff0c;就能在很大程度上规避数据库差异带来的问题。Java 应用…

康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(一)

功能模型接口FMI&#xff08;Functional Mock-up Interface&#xff09;是一个开放且与工具解耦的标准。FMI包含了一个C-API&#xff08;接口&#xff09;&#xff0c;一个用于描述接口的XML文件以及可交换的功能模型单元FMU&#xff08;Functional Mock-up Unit&#xff09;&a…

解读surging 的内存过高的原因

前言 对于.NET开发人员来讲&#xff0c;一个程序占用内存过高&#xff0c;是极其糟糕&#xff0c;是一款不合格的程序软件&#xff0c;.NET开发人员也不会去使用服务器垃圾收集器(ServerGarbageCollection),而是选用工作站垃圾收集器&#xff0c;而是对于一款低内存的程序更能给…

CP AUTOSAR标准中文文档链接索引

AUTOSAR标准的核心组件包括通信、诊断、安全等&#xff0c;这些组件通过模块化结构进行组织。系统被划分为多个模块&#xff0c;每个模块负责特定的功能。模块之间通过接口进行通信&#xff0c;接口定义了模块之间的交互规则。AUTOSAR标准支持模块的配置&#xff0c;可以根据不…

debug调试_以Pycharm为例

文章目录 作用步骤打断点调试调试窗口 作用 主要是检查逻辑错误&#xff0c;而非语法错误。 步骤 打断点 在需要调试的代码行前打断点&#xff0c;执行后会停顿在断点位置&#xff08;不运行&#xff09; 调试 右键“debug”&#xff0c;或者直接点击右上角的小虫子 调试…

8.11 矢量图层线要素单一符号使用七(爆炸线)

文章目录 前言爆炸线&#xff08;Lineburst&#xff09;QGis设置线符号为爆炸线&#xff08;Lineburst&#xff09;二次开发代码实现爆炸线&#xff08;Lineburst&#xff09; 总结 前言 本章介绍矢量图层线要素单一符号中爆炸线&#xff08;Lineburst&#xff09;的使用说明&…