简介在 基于树莓派的视频推流方案 我们尝试了通过树莓派推流到流媒体服务器, 然后通过 Web 查看视频, 这次我们来尝试一下通过树莓派控制舵机. 想法这这样的, 使用一个 Web 页面实时展示 2 个摄像头的画面, 然后通过 PCA9685 舵机来控制摄像头角度.这样就可以实现一个简单的监控了. PCA9685PCA9685 是 NXP 生产的一款 16 通道 PWM(脉宽调制)控制器,主要用于驱动 LED 或舵机,广泛应用于机器人、灯光控制和 DIY 电子项目。 主要特点 16 路独立 PWM 输出(每个通道 12 位分辨率,0~4096 可调)。 I²C 接口通信,地址可调(0x40~0x7F)。 频率可调,支持 24Hz~1526Hz 的 PWM 频率。 支持外部时钟(适用于需要更高精度的场景)。 可编程 LED 亮度控制,支持单独和分组控制。 工作电压:2.3V~5.5V(兼容 3.3V 和 5V 逻辑电平)。 最大输出电流:每个通道 25mA(默认),最大 400mA(所有通道总电流)。 接线方式: 外接供电: 驱动板右侧的黑黄蓝红 4 条线的接法毫无争议。关键是 ...
新时代码农
未读为了满足燃气站设备的安全、维护、效率、合规和技术发展等多方面的需求。通过实施该解决方案,实现实现无人值守的目的, 提高燃气站设备的安全性和运行效率,降低运营成本。 需求 通过连接本地 IPC 和 NVR 实现视频展示功能, 已达到安全巡检的目的; 连接燃气站内部 门禁 系统, 通过局域网定时探活的方式监测门禁设备运行情况; 使用 SNMP 协议监测 网络交换机 的实时运行情况, 包括以下内容: 端口占用情况 上下行的数据流量 其他关键参数信息 获取运行日志并上传 温度、负荷 监测 UPS 设备, 收集电池, 当前功率等相关的数据; 空调 控制, 包括温度调节, 启停等操作; 环境监测, 包括温度, 湿度, 噪音等数据; 柴油发电机检测, 需要做到市电停自动启动柴发, 市电来只有停止柴发; IPC, 网络交换机等关键设备能够实现 远程重启; 收集所有设备到的 状态(在线/离线) 数据; 站内数据可以集中展示在场站内部的 显示屏 上, 并能够实时上报到云平台; 当市电断电且 UPS 电量耗尽后还能够通过 4G 的方式持续上报设备数据到云平台; 提供扩展模块用于后续新设 ...
新时代码农
未读首先我们需要明确什么是 基础框架 以及 基础框架 能给我们带来怎样的便利从而方便开发者快速根据业务需求构建可实施的业务项目. 1.1 什么是基础框架1.1.1 定义 框架(framework)是整个或部分系统的 可重用 设计,表现为一组抽象构件及构件实例间 交互 的方法,另一种定义为,框架是可被应用开发者定制的应用 骨架。 框架是一个 可复用 的设计构件,通常以 构件库 的形式出现,但构架库只是框架的一个重要部分,框架的关键在于框架内对象间的的交互模式和控制流模式。 从定义可以得出, 框架是一种 可复用 构件, 以 构件库 的方式加入到业务代码中, 从而避免重复开发达到复用的目的. 每个公司都会或多或少根据自己公司业务封装内部的开发基础框架. 比如蚂蚁金服基于 Spring Boot 自研的 SOFA, 属于金融级别的微服务框架; Vert.x 基于 Netty 封装的基于事件的异步框架; Dubbo 是一个高性能的、基于 Java 的开源 RPC 框架等. 考虑到面向的领域,以及实现编码实现,我们可以将将框架至少分为三类: 基础类库: 包含多数项目所需要的类库, 开发人员 ...
2. 技术中心组织架构2.1 整体架构 技术中心由 2 个业务线和 5 个职能团队构成。其中事业线分为为: 业务部门一、业务部门二 职能团队为:开发团队、 测试团队、产品团队、UI 设计团队、运维团队和实施团队; 技术中心领导团队构成由 技术中心总负责人、技术负责人、产品负责人和各事业线项目经理以及各团队 Leader 构成,实行双线管理,双岗双责机制; 2.2 工作汇报机制 各事业线人员向项目经理汇报; 产品团队、开发团队、测试团队、运维团队向各团队 Leader 汇 报,各团队 Leader 技术负责人和产品负责人汇报; 项目经理、实施 Leader、 技术负责人和产品负责人向总负责人汇报; 2.3 部门划分与职能2.3.1 部门一界定各部门的职责范围 2.3.2 部门二界定各部门的职责范围 2.4 团队划分与职能 2.4.1 产品开发团队产品开发团队职责 技术引领与支持:关注国内外行业前沿发展动态及信息,研究并应用先进技术,管理公司整体核心技术,规划和引领公司开发技术发展,满足公司战略对技术提出的要求,以及系统更新产品升级的技术需求,向业务部门提供技术支 ...
AI:人工智能
未读越来越多的企业和个人希望能够利用 LLM 和生成式人工智能来构建专注于其特定领域的具备 AI 能力的产品。目前,大语言模型在处理通用问题方面表现较好,但由于训练语料和大模型的生成限制,对于垂直专业领域,则会存在知识深度和时效性不足的问题。在信息时代,由于企业的知识库更新频率越来越高,并且企业所拥有的垂直领域知识库(例如文档、图像、音视频等)往往是未公开或不可公开的。因此,对于企业而言,如果想在大语言模型的基础上构建属于特定垂直领域的 AI 产品,就需要不断将自身的知识库输入到大语言模型中进行训练。 目前有两种常见的方法实现: 微调(Fine-tuning):通过提供新的数据集对已有模型的权重进行微调,不断更新输入以调整输出,以达到所需的结果。这适用于数据集规模不大或针对特定类型任务或风格进行训练,但训练成本和价格较高。 提示调整(Prompt-tuning):通过调整输入提示而非修改模型权重,从而实现调整输出的目的。相较于微调,提示调整具有较低的计算成本,需要的资源和训练时间也较少,同时更加灵活。 综上所述,微调的方案投入成本较高,更新频率较低,并不适合所有企业。提示调 ...
新时代码农
未读简介因为项目上有很多设计到监控视频的工作, 所以想通过树莓派来研究一下流媒体相关的技术, 所以总结了一些在树莓派上实现视频推流的方案. 硬件: 树莓派 5B: 8G 内存 RPi Camera V2: 800 万像素 IMX519: 1600 万像素, 自动对焦 摄像头一个摄像头使用了官方的 RPi Camera V2, 使用了索尼 IMX219 800 万像素传感器, 另一个使用了 IMX519, 具备 1600W 像素. RPi Camera V2 插上就能识别, 但是 IMX519 费了点功夫, 找到了几篇相关的讨论: Arducam 16MP AF camera on a Pi5 ? - Raspberry Pi Forums Arducam IMX519 not detected by Raspberry Pi 5 Setup IMX519 with any Raspberry Pi OS - Raspberry Pi Cameras - Arducam Camera Support Forum 模板:IMX519 Driver Installation - Wav ...
1. 背景在 树莓派 + 大方摄像头 打造婴儿监控 中简单介绍了通过刷大方摄像头第三方固件来解锁更多功能, 比如 RTSP, MQTT 等, 这里我们就使用 RTSP 结合树莓派来打造一个直播间. 2. 直播架构复杂的架构图: 简单的架构图: 2.1 推流工具 ffmpeg:https://www.ffmpeg.org/download.html OBS studio:https://obsproject.com/download 2.2 拉流工具 ffplay 播放器: https://www.ffmpeg.org/download.html 。 cutv www.cutv.com/demo/live_test.swf flash 播放器。 vlc 播放器。 ijkplayer (基于 ffplay): 一个基于 FFmpeg 的开源 Android/iOS 视频播放器。开源,API 易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电简单易用,指定拉流 URL,自动解码播放.。 2.3 流媒体服务器 SRS :一款国人开发的优秀开源流媒 ...
1. 背景6 月儿子诞生, 又有折腾的接口了. 儿子睡着后会放到主卧, 老婆在客厅, 我在书房, 为了监控儿子的睡眠状态, 开始折腾家里的闲置设备. 2. 目标 使用小米的大方摄像头捕获儿子的实时视频, 如果儿子动了就报警; 使用树莓派搭建 MQ 服务器, 将大方的告警推送到手机上; 3. 整体架构 大方摄像头监控儿子, 如果监测到动作, 这通过自带的 MQ client 发送动作告警; 树莓派监听特定 topic, 如果符合预设值则通过 bark 发送动作告警; 妈妈收到 bark 消息, 前去查看儿子是否需要宝宝; 完美的闭环 4. 实施步骤4.1 大方摄像头刷固件小米的大方摄像头官方固件不支持自定义 MQ, 感谢大佬开源了第三方固件, 感谢开源. 大方色摄像头第三方固件 支持大方摄像头, 小方摄像头等多款摄像头, 提供了 RTSP, MQ, Telegram 等集成服务. 有了 RTSP 服务后, 可以接入 HomeKit 和 Home Assistant. 刷固件的教程官方写的非常详细, 这里提醒一点: 10.你应该看到蓝色 LED 闪耀 5 秒钟(不闪烁)并开 ...
1. 背景因为 DDNS-GO 接入了阿里云的 DDNS 服务, 会出现频繁的调用配置的 URL 去获取公网 IP 并更新到阿里云, 如果部分 IP 查询网站设置了请求限制, 将导致我的域名失效. 因此考虑使用 Nginx 来搭建一个获取公网 IP 的服务, 用来给 DDNS-GO 使用. 2. 使用 Nginx在网上查询资料后, 只需要对 Nginx 进行简单的配置即可: 123456789101112server { listen 8000; listen [::]:8000; server_name ip.xxx ip.yyy; server_tokens off; location = /ip { add_header Content-Type text/plain; access_log off; return 200 "$remote_addr\n"; }} 然后使用 curl http://ip.xxx:8000/ip 或者 ...
主要介绍了视频集成解决方案,包括视频监控数据流转、音视频传输协议对比、协议接入、主流的流媒体协议、播放协议对比、主流的封装格式、主要视频编码、常见的设备与连接方案、术语解释、业务场景、视频接入平台、流媒体服务选型以及平台选型等方面的内容。通过这篇文章,读者可以了解到视频集成常见的解决方案,并从现有方案中学习总结,以应对日益复杂的业务场景。 1. 目的随着承接的项目逐渐增多, 且大多数项目都会涉及到视频监管需求, 为了避免重复调研开发, 加快项目上线速度, 这里汇总总结了多种业务场景并提出对应的解决方案, 一方面是作为技术知识积累, 让团队人员了解视频集成常见的解决方案, 二是可以从现有方案中学习总结, 以应对日益复杂的业务场景. 2. 领域知识2.1 监控数据流 视频监控数据流转主要经过下面 5 个过程: 采集: 通过硬件设备采集音视频数据, 如果硬件设备支持, 还可以对数据进行粗加工, 比如添加水印; 推流: 设备端将音视频数据进`行编码压缩(H.264/H.265)后发送给流媒体服务器, 一般使用 RTSP (延迟最低); 流媒体处理: 负责转码, 传输 ...
缘起最近一段时间在开发 IDEA 插件, UI 界面需要使用到国际化配置, 于是就看了看 IDEA 是怎么实现的, 发现很简单, 正好能用到框架开发上. 打算为每个 atom-kernel 模块配置一个国际化配置, 同时将错误信息配置化. 因为是框架底层的组件, 如果使用 Spring Boot 的 i18n 实现就太重了, 因此需要一种超轻量级的实现方式. IDEA 中如何实现 i18nIDEA 使用 ResourceBundle 这个类实现了 i18n, 源码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556/** * 特定作用域捆绑包的基类(例如“vcs”捆绑包、“aop”捆绑包等)。 * 使用模式: * 创建一个扩展该类并为当前类构造函数提供目标bundle路径的类; * 可选地在子类中创建静态facade方法-创建单个共享实例并委托给它的getMessage(String,Object…) * * @aut ...
AI:人工智能
未读监控告警模块用于实时监控各类设备数据,通过采集、分析和处理数据,生成有价值的指标和警报信息,并向管理员发送通知,确保业务稳定运行。 1.1 目标监控告警模块用于实时监控各类设备数据,通过采集、分析和处理数据,生成有价值的指标和警报信息,并向管理员发送通知,确保业务稳定运行。 保持业务稳定:监控告警模块需要实时监控设备运行状态,并能够及时发现问题和异常情况,及时发出告警通知并迅速响应异常,以便管理员采取及时措施。 改善服务质量:监控告警模块支持对设备数据进行采集和分析,生成有价值的指标和警报信息,及时发现并解决问题,避免用户受到影响,提高用户体验。例如通过监控设备的在线率,当出现大规模的设备离线时,能第一时间介入解决问题,避免设备因故障导致客户业务受阻。 1.2 功能 主要包括数据采集、数据分析、告警通知、告警处理、数据展示、数据管理界面等多个功能模块。 数据采集:负责采集各个模块的数据,包括但不限于业务平台系统、DB、设备等的数据。采集的数据会存储到对应的数据库中,供后续分析使用。 数据分析:负责对采集到的数据进行处理、分析和计算,从而得出有价值的指标和警报信息。数据 ...
为什么你不爱写技术文档?以及怎样才能写好技术文档?我以前看过一个投票,盘点程序员不喜欢的事,有两条和文档相关: 不喜欢写文档;不喜欢项目文档太少。 看起来很矛盾,却很现实。基本上大家都认同:“项目文档很重要”,然而我们在项目中总是短期高估文档的重要性,而长期低估文档的重要性。 结果就是口号喊的很响:要重视文档、要写好文档、要多写文档,然而随着项目的推进,总有比文档优先级更重要的任务,文档的优先级总是被有意无意推迟,导致项目的文档缺失、老旧、无人维护。 1.1 为什么不爱写文档?那么为什么程序员都不爱写文档呢?我总结了一下大致有下面这些原因。 不知道怎么写 不知道怎么写文档的应该占很大一部分比例。 太忙没时间写或者懒得写 程序员确实很忙,但总有不那么忙的时候,却也很少见有人利用这时间去写文档。包括我自己也这样,有时候没那么忙的时候,宁可去想想怎么重构下代码,却很少会愿意去写文档,主要还是太懒。 因为是敏捷开发,所以不用写文档? 对于这个问题,我其实反驳过多次,敏捷宣言 最后一句话明确指出:「尽管右项有其价值,我们更重视左项的价值。」也就是说敏捷从来没有否认文档的 ...
1. 为什么用构件管理工具 一个项目就是一个工程 如果项目非常庞大,就不适合使用 package 来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于构件管理工具就可以将一个项目拆分成多个工程 项目中使用 jar 包,需要“复制”、“粘贴”项目的 lib 中 同样的 jar 包重复的出现在不同的项目工程中,你需要做不停的复制粘贴的重复工作。借助于构件管理工具可以将 jar 包保存在“仓库”中,不管在哪个项目只要使用引用即可就行。 jar 包需要的时候每次都要自己准备好或到官网下载 借助于构件管理工具我们可以使用统一的规范方式下载 jar 包 L jar 包版本不一致的风险 不同的项目在使用 jar 包的时候,有可能会导致各个项目的 jar 包版本不一致,导致未执行错误。借助于构件管理工具,所有的 jar 包都放在“仓库”中,所有的项目都使用仓库的一份 jar 包。 一个 jar 包依赖其他的 jar 包需要自己手动的加入到项目中 FileUpload 组件->IO 组件,commons-fileupload-1.3.jar ...