文章目录
- 一、安装ffmpeg
- 二、配置系统ffmpeg环境变量
- 三、node搭建websocket服务
- 四、vue播放视频
注意:
这个方法实现了本地rtsp视频的播放,暂时没考虑服务器部署
参考文章:vue中web端播放rtsp视频流(摄像头监控视频)(海康威视录像机)
一、安装ffmpeg
ffmpeg下载:FFMpeg
找到左下角的Windows builds from gyan.dev
下的Windows builds from gyan.dev
新页面找到ffmpeg-release-essentials.zip
,点击下载,下载完解压
二、配置系统ffmpeg环境变量
1.点击环境变量
2.找到并点击Path
,然后点击编辑
3.点击浏览,找到刚刚解压的目录
4.最好重启一下电脑,添加成功后验证是否生效任意地方打开cmd窗口输入 ffmpeg 打印如下表示成功
三、node搭建websocket服务
1.系统根目录新建一个app.js
文件
app.js内容
const stream = require('node-rtsp-stream')
const urls = [
'rtsp://admin:123456@192.168.2.100:554/Streaming/Channels/101',
'rtsp://admin:123456@192.168.2.100:554/Streaming/Channels/201',
'rtsp://admin:123456@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++; // 每次递增端口号
});
2.下载安装node-rtsp-stream:
npm install node-rtsp-stream -S
3.运行
node app.js
出现下面界面就是成功了
四、vue播放视频
1.下载下来解压后放到public
下面
jsmpeg.min.js下载地址:jsmpeg.min.js 蓝奏云
2.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: {},
filters: {},
beforeDestroy() {
this.players.forEach(player => player.stop());
}
}
</script>
<style scoped>
.view {
background-color: rgb(43, 168, 188);
box-sizing: border-box;
}
#video-container{
height: 450px;
}
</style>
注意:
jsmpeg.min.js建议在index.html引入,我只是不放心又引入了一遍,正常在index.html也要引入
后续在服务器上采用该方法的话会继续更新文章
下班~