当前位置:   article > 正文

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

webrtc-streamer.exe

了解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

  1. 海康摄像头rtsp格式:
  2. rtsp://<账号>:<密码>@<IP>:<端口,默认554>/<视频编码,h264/h265>/<通道>/<码流,main主 sub子>/av_stream
  3. 例: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中使用

  1. <script setup lang="ts">
  2. import {ref, onMounted, defineComponent, onUnmounted,nextTick} from "vue";
  3. import {RouterView, useRouter} from "vue-router";
  4. import ScaleScreen from "@/components/scale-screen";
  5. import Headers from "@/views/header.vue";
  6. import Setting from "@/views/setting.vue";
  7. import {useSettingStore} from "@/stores/index";
  8. import {storeToRefs} from "pinia";
  9. import {BorderBox1, Decoration3} from '@kjgl77/datav-vue3';
  10. import {ArrowLeft} from "@element-plus/icons-vue";
  11. //返回按钮使用
  12. const router =useRouter();
  13. //自适应窗体
  14. const settingStore = useSettingStore();
  15. const {isScale} = storeToRefs(settingStore);
  16. const wrapperStyle = {};
  17. //webRtcServer
  18. //rtsp视频流的URL
  19. const RTSP_URL = "rtsp://admin:hmrghck01@10.0.151.254:554/h264/ch1/main/av_stream";
  20. //对应video的id
  21. let video = document.getElementById('video');
  22. //后端运行的webrtc-streamer.exe中的ip
  23. const webRtcServerIp = ref('127.0.0.1');
  24. const webRtcServer = ref(null);
  25. const initWebRtcServer = () => {
  26. nextTick(() => {
  27. video = document.getElementById('video');
  28. if (video) {
  29. //9001后端运行的webrtc-streamer.exe中的端口
  30. webRtcServer.value = new WebRtcStreamer('video', `${location.protocol}//${webRtcServerIp.value}:9001`);
  31. webRtcServer.value.connect(RTSP_URL);
  32. } else {
  33. console.error('视频元素未找到');
  34. }
  35. });
  36. };
  37. // Call initWebRtcServer when the component is mounted
  38. onMounted(() => {
  39. //启动
  40. initWebRtcServer();
  41. });
  42. // Destroy WebRTC server on component unmount
  43. onUnmounted(() => {
  44. if (webRtcServer.value) {
  45. //销毁
  46. webRtcServer.value.disconnect();
  47. webRtcServer.value = null;
  48. }
  49. });
  50. </script>
  51. <template>
  52. <video id="video" class="video-js" autoplay ></video>
  53. </template>
  54. <style lang="scss" scoped>
  55. #video{
  56. width: 95%;
  57. height: 95%;
  58. margin: 0 auto;
  59. position: absolute;
  60. top: 50%;
  61. left: 50%;
  62. transform: translate(-50%, -50%);
  63. // blur(5px):这是一个模糊滤镜,它使图像的边缘变得模糊。5px表示模糊的程度,你可以根据需要调整这个值。
  64. // opacity(50%):这是一个透明度滤镜,它使图像变得半透明。50%表示透明度的程度,你可以根据需要调整这个值。
  65. filter: blur(0.5px) opacity(80%);
  66. }
  67. </style>

 五、运行成功!!

参考:大佬文章

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号