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>