岄. 2024-04-24 13:45 采纳率: 91.7%
浏览 1
已结题

然后摄像头显示了,如果我有多个rtsp流,且rtsp流可能从后台获取怎么办,有没有具体代码(标签-前端|关键词-app)

实现rtsp流显示在前端页面上
我先是写了一个app.js

const stream = require('node-rtsp-stream')
new stream(
    {
        name: 'video-stream',
        streamUrl: ['rtsp://admin:jsrh123456@192.168.2.100:554/Streaming/Channels/101','rtsp://admin:jsrh123456@192.168.2.100:554/Streaming/Channels/201'],//rtsp地址
        wsPort: 9999,//端口号
        ffmpegOptions: {
            '-stats': '',
            '-r': 30,//视频帧数
            '-s': '1920*1080' //视频分辨率
        }
    }
)

然后node app.js运行
vue页面

<canvas id="video"></canvas>


 mounted() {
        //开始播放
        var canvas = document.getElementById("video");
        var url = "ws://127.0.0.1:9999";//node服务ip+端口号,本机node服务默认127.0.0.1
        var player = new JSMpeg.Player(url, { canvas });
        player.play();
    },

然后摄像头显示了,但我只会显示一个,如果我有多个rtsp流,一次性页面要显示四个,且rtsp流可能从后台获取怎么办,有没有具体代码

  • 写回答

5条回答 默认 最新

  • 岄. 2024-04-24 15:11
    关注

    app.js

    const stream = require('node-rtsp-stream')
    const urls = [
        'rtsp://admin:jsrh123456@192.168.2.100:554/Streaming/Channels/101',
        'rtsp://admin:jsrh123456@192.168.2.100:554/Streaming/Channels/201',
        'rtsp://admin:jsrh123456@192.168.2.100:554/Streaming/Channels/301'
    ]; // 将此处替换为实际的RTSP流地址
    let wsPort = 9999; // 初始端口号
    urls.forEach((url) => {
        new stream({
            name: `video-stream-${urls.indexOf(url) + 1}`,
            streamUrl: url,
            wsPort: wsPort,
            ffmpegOptions: {
                '-stats': '',
                '-r': 30,
                '-s': '1920*1080'
            }
        });
        wsPort++; // 每次递增端口号
    });
    
    
    

    vue组件

    
    <template>
        <div class="view">
            <p>录像画面</p>
            <div id="video-container">
            </div>
        </div>
    </template>
    
    <script>
    import '../../public/jsmpeg.min.js'
    export default {
    
        data() {
            return {
                players: []
            };
        },
        methods: {
        },
        mounted() {
            //开始播放
            const container = document.getElementById('video-container');
            for (let i = 0; i < 3; i++) {
                const canvas = document.createElement('canvas');
                canvas.id = `video-${i + 1}`;
                canvas.style.width = '210px'; // 设置宽度为200px
                canvas.style.height = '210px'; // 设置高度为200px
                canvas.style.margin = '3px'; // 设置高度为200px
                container.appendChild(canvas);
                const url = `ws://127.0.0.1:${9999 + i}/video-stream-${i + 1}`;
                // const url = `ws://127.0.0.1:9999/video-stream-${i + 1}`;
                this.players.push(new JSMpeg.Player(url, { canvas }));
                this.players[i].play();
            }
    
        },
        watch: {},
        computed: {
            // player() {
            //     return this.$refs.videoPlayer.player
            // },
        },
        filters: {},
        components: {
            // Video
            // videoPlayer
        },
        created() {
            // this.controlVolume()
        },
        beforeDestroy() {
            this.players.forEach(player => player.stop());
        }
    
    }
    
    </script>
    <style scoped>
    .view {
        background-color: rgb(43, 168, 188);
        width: 435px;
        /* height: 460px; */
        box-sizing: border-box;
        /* margin-left: 8px; */
        
    }
    
    #video-container{
        /* display: flex; */
        /* justify-content: space-around;
        flex-wrap: wrap; */
        height: 450px;
        /* background-color: red; */
    
    }
    #video-container canvas {
        width: 220px !important;
        height: 220px !important;
    }
    </style>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月24日
  • 已采纳回答 4月24日
  • 创建了问题 4月24日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?