nodejs将rtsp视频流打上水印后通过websocket发送给前端

网上有把rtsp流通过websocket发送到前端的方法,就是用rtspStream,具体代码如下:

javascript 复制代码
var stream = require('node-rtsp-stream')
stream = new stream({
  name: 'name',
  streamUrl: 'rtsp://xxxxx',
  wsPort: 9999,
})

我们还需要给视频加上水印,比如我需要给视频进行画框,可以采用ffmpeg来进行画框

ffmpeg的代码如下

javascript 复制代码
ffmpeg -i ${rtspUrl} -vf "drawbox=${watermarkX}:${watermarkY}:${watermarkWidth}:${watermarkHeight}:red@0.5" 

你可以使用ffplay试播放一下

javascript 复制代码
ffplay -i ${rtspUrl} -vf "drawbox=${watermarkX}:${watermarkY}:${watermarkWidth}:${watermarkHeight}:red@0.5"

但是如果将ffmpeg的这个代码推至留一个rtsp流中就会报错,而且报错没有报错信息,只有一些奇怪的东西报错上来(目前还不知道原因,如果知道了原因会补上)

javascript 复制代码
ffmpeg -i ${rtspUrl} -vf "drawbox=${watermarkX}:${watermarkY}:${watermarkWidth}:${watermarkHeight}:red@0.5" -f rtsp rtsp://localhost:8554/output

stderr: Input #0, rtsp, from 'rtsp://admin:shuju12345@192.168.120.201:554/Streaming/Channels/101':

Metadata:

title : Media Presentation

Duration: N/A, start: 0.040000, bitrate: N/A

stderr: Stream #0:0: Video: hevc (Main), yuv420p(tv), 1920x1080, 25 fps, 25 tbr, 90k tbn

stderr: Stream mapping:

Stream #0:0 -> #0:0 (hevc (native) -> mpeg4 (native))

后来在网上找了很多办法,最后发现可以在rtspstream里面使用ffmpeg,不用再新建一条rtsp流,代码如下:

javascript 复制代码
stream = new stream({
  name: 'name',
  streamUrl: 'rtsp://xxx',
  wsPort: 9999,
  ffmpegOptions: { // options ffmpeg flags
    '-stats': '', // 没有必要值的选项使用空字符串
    '-vf': `drawbox=${watermarkX}:${watermarkY}:${watermarkWidth}:${watermarkHeight}:red@0.5`,
    '-s': '1920*1080', // 视频窗口大小 1920*1080 或 2560*1920
    '-r': 25, // 视频帧率
  }
})

这样就可以在传输的过程中直接绘制图形。

相关推荐
陈随易4 小时前
在 VSCode 里,把项目一键部署到服务器
前端·后端·程序员
Highcharts.js5 小时前
教程:基于 React + Highcharts 构建一个单页应用程序、按需数据拉取与图表渲染
开发语言·前端·数据结构·react.js·前端框架·highcharts·页面应用
To_OC5 小时前
我被 useState 坑了两次之后,终于把它的脾气摸透了
前端·javascript·react.js
鱼樱前端5 小时前
我用 Claude Code 后,编码效率翻 3 倍。但更值钱的是别的。
前端·后端·ai编程
_lucas5 小时前
给知识库网站接入AI问答
前端·ai编程·全栈
gwf2166 小时前
RoCEv2无损网络配置实战:PFC与ECN深度调优
网络·网络协议·tcp/ip·udp·tcpdump
前端糕手6 小时前
前端面试题大全:JavaScript + Vue3 + React + TypeScript + 工程化 + 性能优化
前端
我不叫武7 小时前
一个用 Rust 写的离线编码查询桌面工具
前端
q567315238 小时前
人工智能训练数据采集:稳定代理IP高并发方案全解析
人工智能·爬虫·网络协议·tcp/ip·代理模式·代理ip
Web4Browser8 小时前
指纹浏览器 API 自动化怎么接:启动 Profile、获取 CDP 端点并连接自动化框架
前端·网络·typescript·自动化