使用express+vue在网页上显示RTSP流视频
这里使用的方式是将获取过来的RTSP流通过express转成flv格式,再在网页上呈现出来,自从flash淘汰之后,网页好像就不能直接出RTSP流了,之前可以使用vlc插件直接播放,现在不行咯。
使用的工具是vscode+node.js+ffmepg。
首先下载ffmepg https://github.com/BtbN/FFmpeg-Builds/releases
打开vscode,新建一个index.js文件,使用终端输入 npm init -y 初始化一个 package.json 文件,使用命令 npm install express -- save 下载 Express。
在index.js文件下写入:
var express = require("express");
var expressWebSocket = require("express-ws");
var ffmpeg = require("fluent-ffmpeg");
ffmpeg.setFfmpegPath("D:/zhaxiang/ffmpeg-master-latest-win64-gpl/bin/ffmpeg");
var webSocketStream = require("websocket-stream/stream");
var WebSocket = require("websocket-stream");
var http = require("http");
function localServer() {let app = express();app.use(express.static(__dirname));expressWebSocket(app, null, {perMessageDeflate: true});app.ws("/rtsp/:id/", rtspRequestHandle)app.listen(8888);console.log("express listened")
}
function rtspRequestHandle(ws, req) {console.log("rtsp request handle");const stream = webSocketStream(ws, {binary: true,browserBufferTimeout: 1000000}, {browserBufferTimeout: 1000000});let url = req.query.url;console.log("rtsp url:", url);console.log("rtsp params:", req.params);try {ffmpeg(url).addInputOption("-rtsp_transport", "tcp", "-buffer_size", "102400") // 这里可以添加一些 RTSP 优化的参数.on("start", function () {console.log(url, "Stream started.");}).on("codecData", function () {console.log(url, "Stream codecData.")// 摄像机在线处理}).on("error", function (err) {console.log(url, "An error occured: ", err.message);}).on("end", function () {console.log(url, "Stream end!");// 摄像机断线的处理}).outputFormat("flv").videoCodec("copy").noAudio().pipe(stream);} catch (error) {console.log(error);}
}
localServer();
这里的ffmpeg.setFfmpegPath里放的是你下载ffmepg的绝对路径 。
再在index.js的同一级目录下新建文件夹,名字随便取吧,这里用来放前端数据,如何建不用多说吧,不会的自己补补吧。
前端代码:
<template><div><video class="demo-video" ref="player" muted autoplay></video></div>
</template>
<script>
import flvjs from "flv.js";
export default {data () {return {id: "1",rtsp: "",player: null}},mounted () {if (flvjs.isSupported()) {let video = this.$refs.player;if (video) {this.player = flvjs.createPlayer({type: "flv",isLive: true,hasAudio:false,hasAudio:false,hasVideo:true,url: `ws://localhost:8888/rtsp/${this.id}/?url=${this.rtsp}`});this.player.attachMediaElement(video);try {this.player.load();this.player.play();} catch (error) {console.log(error);};}// if (video) {// this.player = flvjs.createPlayer({// type: "flv",// url: `/static/test.flv`// });// this.player.attachMediaElement(video);// try {// this.player.load();// this.player.play();// } catch (error) {// console.log(error);// };// }}},beforeDestroy () {this.player.destory();}
}
</script>
<style>.demo-video {max-width: 880px; max-height: 660px;}
</style>
前端代码中data中rtsp:下写的是你摄像头的IP地址,记得改。
一切准备就绪之后,在index.js目录下打开终端,输入
npm install express express-ws fluent-ffmpeg websocket-stream -S -D
再使用 node index.js 启动后端
再打开一个终端,进入前端目录下, 输入:npm install flv.js -S -D
再输入npm run dev应该就能看到视频啦。
参考:
https://blog.csdn.net/F_angT/article/details/119027058
使用express+vue在网页上显示RTSP流视频相关推荐
- 3D模型在网页上显示
3D模型在网页上显示,这绝对是未来的趋势,也是热门.一部"阿凡达"让电影节发生了一次地震,让人们感到3D的时代到来.那么我们IT界呢?如果各位因工作时间繁忙,或者嫌上海世博会人山人 ...
- 图片的base64编码实现以及网页上显示
生成.解析base64编码的图片 //图片转化成base64字符串 public static String GetImageStr(<span style="font-family: ...
- php导入qq数据txt代码,/谁有能都实现将excel文件导入到数据中,并在php网页上显示的源码啊,有的发送1091932879@qq.com,谢谢!...
PHP网页怎么导入Excel的数据 参码如下: // 1.引用ExcelReader类文 require_once 'Excel/reader.php'; // 2.实例化读取Excel类 $data ...
- Markdown转html在网页上显示
Markdown转html在网页上显示 1.需要安装的内容 npm install showdown showdown 详解 npm install showdown-katex showdown-k ...
- html英文日期js,JS网页上显示中英文版日期时间(根据电脑上的时间)
JS网页上显示中英文版日期时间(根据电脑上的时间) <script language="javascript"> function shownowtime() { va ...
- 设计一个jsp页面,要求在网页上显示当前日期和时间,如果时间在6:00~12:00,输出“上午好”:如果时间在12:00 18:00, 输出“下午好”:
设计一个jsp页面,要求在网页上显示当前日期和时间,如果时间在6:00~12:00,输出"上午好":如果时间在12:00 18:00, 输出"下午好":如果时间 ...
- html中加入emjio表情,html网页上显示emoji表情
前言 做项目涉及表情在网页上显示.稍微研究了一下实现方案,整体思路不复杂,就是稍微涉及到一些新概念和新方法. 精灵图 精灵图又称雪碧图,简单来说就是一种把很多小图片拼成一张大图的图片形式.下图就是表情 ...
- 在centos上安装httpd,并实现html文件和cgi文件在网页上显示,搭建静态web网页
在centos上安装httpd,并实现html文件和cgi文件在网页上显示 简介 Apache-httpd的简介 Apache-httpd的安装 html文件和cgi文件的编写 网页访问html和cg ...
- 使用JSP代码编写index.jsp文件在网页上显示数据库数据
使用JSP代码编写index.jsp文件在网页上显示数据库数据 在index.jsp文件上使用JSP代码编写 可以在网页上以表格的形式显示数据库 内的数据 需要创建一个项目 因为需要用到关于JDBC的 ...
最新文章
- ecplise SpringCould搭建过程---创建SpringCould父工程
- BZOJ 2456: mode 水题
- SAP Spartacus Table cell显示数据类型的Component决定逻辑
- java 编译原理 字符串_Java编译原理(javac)
- 面试题5,接口和抽象类的区别
- linux 删除分区_详解linux系统架构--文件系统体系
- SQL 交叉表存储过程
- linux 卸载、安装mysql
- R语言与优化模型(一):规划问题和运输问题
- 反编译那些事儿(三)—那些看似没用到的全局变量和那些使用了动态参数的方法
- 使用D3绘制图表(6)--竖直柱状图表
- 使用orCAD Library Builder建立TO-220的封装
- 项目实习——《图书管理系统》需求分析
- 频谱泄漏(spectral leakage)
- 论fastadmin里面token加密方式
- html中的embed标签属性,html中Embed标签的语法和属性设置
- 学习记录:自平衡莱洛三角形v1(原理,代码)学习记录(一)
- 力扣438. 找到字符串中所有字母异位词 C++ (滑动窗口 + 数组)
- 预付费系统中电费电价管理的分析与应用
- 安卓手机管理_彻底解决安卓手机通知管理难题,顺便还实现了聊天消息防撤回!?
热门文章
- Spring Cloud源码阅读(一)
- MFC中Combo的使用
- 100000+人体验过后都说:这TM绝对是最变态的英语学习方法……
- hyper-v与Docker for windows和VMBox的冲突
- wp 主题,wp 主题大全,wp 主题模板
- 编程彩虹c语言,c – 如何渲染彩虹光谱?
- 重庆邮电大学计算机学院蓝桥杯,第七届蓝桥杯大赛个人赛(软件类)-重庆赛区获奖名单...
- 计算机网络 『内部网关协议IGP中的路由信息协议RIP』
- CTF中WINHex修改图片大小——bugku杂项题-隐写
- darknet cpp weights模型转换成ONNX模型