码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • nodejs将rtsp视频流打上水印后通过websocket发送给前端


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

    1. var stream = require('node-rtsp-stream')
    2. stream = new stream({
    3. name: 'name',
    4. streamUrl: 'rtsp://xxxxx',
    5. wsPort: 9999,
    6. })

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

    ffmpeg的代码如下

    ffmpeg -i ${rtspUrl} -vf "drawbox=${watermarkX}:${watermarkY}:${watermarkWidth}:${watermarkHeight}:red@0.5" 

    你可以使用ffplay试播放一下

    ffplay -i ${rtspUrl} -vf "drawbox=${watermarkX}:${watermarkY}:${watermarkWidth}:${watermarkHeight}:red@0.5"

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

    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流,代码如下:

    1. stream = new stream({
    2. name: 'name',
    3. streamUrl: 'rtsp://xxx',
    4. wsPort: 9999,
    5. ffmpegOptions: { // options ffmpeg flags
    6. '-stats': '', // 没有必要值的选项使用空字符串
    7. '-vf': `drawbox=${watermarkX}:${watermarkY}:${watermarkWidth}:${watermarkHeight}:red@0.5`,
    8. '-s': '1920*1080', // 视频窗口大小 1920*1080 或 2560*1920
    9. '-r': 25, // 视频帧率
    10. }
    11. })

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

  • 相关阅读:
    高尔夫模拟器,极致的室内高尔夫球运动体验!
    泰山OFFICE技术讲座:文字边框高度研究
    文心一言 VS 讯飞星火 VS chatgpt (82)-- 算法导论8.1 1题
    软考知识点---11关系型数据库SQL语言
    Markdown语法入门
    openresty 动态黑白名单
    Redis总结
    黑灰产眼中的NFT:平台嗷嗷待宰,用户送钱上门
    maple中,如果一个函数的表达式有两个中含有rootof和_z要怎么画出他的图像呢?
    ModaHub魔搭社区:星环科技向量数据库Hippo社区版来啦
  • 原文地址:https://blog.csdn.net/ArmadaDK/article/details/132622518
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号