C++并发编程-2 FFmpeg推流命令参数
其实没太想好FFmpeg这一篇博客放在哪个分类下面,后续应该不会开一个单独的音视频处理的分类,就接着上次的多路视频流采集继续写一些。 视频的基本概念 诚然,我对视频处理其实并不熟悉,因此需要对各个概念做些明确与区分,比如MP4是什么?H264又是什么?以及推流中的关键帧等概念,需要提前认识一下。 封装格式(快递箱子) 例如:.mp4、.flv、.mkv、.avi。这些文件后缀名,只是一个外壳。它就像一个快递箱,里面装着“视频画面”和“音频声音”两样东西。有些箱子是透明的(支持网页直接播),有些箱子很结实(支持更多功能)。直播推流通常用 FLV 箱子,因为它传输快。 编码格式 例子:H.264、H.265、AAC、MP3,这里面混杂了视频与音频的编码方法。原始的视频画面是非常巨大的(几秒钟就能有几百兆)。为了塞进箱子传输,我们必须把它“压缩”。H.264:这是一种把视频画面“折叠/压缩”的标准(方法)。AAC:这是一种把声音“折叠/压缩”的标准。 注意,H.264、H.265这俩有啥区别? H.264 (也叫 AVC) ——...
端边协同的增量目标检测系统-2 中控UI
根据前一节构建的框架,本节搭建一个基本的前端页面UI,大体上需要如下四个页面: 全局layout 核心架构搭建:构建基于 Ant Design 的响应式全局 Layout 在后台管理系统中,全局 Layout(布局)扮演着骨架的角色。它不仅负责维护页面结构的一致性(侧边栏、顶栏),还需要处理全局状态(如导航高亮、报警消息推送)。 采用了 React + Ant Design 5.x + Tailwind CSS,构建了一个经典的“左右结构”管理后台。以下是该组件的三个核心实现要点: 利用 Flex 布局与组件化 利用 Ant Design 的 组件体系,极大地简化了 CSS 布局的工作量。整体采用了 Sider(侧边栏)+ Header(顶栏)+ Content(内容区)的经典布局。 Sider: 负责导航,支持折叠收起。 Header: 放置折叠开关和全局功能入口(如消息通知)。 Content: 路由的出口,用于渲染具体的业务页面。 代码实现上,通过Tailwind的 min-h-screen...
端边协同的增量目标检测系统-1 系统架构与技术选型
一直以来都想做一个端侧部署的系统,苦于没有完整的想法以及对应的技术栈,经过上一年的学习,相应的技术点基本都会了些,正好也到了准备大论文第三部分系统构建的时段,就决定将之前的tensorRT项目包装一下,做个系统出来,姑且命名为:端边协同的增量目标检测系统 想法构建 大论文的主线工作是:增量目标检测。目标检测的应用场景总体还是比较多的,比如安防、生产线上的瑕疵检测、无人驾驶等等环境,有个可行的方案是用边云协同,但对于视频流这个传输压力还是很大的,同时受上一个项目的影响,个人会更倾向于局域网内解决问题,避免上公网。基于以上两个考虑,决定在常见的监控系统上展开初步的系统构建。 常见的一些监控系统上都会配置:局域网、摄像头(提供RSTP流)、主机、存储。几乎提供了除GPU以外的全部硬件设备,如果不对主机进行硬件升级,是否可以单独采购一个AI推理的硬件?比如:NVIDIA Jetson,将所有的AI相关的服务构建为web或者其他可供调用的服务,再通过主机上的软件对开发板进行一些可视化的操作,或许是一个可行的方案。 ...
C++并发编程-1 多路视频采集处理
之前搭建了tensorRT的基本框架,想着部署个yolo做多路视频的处理,现在没有真实的网络摄像头可供使用,临时采用RTSP+ffmpeg推流、Opencv拉流组个模拟。 推流 RTSP(Real-Time Streaming Protocol)用于在网络中控制流媒体服务器。RTSP 允许客户端(如媒体播放器)与服务器建立和控制流媒体会话,支持播放、暂停和停止等功能。他并不直接提供视频推流,需要结合ffmpeg一起。 RTSP服务器安装 下载mediamtx_v1.5.1_linux_amd64.tar.gz,解压,执行./mediamtx ffmpeg 安装 直接sudo安装即可:sudo apt install ffmpeg 为了同时推送多路视频,可以写sh脚本: 123456789101112131415161718192021222324252627282930#!/bin/bash# MediaMTX 服务器地址RTSP_URL="rtsp://localhost:8554"#...
TensorRT模型部署推理-2 动态批次
在上一篇博客里大概整理了tensorRT对于固定结构网络进行推理的的流程,在申请内存的时候可以通过engine_拿到输入输出的结构,从而申请对应的内存,将GPU与CPU的内存指针分别保存在device_ptr与host_ptr中,推理的时候将输入tensor数据传送到GPU的指定位置上,还要指定大小。 1const cudaError_t err = cudaMemcpyAsync(tensor.device_ptr, tensor.host_ptr, tensor.size, cudaMemcpyHostToDevice, stream_); 对于固定尺寸、固定批次的模型,这种方案是非常简单高效的,但是他的扩展性似乎不太行(我叫他扩展性,我不知道工业界叫他什么),就比如yolo模型部署,固定尺寸输入:1 * 3 * 640 * 640,一次只处理一张图像,如果想处理多路监控,还得多次部署,不光占用显存,还浪费了GPU的并行能力。所以还是希望他能做到动态的批次,让输入为:[?, 3, 640,...
TensorRT模型部署推理-1 基本流程
pytorch的推理速度常被人诟病,在生产环境中会采用一些特殊的格式去部署,常见的有onnx的静态图,适用性广,在unity3D中也可以直接用,在此之上还可以进一步做优化,具体到硬件层面,有英伟达的GPU,华为的昇腾,各家在静态图的基础上又做了些工作,比如层融合。由于手头没有华为的板子,再 结合上次玩过香橙派的经验,此次就尝试用tensorRT做OCR模型的部署推理,在此基础上用C++搭建web服务,正好接入前段时间做的档案系统。 开发环境 CUDA Toolkit + cudnn + tensorRT,注意版本对应即可,认准cuda版本。 安装过程可参考: https://blog.csdn.net/weixin_44822312/article/details/148653179 https://www.cnblogs.com/wanqieddy/p/17581996.html 第一个博客中介绍了vllm在wsl中的部署方法,包括了安装wsl的过程与CUDA...
若依集成单点登录
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 背景补充 单点登录(Single Sign-On, SSO) 是一种身份验证机制,允许用户通过一次登录访问多个相互信任的子系统。例如,用户登录企业内部门户后,可直接访问OA、CRM等系统而无需重复输入凭证。常见的SSO协议包括CAS、OAuth2、SAML等。本文实现的是一种简化的SSO逻辑,通过第三方系统颁发的Token直接完成若依系统的身份认证。 Spring Security...
数据库迁移:MySQL -> 人大金仓
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 人大金仓? Kingbase是基于开源数据库PostgreSQL开发的国产数据库。 所以在后续的开发中,将人大金仓视作PostgreSQL就可以解决大多数问题(这个想法对于海量数据库Vastbase是不是也是成立的?) 安装 人大金仓,一路下一步,全部安装,其中有一步骤是添加license,在下载页面也有授权文件的下载,选择开发版就好,安装好后就能看到三个软件工具: 初步使用 运行:数据库开发管理工具。界面跟Navicat、MySQL Workbench有些像: 创建连接、创建数据库的过程还是相当相似的,不过多赘述,但是相比MySQL的数据库,多了模式这一层级。可以把它理解成一个命名空间,也就是说kingbase的数据库相对是一个更加大的集合。 mysql:...
护肤!战痘!
前言:毕竟不是相关专业的,处于兴趣与个人想收拾好看些的想法,初步探索了些护肤的方法。写完回头看都快成软广了…… 核心似乎是水油平衡,缺水或许也会导致过油,所以我的想法是补水+控油 控油:避免过度清洁,适当用酸,水杨酸、杏仁酸等,及时补水, 早晨:维生素E乳+珀莱雅双抗+保湿面霜薄涂。 晚上:洁面后生理盐水湿敷,清水再洗一次,不宜每天进行。 出于美白和去痘印的需要,晚上洁面补水之后,我会用达尔夫杏仁酸8%、欧邦琪VC15%浓度,酸隔天用,VC每晚。 在用这些酸和VC前两个月,先用珀莱雅源力精华修护了一段时间。 痘痘 浅表有脓头的,等待成熟,挤出就好,点涂夫西地酸乳膏(避免感染留印) 无脓头深处硬块:不要挤!夫西地酸乳膏局部范围稍大一些+阿达帕林凝胶(点涂,每晚一次),抗菌+疏通毛孔。似乎需要很长时间…… 痘印 红痘印:皮肤的炎症反应,消炎就好。积雪苷霜软膏(有些油腻)、复方多磺酸黏多糖(这个我用在点痣2个月之后的红印上似乎也有用) 黑痘印:炎症期间没做防晒,导致的黑色素沉积,需要好几月处理,酸和美白的类产品一起用,我正在奋战嘴角附近的一个,不知还要多久…… ...
数据库分离
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 为啥要配置多数据源? 业务、流程、系统相关数据库进行分离,免得一次性全炸了,当然商业软件可能会更多的考量,比如数据备份、读写分离等等安全性的考虑,目前的想法出于业务分离的考量,再同样的系统上集成其他业务,就不需要重新搞用户、部门等数据表。 怎么配? 若依项目本身就集成了多数据源的配置,在alllication.yml中就有: 1234567891011121314151617181920spring: datasource: druid: # 主库数据源 master: url:...







