• vue中web端播放rtsp视频流(摄像头监控视频)(海康威视录像机)


    一、ffmpeg安装​​​​​​  

    ffmpeg下载 https://ffmpeg.org/download.html找ffmpeg-release-essentials.zip点击下载,下载完解压ffmpeg.exe 程序运行

    二、配置ffmpeg环境变量

    添加成功后验证是否生效任意地方打开cmd窗口输入 ffmpeg 打印如下表示成功

     

    三、node搭建websocket服务

    新建一个app.js文件,同级目录下npm安装 node-rtsp-stream

    我是直接写在项目里了,你们可以单独写在外面

    npm install node-rtsp-stream -S
    

    app.js内容

    1. const stream = require('node-rtsp-stream')
    2. const urls = [
    3. 'rtsp://admin:123456@192.168.2.100:554/Streaming/Channels/101',
    4. 'rtsp://admin:123456@192.168.2.100:554/Streaming/Channels/201',
    5. 'rtsp://admin:123456@192.168.2.100:554/Streaming/Channels/301'
    6. ]; // 将此处替换为实际的RTSP流地址
    7. let wsPort = 9999; // 初始端口号
    8. urls.forEach((url) => {
    9. new stream({
    10. name: `video-stream-${urls.indexOf(url) + 1}`,
    11. streamUrl: url,
    12. wsPort: wsPort,
    13. ffmpegOptions: {
    14. '-stats': '',
    15. '-r': 30,
    16. '-s': '1920*1080'
    17. }
    18. });
    19. wsPort++; // 每次递增端口号
    20. });

    运行

    node app.js

    这样就是成功了

    四、vue播放视频

    vue组件

    jsmpeg.min.js下载地址

    链接:https://pan.baidu.com/s/1_KgKM-sOzfrAVs_8LgCG1w?pwd=z7z5 
    提取码:z7z5

    1. <script>
    2. import '../../public/jsmpeg.min.js'
    3. export default {
    4. data() {
    5. return {
    6. players: []
    7. };
    8. },
    9. methods: {
    10. },
    11. mounted() {
    12. //开始播放
    13. const container = document.getElementById('video-container');
    14. for (let i = 0; i < 3; i++) {
    15. const canvas = document.createElement('canvas');
    16. canvas.id = `video-${i + 1}`;
    17. canvas.style.width = '210px'; // 设置宽度为200px
    18. canvas.style.height = '210px'; // 设置高度为200px
    19. canvas.style.margin = '3px'; // 设置高度为200px
    20. container.appendChild(canvas);
    21. const url = `ws://127.0.0.1:${9999 + i}/video-stream-${i + 1}`;
    22. // const url = `ws://127.0.0.1:9999/video-stream-${i + 1}`;
    23. this.players.push(new JSMpeg.Player(url, { canvas }));
    24. this.players[i].play();
    25. }
    26. },
    27. watch: {},
    28. filters: {},
    29. beforeDestroy() {
    30. this.players.forEach(player => player.stop());
    31. }
    32. }
    33. script>
    34. <style scoped>
    35. .view {
    36. background-color: rgb(43, 168, 188);
    37. box-sizing: border-box;
    38. }
    39. #video-container{
    40. height: 450px;
    41. }
    42. style>

    jsmpeg.min.js建议在index.html引入,我只是不放心又引入了一遍,正常在index.html也要引入

  • 相关阅读:
    sql聚合函数嵌套问题 aggregate function cannot contain aggregate parameters
    力扣(LeetCode)25. K 个一组翻转链表(C++)
    手撕设计模式-单例模式详细总结和常见代码踩坑
    SwiftUI 高级教程之可组合的通用 SwiftUI 视图
    Flask之路由(app.route)详解
    UI库DHTMLX Suite v8.2发布全新表单组件,让Web表单实现高度可定制!
    MySQL高级SQL语句(上)
    前端基础之CSS
    大模型Prompt-Tuning技术入门
    2023秋招—大数据开发面经—杰创智能科技
  • 原文地址:https://blog.csdn.net/Korey__/article/details/138159928