vue播放rtsp视频流

工作有要播放视频监控的需求,最近就自己先了解了一下网页播放rtsp视频流的方法,以下是我的个人经验。
最终选择了vue+webrtc-streamer实现在网页播放rtsp流这种方法进行测试。

个人经验

第一次尝试了vue-video-player+videojs的方法,发现只适用于支持flash的浏览器,但目前所有浏览器的最新版都已不支持flash插件,于是放弃。

注意vue-video-player有个坑,在引入css文件的时候一直报错,原因是直接npm install vue-video-player出了问题。

经过各种百度半天,发现我使用的是vue2,不知道为什么没人说,vue2版本如果想要使用vue-video-player的话必须下载4.x版本。vue3的下载已经更改了插件名,是@videojs-player/vue。

下载4.0.1版本发现css文件可以正常引入,但是浏览器不支持flash所以没有播放成功。

在这里插入图片描述

第二次尝试ffmpeg,发现太复杂了,琢磨了半天无果。

第三次尝试webrtc-streamer,终于成功,并且相对于前两种方法都更简单!

vue+webrtc-streamer实现在网页播放rtsp视频流

  1. 首先下载webtrc-streamer的压缩包,在github上有

    https://github.com/mpromonet/webrtc-streamer/releases

    下载windows版本

在这里插入图片描述

  1. 双击webrtc-streamer.exe启动服务

在这里插入图片描述

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

  2. 写测试代码

    <template>
      <div class="home">
        <video id="video" autoplay width="600" height="400"></video>
        <video id="video1" autoplay width="600" height="400"></video>
      </div>
    </template>
    //不放心我又引入了一遍
       <script type="text/javascript" src="../../public/stactic/webrtcstreamer.js"></script>
       <script type="text/javascript" src="../../public/stactic/adapter.min.js"></script>
    <script>
    export default {
      name: "HomeView",
      data() {
        return {
          webRtcServer: null,
          webRtcServer1: null
        };
      },
      mounted() {
        //192.168.1.100是启动webrtc-streamer的服务器IP,8000是webrtc-streamer的默认端口号,可以在服务端启动的时候更改的
        this.webRtcServer = new WebRtcStreamer(
          "video",
          location.protocol + "//127.0.0.1:8000"
        );
        //需要看的rtsp视频地址,可以在网上找在线的rtsp视频地址来进行demo实验,在vlc中能播放就能用
        // this.webRtcServer.connect(
        //   "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4"
        // );
        this.webRtcServer.connect(
          "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4"
        );
          //第二个视频
          //根据不同的video标签来控制
        this.webRtcServer1 = new WebRtcStreamer(
          "video1",
          location.protocol + "//127.0.0.1:8000"
        );
        this.webRtcServer1.connect(
          "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4"
        );
      },
      methods: {},
      beforeDestroy() {
        this.webRtcServer.disconnect();
        this.webRtcServer = null;
      }
    };
    </script>
    

此时运行网页已经可以看到视频了。

在这里插入图片描述

但是有缺点(还未解决):

  • 播放的视频没有声音

  • 测试了海康威视的摄像头,可以正常播放,但是遇到问题:火狐浏览器联网状态下可播放,内网状态下播放不出来,控制台报错WebRTC: ICE failed, add a TURN server and see about:webrtc for more details,诡异的是其他浏览器都不会出现这种情况,研究了一会也没搞懂怎么自己搭一个turn服务。。。(已解决)

解决方式:测试的时候都是直接复制的localhost:8080这种到浏览器访问,在火狐论坛里看到别人说不能用localhost或者127.0.0.1去访问不然播不出来视频,于是把localhost改成了本机ip,如192.168.x.xx这种,就能看到视频已经成功播出,虽然不知道啥原理但是解决了问题,折磨我两天…

如果有大佬知道如何解决,欢迎留言!
以上内容参考http://t.csdn.cn/gj93S

-----------------------------------------分割线-------------------------------------------

后续:
因为目标设备有win7 32位的系统,这个插件不支持所以最后还是换成了vue使用flv.js的方式播放监控,网上随便找了个开源的后端转流将rtsp转成flv格式推给前端播放。
评论区也有小伙伴推荐使用mediamtx去播放,我试了一下也很好用,但是没有在实际项目中试过,大家也可以试试!

  • 10
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 48
    评论
Vue是一种用于构建用户界面的JavaScript框架,而海康摄像头是一种监控设备,用于视频监控系统。在Vue中对接海康摄像头源码可以实现在Web应用程序中实时显示和控制海康摄像头的视频流。 首先,需要下载并安装海康摄像头的相关SDK,并了解SDK的使用方法以及提供的接口。然后,在Vue项目中引入SDK的相关依赖,可以使用npm或者直接将SDK文件导入项目中。 接下来,在Vue组件中创建一个视频播放器的容器元素,用于展示摄像头的视频流。在组件的生命周期钩子函数中,使用SDK的接口初始化视频播放器,并传入摄像头的地址或者ID,接收视频流并在容器中进行播放。可以根据需要设置播放器的参数,例如视频的清晰度、是否支持录像等。 此外,可以在Vue组件中实现控制摄像头的功能。通过SDK提供的接口,可以实现对摄像头的云台控制、焦距调节、镜头旋转等操作。可以通过为组件绑定事件监听器,监听用户的操作并调用相应的SDK接口来实现这些功能。 对于需要实时监控多个海康摄像头的情况,可以在Vue中动态生成多个视频播放器容器,并根据需要对每个摄像头分别进行初始化和控制。 总之,通过在Vue项目中对接海康摄像头的源码,可以实现在Web应用程序中展示摄像头的实时视频流,并实现对摄像头的控制功能,为用户提供更便捷的视频监控体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值