当前位置: 首页 > news >正文

VUE3 播放RTSP实时、回放(NVR录像机)视频流(使用WebRTC)

1、下载webrtc-streamer,下载的最新window版本

Releases · mpromonet/webrtc-streamer · GitHub

 2、解压下载包

 3、webrtc-streamer.exe启动服务

(注意:这里可以通过当前文件夹下用cmd命令webrtc-streamer.exe -o这样占用cpu会很少,直接双击exe文件会占用cpu)

cmd  webrtc-streamer.exe -o 启动如下图所示,此时在浏览器访问127.0.0.1:8000可以看到本机监控画面

 4、将下载包html文件夹下webrtcstreamer.js文件和html/libs文件夹下adapter.min.js文件复制到vue项目public目录下。在index.html文件里引入这两个js文件

5、修改视频编码:(H.264)

6、编写实时播放测试页面 

<template>

  <video id="video" controls autoplay muted width="800" height="600"></video>

</template>

<script setup>

const webRtcServer = ref();

// webrtc服务器地址

const IP = "http://127.0.0.1:8000";

onMounted(() => {

  initVideo();

});


 

onBeforeUnmount(() => {

  destroyVideo();

});

// 页面激活

onActivated(() => {

  // 缓存页面 打开页面 实现播放

  const video = document.getElementById("video");

  video.paused && video.play();

});

// 页面停用

onDeactivated(() => {

  // 缓存页面 离开页面 实现暂停

  const video = document.getElementById("video");

  video.play && video.pause();

});


 

// 创建视频实例

const initVideo = () => {

  webRtcServer.value = new WebRtcStreamer("video", IP);

  //需要查看的rtsp地址,根据自己的摄像头传入对应的rtsp地址即可。

  //注意:视频编码格式必须是H264的,否则无法正常显示,编码格式可在摄像头的后台更改

  webRtcServer.value.connect(

    "rtsp://admin:123456@192.168.1.64:554/Streaming/Channels/101"

  );

};

// 销毁视频实例

const destroyVideo = () => {

  webRtcServer.value &&

    (webRtcServer.value.disconnect(), (webRtcServer.value = null));

};

</script>

<style scoped lang="scss">

</style>


 

7、录像机NVR回放视频流地址编写

rtsp://用户名:密码@IP:554/Streaming/tracks/通道及码流starttime=年月日t时分秒z&endtime=年月日t时分秒z 

例如 回放开始时间为2024-03-12 10:30:00结束时间为2024-03-12 11:40:30且通道号为1的主码流视频

// 其它步骤同上

const url="rtsp://admin:123456@192.168.1.65:554/Streaming/tracks/101?starttime=20240312t103000z&endtime=20240312t114030z"

 webRtcServer.value.connect(url);

注意:可以没有结束时间,如果没有去掉 “ &endtime=20240311t174030z ”这一块;

注意:视频编码格式必须是H264的

http://www.lryc.cn/news/400080.html

相关文章:

  • [PaddlePaddle飞桨] PaddleOCR-光学字符识别-小模型部署
  • Python应用开发——30天学习Streamlit Python包进行APP的构建(15):优化性能并为应用程序添加状态
  • python实现openssl的EVP_BytesToKey及AES_256_CBC加解密算法
  • 基于SpringBoot+VueJS+微信小程序技术的图书森林共享小程序设计与实现
  • 【css】image 使用 transform:scale 放大后显示不全的问题
  • 损失函数简介
  • 2023睿抗CAIP-编程技能赛-本科组省赛(c++)
  • 现在国内的ddos攻击趋势怎么样?想了解现在ddos的情况该去哪看?
  • 微服务到底是个什么东东?
  • C++笔试强训5
  • 初学51单片机之UART串口通信
  • 数据结构——查找(线性表的查找与树表的查找)
  • MySQL入门学习-深入索引.组合索引
  • RABBITMQ的本地测试证书生成脚本
  • 记录些Redis题集(4)
  • JVM:垃圾回收器
  • Golang | Leetcode Golang题解之第228题汇总区间
  • 单目3D和bev综述
  • 每日Attention学习11——Lightweight Dilated Bottleneck
  • EM32DX-E4 IO 扩展模块
  • 【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序【图文讲解】
  • SpringBoot实战:多表联查
  • 解决mysql,Navicat for MySQL,IntelliJ IDEA之间中文乱码
  • 虚拟环境操作
  • 企业网三层架构
  • node.js的安装及学习(node/nvm/npm的区别)
  • 性能优化篇:用WebSocket替代传统的http轮循
  • virtualbox的ubuntu默认ipv4地址为10.0.2.15的修改以及xshell和xftp的连接
  • Codeforces Round 957 (Div. 3)(A~D题)
  • fedora 40 安装拼音输入法