- 博客(119)
- 收藏
- 关注
原创 NALU转JT1078的Java工具包
仅依赖 Netty buffer(工程已有Netty直接用,无Netty可替换byte数组手动拼接)如需脱离Netty,我可以给你纯byte[]拼接版本,不引入任何第三方包。
2026-06-28 20:38:03
168
原创 (第9讲)rtsp-simple-server安装,MediaMTX
发布页:https://github.com/bluenviron/mediamtx/releases。,仓库地址:https://github.com/bluenviron/mediamtx。,专门用来测试你 MP4/H264 推RTSP报错场景。解决UDP RTP端口映射错乱,推流不会花屏/断开。功能完全一致,单文件无依赖,修改后重启服务生效。
2026-06-28 20:00:23
270
原创 (第7讲)支持完整RTSP流媒体服务器大全
国内老牌安防RTSP服务器,专门针对IPC、车载监控。纯轻量单文件二进制,开箱即用,小型项目/测试首选。,下面全部服务器都支持设备/ffmpeg直接。推流,适配你的JT1078车载场景。SRS仅支持RTSP播放、
2026-06-27 11:31:42
169
原创 (第六讲)RTMP,RTSP,RTP概念
这么说吧RTMP,RTSP是一伙的,包含了通信协议的定义,比如握手之类的。而rtp是流的内容,更应该归类到上一讲中的NALU,avcc这类中。行业场景:GB28181设备、安防平台接收终端RTSP推流。,媒体数据走RTP;
2026-06-27 09:59:02
236
原创 (第五讲)NALU- AnnexB- AVCC概念区分
NALU = 去掉起始码后的一段纯载荷二进制内部结构:1字节NALU头 + 视频数据(SPS/PPS/I/P帧等)不带00 00 01起始码所有H264最小数据单元都叫NALU:Type=5 → I帧;Type=1 → P帧起始码前缀0x00 00 01(普通NALU前缀)(码流第一个NALU、分片开头常用)[起始码] + NALU.h264.264场景:海康/大华RTSP输出裸流、本地保存的裸流文件、FFmpeg-f h264识别的流。
2026-06-26 21:29:28
355
原创 (第四讲) 判定获取到了正确的H264
很巧不巧,我数了一个65+41,一共30条,65开头的是I帧,41开头的是P帧。也就是我们的视频帧数。这个参数在哪里设置呢?如果我改成20,是不是就减少流畅度,但是提高了视频速度,做到了低延时。精明的小伙伴应该已经猜到了。用potplay播放看一下。能够正常的显示画面,确认是h264的格式,画正常,无花屏。先运行服务器端,然后再运行手机端。我们看到生成了data.h264的文件。别忘了,我们还有一个打印后台00000001的代码。服务端写一个简单的Socket程序,核心代码3段。里面确实是裸流的格式。
2026-06-26 13:24:58
205
原创 java编写socket的客户端程序
这里提供一个基本的双功样板程序,给需要编写简单的通信程序的朋友。发送部分是独立的线程,接收部分是在主线程工作。
2026-06-24 10:48:38
38
原创 (第六讲)RTMP握手流程
RTMP协议的握手机制是建立客户端与服务器连接的关键步骤,主要包括简单握手和复杂握手两种模式。标准握手流程包含三个数据包交换:C0/C1、S0/S1/S2和C2,每个数据包具有固定结构(C0/S0为1字节,其余为1536字节)。简单握手仅使用随机数区分会话,而复杂握手通过HMAC-SHA256加密验证增强安全性。常见问题如"Broken pipe"通常由握手超时、版本不匹配或验证失败导致。开发者需严格遵循数据包格式,正确处理时间戳和随机数据回显,并实现加密验证以保障连接可靠性。握手完成后才可开始RTMP消息
2026-06-15 15:52:42
343
原创 (第三讲)讲YUV码转变成H264编码
本文介绍了如何使用CameraX结合MediaCodec实现H.264视频编码的核心流程。首先通过CameraX获取原始YUV数据,然后利用H264Encoder(封装MediaCodec)将YUV转为NV12格式并编码为H.264裸流。关键步骤包括:1) 创建H264Encoder类处理编码逻辑;2) 在ImageAnalysis中初始化编码器,设置分辨率、帧率和码率等参数;3) 通过回调接口获取编码后的H264数据。代码示例展示了完整的编码器初始化和数据回调处理过程,为后续存储或网络传输H264流提供了
2026-06-12 14:38:42
229
原创 (第二讲)Android开发取摄像头流的基础(ImageAnalysis)
本文提供了使用CameraX开发Android视频类程序的最简核心代码,主要包括三部分:1)在AndroidManifest.xml中声明相机权限;2)在布局文件中添加PreviewView作为相机预览组件;3)在Activity中实现相机预览和切换功能。代码展示了如何请求权限、初始化相机、设置前后摄像头切换,以及通过PreviewView显示实时画面。CameraX简化了相机开发流程,自动处理生命周期管理,适合快速实现基础相机功能。开发者可复制这些代码作为项目起点,进一步扩展视频处理功能。
2026-06-07 21:10:23
249
原创 (第七讲)用android手机完成RTMP摄像头推流
纯Java + CameraX,Google官方方案,兼容性极强代码直接运行,无需修改底层逻辑支持预览、推流、切换摄像头、闪光灯、参数调节低延迟、硬编码,适合直播、监控等场景。
2026-06-07 19:11:55
88
原创 (第一讲)搭建SRS的环境
本文介绍了使用Docker快速部署SRS流媒体服务器的完整流程。主要内容包括:1)通过阿里云镜像拉取并运行SRS容器,映射关键端口(1935-RTMP推流、1985-流监控、8080控制台);2)详细说明各端口用途及访问方式;3)提供FFmpeg推流命令示例,支持直接转码和重新编码两种模式;4)介绍通过ffplay和VLC两种方式验证流媒体服务;5)说明通过1985端口API实时查看当前流数量的监控方法。该指南可帮助开发者快速搭建测试环境,实现流媒体的推送与播放验证。
2026-06-07 09:48:53
262
原创 docker 安装运行MQTT
本文介绍了使用Docker启动EMQX MQTT服务的命令及端口功能说明。启动命令为docker run -d --name mqttx -p 18083:18083 -p 1883:1883 emqx/emqx:latest。主要端口包括:18083(HTTP/HTTPS管理控制台)、1883(标准MQTT TCP通信)、8083(WebSocket MQTT)、8084(加密WebSocket MQTT)和8883(SSL加密MQTT)。这些端口分别支持不同协议,满足MQTT服务的管理、标准通信、Web
2026-05-30 10:23:47
183
原创 Spring Boot 动态选择实现类
本文介绍了一种基于Spring Boot的动态库存价格算法实现方案,支持FIFO和加权平均两种算法。主要设计思路包括: 使用策略模式,通过PriceStrategy注解标记不同实现类(FIFO和加权平均) 创建PriceServiceFactory工厂类自动收集所有实现 根据商品编码动态选择算法,避免if-else判断 核心实现步骤: 定义统一接口PriceService及两个实现类 使用自定义注解标识算法类型 通过工厂模式自动路由到具体实现 业务层根据商品编码查询配置决定使用哪种算法 该方案具有良好的扩展
2026-04-22 13:49:50
168
原创 寻找消失的磁盘空间
用df -h查询到磁盘空间已经用满,但是用du -h发现磁盘大小不对,比如下面,我的磁盘,用df -h看/home有97G空间,但是用du -h看,只有13G空间,
2026-03-24 11:04:56
80
原创 安装Docker ce
核心步骤卸载旧版本 → 安装基础依赖 → 添加GPG密钥 → 配置Docker源 → 安装Docker CE → 启动验证;国内用户优先用阿里云源和镜像加速器,避免下载慢/访问失败。验证标准输出版本号;运行成功,无报错;配置非root用户后,docker ps可正常执行。关键优化;配置国内镜像加速器,提升镜像拉取速度。这套流程是Docker官方推荐的Ubuntu 22.04在线安装方案,适配生产环境,安装后可直接用于容器化部署(如之前的Jenkins镜像运行)。
2026-03-10 21:21:26
449
原创 后端部署环境常用docker安装包
作为一个后端,经常需要部署一些用的环境,例如mysql,oracle,redis,mqtt等。这里汇总了一些好的帖子,需要使用的时候可以从这里看,有些是我自己的,有些是转载的。另外,这里汇总的都是基于docker的,安装比较方便。
2026-03-02 11:08:14
171
原创 编写一个dockerfile,实现一个打包好的jenkins直接用
我有一篇文章,关于如何在centos中安装jenkins并且配置的方法。但是因为每次安装都要安装很多东西(jdk17,jenkins,git,maven,nodejs)。因此我想打包出一个docker image,要安装jenkins的时候,直接docker pull。镜像文件放到阿里云中。
2026-03-01 21:09:27
672
原创 制作mysql的docker镜像
有时候我们经常要安装mysql,老是去网上下载一个新的MySQL,版本也经常不一致。为了简单,我把我常用的mysql5.7.44版本打包成一个docker images,放到阿里云上面。如果别的地方需要安装,docker pull下来。几行简单命令就好了。现在跟着我,看如何实现上传到自己的镜像上。
2026-02-22 19:20:03
1053
原创 dockerdesktop入门
命名卷(mysql-data) → 存在 C 盘的 WSL 虚拟磁盘里路径:\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes想放 D/E 盘 → 用 -v D:\文件夹:/var/lib/mysql。
2026-02-14 12:05:20
722
原创 docker 安装oracle
本文介绍了使用Docker部署Oracle数据库的实践指南。主要内容包括:常用Oracle镜像的阿里云和华为云拉取地址,11g/12c/19c等不同版本的启动命令示例,以及连接数据库的基本信息。实战部分详细演示了Oracle 11g的安装过程,包括镜像拉取、容器启动、密码修改和数据库连接步骤,并通过Sql Developer和命令行两种方式创建用户。最后提到数据持久化的重要性,建议将数据库文件挂载到宿主机目录以防止容器删除导致数据丢失。文章提供了完整的操作命令和截图说明,适合需要快速部署Oracle测试环境
2026-02-11 16:00:17
330
原创 window+wsl+dockerdesktop的关系
一般我们接触window下的docker的时候,首先想到的是docker desktop。最后,如果我们不需要界面的话,可以只装一个WSL,然后在里面安装linux和docker,并不需要docker desktop.(3)docker desktop是一个方便的,查看WSL里面docker的image,volumn等可视化的工具。(2)WSL是我们轻量级的VMWork,上面能装各种linux系统,我们开发的时候方便我们模拟docker。安装时候,输入用户名,密码,最后进入到linux系统。
2026-02-10 21:51:59
405
原创 WSL + Docker 实战技巧
核心联动:Docker Desktop启用WSL2后端 + WSL集成,无需单独安装Docker,性能最优;开发提效:VS Code远程WSL + Docker插件 + 命令别名,实现一站式开发;网络适配:用解决跨环境访问,复用Docker Desktop的镜像源/代理;排障关键:权限问题加docker组、端口问题重启WSL、资源问题限制内存/清理缓存。
2026-02-10 14:55:56
458
原创 WSL 相关命令时遇到了 “无法从raw.githubusercontent.com提取分发列表、操作超时
核心问题:国内网络屏蔽raw.githubusercontent.com,导致WSL无法获取发行版列表;最优方案:优先用方案1(手动指定发行版安装),无需改配置,1分钟搞定;永久修复:用方案2(修改hosts),适合需要管理多个WSL发行版的场景;兜底方案:用方案3(手动下载安装包),适配所有网络环境。按以上步骤操作后,你不仅能正常安装WSL,等命令也能正常执行,后续可正常使用WSL搭配Docker Desktop(如切换WSL 2后端),无需再担心网络超时问题。
2026-02-10 11:30:03
1561
原创 快速入门WSL
一键安装→配置WSL 2→掌握文件互通+基础命令,10分钟即可上手;核心优势:无需虚拟机,Windows/Linux无缝切换,完美适配Docker、开发环境;实用场景:运行Linux命令、搭建开发环境、和Docker Desktop联动、访问Linux服务器同款工具;后续进阶:可学习WSL的系统管理、图形界面配置、性能优化等,入门阶段先掌握基础操作即可。如果想先练手,建议先在WSL中安装Git、Node.js,尝试执行简单的Linux命令,快速熟悉环境。
2026-02-10 11:22:46
785
原创 centos安装配置jenkins【配置pipeline】
nvm(Node Version Manager)是Node.js版本管理工具,可一键安装/切换多个Node.js版本(如16.x/18.x/20.x),不污染系统环境,适合需要适配不同前端项目的场景。通过NodeSource官方YUM源安装,版本比CentOS自带源新,一键完成无依赖问题,安装后node/npm直接全局可用。,两种方式都能直接让node/npm命令全局可用,还会补充环境验证、npm源切换(解决下载慢)的操作。你需要在CentOS系统中安装Node.js(同时会自动安装npm),适配。
2026-02-06 12:49:51
1148
原创 jenkins踩坑指南
记住一个通用规则,如果改变的是windows里的,则要jenkins重启才能生效。当前所在的目录和环境变量PATH到底情况怎样,是导致我们脚本报错的重要原因。例如下面,表示开一个cmd窗口,cd到指定的目录,然后run build。因此,把当前的目录显示出来,PATH显示出来,为我们排错提供很大的帮助。如果发现PATH中没有自己要的路径,则到windows环境中添加目录。如果这样写,则jenkins开了两个cmd窗口。运行windows命令用bat,运行linux指令用sh。也可以达到&&的效果。
2026-02-03 18:21:14
304
原创 Jenkins的FreestyleProject发布springboot程序
本次基于Jenkins自由风格项目实现Spring Boot自动化部署的核心要点Git Plugin是基础,缺一不可;关键配置:全局工具(JDK/Maven)+ SSH远程连接(免密)是构建和部署的前提;核心步骤:「源码管理(拉取Git)→构建步骤(Maven打包)→构建后操作(SCP上传+远程命令)」三步完成全流程自动化;通用脚本:远程启动命令增加PID文件管理nohup守护进程,避免服务重复启动和进程挂掉;排查技巧:构建失败优先看控制台输出。
2026-01-31 22:10:32
1004
原创 Task进行CI/CD简单又适用
把其中的id_rsa.pub公钥。这个目录下就会生成一个Taskfile.yml,接下来我们就写补充我们自己的。因为ssh是需要输入密码的,我们是希望不需要中间人为干预,使用密钥认证。再看执行,结合3张图片,想必你已经看懂了。主要是在系统path中增加task的目录。执行的时候用task [名字]来执行。有基础的,我就不一句一句解释了。方法2:直接写字板打开复制粘贴。task的名字可以自己定义,可以定义多个task。
2026-01-26 17:45:11
174
原创 Error:Kotlin: incompatible version of Kotlin. metadata is 1.7.1, expected version is 1.1.16.
核心原因:项目Kotlin版本(1.1.16)与依赖的Kotlin编译版本(1.7.1)不兼容;修复关键:统一pom.xml/ build.gradle中的Kotlin版本到1.7.20(兼容1.7.1);升级IDEA的Kotlin插件版本≥1.7.0;清理旧编译产物,同步依赖;避坑要点:SpringBoot与Kotlin版本需匹配,纯Java项目也需显式引入兼容的Kotlin依赖。
2026-01-25 16:45:15
990
原创 完整的最小的VUE+Spring Cloud的微服务例子
网关是关键:Vue前端只调用网关9000端口,无需关心后端微服务端口,网关通过实现负载均衡;微服务通信:order-service通过OpenFeign调用user/product服务,Eureka提供服务发现;多实例部署:order-service通过启动时指定实现多实例,Eureka通过区分实例;跨域解决:网关配置globalcors允许前端跨域请求,无需前端额外处理。这套架构是微服务的标准入门方案,可在此基础上扩展:添加配置中心、熔断器、认证授权等功能。
2026-01-25 10:31:54
487
原创 Eureka(Spring Cloud原生注册中心,轻量易部署)
想体验标准注册中心:选「(Eureka)」,Spring Cloud原生,轻量易部署,完全替代Nacos的服务注册发现功能,无论选哪种,核心代码(业务逻辑、Feign调用)都无需大幅修改,仅需调整「服务地址获取方式」。
2026-01-25 08:45:32
413
原创 最简单的spring cloud微服务开始
以为例,拆分为3个最基础的独立微服务,基于Spring Cloud实现轻量架构,无复杂中间件,核心体现「微服务独立部署、职责单一、远程调用」的特点,新手易理解、可落地。
2026-01-25 07:53:33
630
原创 POM构造Spring boot多模块项目
多模块SpringBoot项目的核心是「父模块pom(管理依赖)+ 子模块jar(按分层拆分)<modules>;子模块关键:继承父模块 + 按需引入依赖 + 仅web模块作为启动模块;启动类必须扫描所有子模块的包,否则组件/Mapper无法被Spring容器识别。
2026-01-25 07:52:02
767
原创 在 MyBatis-Plus 跨表查询中,不用 VO
返回值直接设为Map或List<Map>// 单个结果:Map接收SELECT""")// 批量结果:List<Map>接收SELECT""")
2026-01-21 18:08:57
444
原创 MyBatis-Plus 跨表查询结果返回:4种方案(完整实战+代码)
跨表查询的结果通常包含多表字段,需创建VO(视图对象)// 设备+扫描日志 VO(包含跨表字段)@Data// 设备表字段// 设备ID(对应device.id)// 设备IP// 在线状态// 扫描日志表字段// 日志ID(对应scan_log.id)// 扫描结果// 扫描时间// 跨表查询:设备 + 最新扫描日志SELECTd.ip,d.status,""")// 批量查询(返回List)SELECTd.ip,d.status,""")
2026-01-21 18:00:46
366
原创 MyBatis-Plus 实体类自动生成数据库表(完整配置+实战)
适合新项目初始化,一键生成表+全套CRUD代码,自定义性强,推荐企业开发使用;:适合已有实体类的场景,仅需配置文件即可自动建表,轻量快捷;生产环境禁止使用策略,建议手动执行SQL建表,避免数据丢失;两种方案都适配你的 SpringBoot+JDK8/17 环境,可根据项目阶段选择。需要我帮你基于「UDP设备探测」场景,编写一份包含所有字段注释、索引的完整Device实体类,并生成对应的建表SQL吗?
2026-01-21 15:15:55
903
原创 MyBatis-Plus 核心编程教程
MyBatis-Plus 核心是「」,单表 CRUD 零代码,大幅提升开发效率;基础用法:实体类 → Mapper 继承 BaseMapper → Service 继承 IService,直接调用内置方法;高级用法:分页插件、条件构造器、自动填充、逻辑删除是开发高频功能;复杂查询:兼容 MyBatis 原生注解/XML 写法,无需放弃原有 MyBatis 代码。
2026-01-21 14:47:13
665
最小的Vue+Spring-gateway+eurake的微服务例子
2026-01-25
pyside6+yolov8编写的一个特征检测的程序,可以检测图片和视频
2024-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅