- 博客(94)
- 资源 (9)
- 收藏
- 关注
原创 线性回归(Linear Regression)
线性回归是一种强大且基础的工具,广泛应用于各种领域的数据分析与预测。(Linear Regression)是一种基本且广泛应用的统计分析方法,用于建立自变量(预测变量)与因变量(响应变量)之间的线性关系模型。通过线性回归,可以预测因变量的值,理解变量之间的关系强度,以及评估模型的准确性。线性回归假设自变量和因变量之间存在线性关系,即因变量可以表示为自变量的线性组合加上一个误差项。考虑一个更复杂的场景,预测房价(因变量)基于房屋面积和房间数(自变量)。:预测值与实际值之差的平方的平均值。:仅包含一个自变量。
2026-10-12 20:48:18
289
原创 从零理解梯度下降的决策逻辑
导数情况含义参数微调方向一句话记忆正数当前在上坡段,增大参数会更糟减小顺负梯度方向走下坡负数当前在下坡段,增大参数会更好增大减号自动处理两种情况零当前是平的不确定平 ≠ 最优导数的符号告诉你"往哪边调",导数的大小告诉你"坡有多陡"。前者决定方向,后者影响步长。梯度下降公式中的减号,把"导数为正减参数、为负增参数"两种情况统一成了一条规则。理解了这个减号,就理解了梯度下降的核心。方向判断只在"小步调整"时可靠。学习率太大,方向正确也可能翻车;
2026-09-30 11:50:06
246
原创 零基础理解链式法则与反向传播(Backpropagation)
导数告诉我们:改变某个参数,损失会怎么变。链式法则告诉我们:隔着多个计算步骤,影响该怎么计算。反向传播把这些计算组织起来,高效地得到整个网络所需的参数梯度。一句话总结:神经网络先算出自己错得有多严重,再通过反向传播算出参数该如何影响损失,最后由优化器调整参数,逐步改善预测。
2026-09-29 21:15:28
266
原创 从 FLV 结构到 Enhanced RTMP:一个流媒体容器的演进
回顾全文,FLV 的设计哲学是极致的简单:一个 9 字节文件头,加上一串"11 字节头 + 负载 + 长度回指"的 Tag,就构成了整个容器。这种简单让它在 Flash 消亡后依然活跃于直播领域,但也把编码能力锁死在了几个 4 位字段里。容器层零改动:文件头、Tag 头、PreviousTagSize 原封不动,Enhanced FLV 在文件结构上仍是合法 FLV;负载层重构:引入IsExHeader标志位、统一的PacketType体系和 4 字节FourCC。
2026-09-23 16:06:04
182
原创 Opus In-Band FEC 详解:原理、实现与开源方案
libopus 是 Opus 官方参考实现,适合嵌入式设备、自定义协议和音频 SDK。使用它需要自己处理传输和调度,核心原理如下。编码端通过编码器控制接口允许使用带内 FEC;设置预期丢包率(百分比),供编码器调整抗丢包策略。这个值通常应根据网络反馈动态调整,而不是长期固定。传统 in-band FEC 基于SILK 的 LBRR机制,只适用于包含 SILK 层的编码模式(语音场景);纯 CELT 模式不支持,因此不应使用低延迟(restricted lowdelay)应用模式来做 FEC。
2026-09-23 10:53:22
155
原创 s6-overlay - 装在 Docker 容器里的轻量级管家
可以把它不是容器编排工具,也不是完整的 systemd,而是专门适合容器的一套初始化和进程监管方案。下面以为例讲解。
2026-09-12 11:17:34
163
原创 GStreamer:使用 Meson devenv 管理运行环境
从源码编译 GStreamer 后,即使编译成功,直接执行或也可能报错。可以为当前构建目录准备一套匹配的运行环境,让程序使用刚编译的组件,而不是意外混入系统版本。
2026-09-09 20:17:55
107
原创 FFmpeg -force_key_frames 完全指南:五种模式详解
模式写法触发依据典型场景显式列表0,5.5,12.3固定时间点已知精确位置表达式逐帧求值固定间隔、HLS 切片章节输入章节元数据章节化内容精确切割跟随源source输入帧的关键帧标志已编码输入的转码跟随源(防丢)同上,丢帧时顺延带帧率转换的转码。
2026-08-31 17:12:26
366
原创 深入浅出:视频技术中的 PAR、DAR 与 SAR
分辨率之比——文件里"存了多少像素",由分辨率天然决定,无需元数据;SAR(= PAR)——每个像素"长什么样",是必须正确写入文件的元数据;两者相乘,才是观众最终看到的DAR。标清时代的非方形像素设计正在退出历史舞台,但只要还需要处理 DVD 存档、广播电视素材或老式摄像机文件,这套知识体系就依然不可或缺。下次再遇到画面变形的问题,记得先检查这几个比值——答案往往就藏在其中。
2026-08-21 11:06:47
283
原创 RTSP协议中的时间戳管理
三层分工:RTSP管会话定位,RTP管流内时序,RTCP管跨流同步RTP时间戳基于采样时钟、随机初始值、按采样数递增;同帧分片共用时间戳RTCP SR提供RTP↔NTP锚点,是唇同步的唯一桥梁;宜尽早发送首个SRRTP-Info提供seek后的初始映射,缺失会拖慢起播回绕(用int32差值比较)、漂移(ppm级累积,需重新锚定)、抖动(时间戳驱动播放 + 自适应缓冲)参考规范:RFC 3550(RTP/RTCP)、RFC 2326(RTSP)、RFC 6184(H.264 RTP负载)
2026-07-28 21:09:00
323
原创 从开发到部署:React + FastAPI 前后端分离的完整链路
前端最终交给浏览器运行的,是 Vite 构建后的静态文件;这些文件通过相对路径/api/发请求,由 Nginx(生产)或 Vite proxy(开发)转发给 FastAPI。前端代码全程不关心后端的真实地址,服务于开发阶段的即时预览,产出真正部署的静态资源。
2026-07-15 20:43:03
415
原创 ONVIF WS-Discovery 发现服务介绍
ONVIF WS-Discovery 是 ONVIF(Open Network Video Interface Forum,开放式网络视频接口论坛)标准中用于在局域网内自动发现网络视频设备(如 IP 摄像机、NVR 等)的核心机制。它基于 OASIS 制定的协议规范,让客户端无需预先知道设备的 IP 地址就能找到网络上的 ONVIF 兼容设备。
2026-07-02 16:46:39
426
原创 视频编码中的 Warped Motion:用仿射变换征服复杂运动
Warped Motion 通过仿射变换突破了传统平移模型的限制,能精确建模旋转、缩放、剪切等复杂运动,在运动剧烈场景(镜头变焦、旋转)中显著提升压缩效率。技术要点回顾数学基础:6 参数仿射变换 = 2×2 线性矩阵(旋转/缩放/剪切)+ 2 维平移向量参数表示:AV1 用全局/局部参数,VVC 用 2/3 个控制点运动矢量插值滤波:多相位(64 相位)、8 抽头、可分离两阶段滤波是实现核心设计权衡:在锐利度、抗混叠、计算复杂度之间平衡架构选择。
2026-06-03 15:53:29
373
原创 深入理解长期参考帧(LTR):从原理到工程实践
H.264/HEVC 允许一帧在预测时从多个已解码帧当前帧 P 的某个块,可以从下面任选参考:↑ ↑ ↑ ↑ ↑不同块可以指向不同的参考帧(通过 ref_idx 索引指定)参考帧数量由控制,每个块通过ref_idx选择具体参考哪一帧。应用场景主策略LTR 更新频率核心目标监控视频背景建模低(光照变化时)省码率视频会议/RTC反馈 + 周期中(依赖丢包反馈)抗丢包、低延迟影视/点播场景检测跟随镜头切换压缩效率直播周期 + 反馈固定间隔鲁棒性屏幕共享长期相似度内容回归时。
2026-06-02 19:31:25
344
原创 分层 B 帧(Hierarchical B-frames)详解
压缩效率显著提升(10%~20% 码率节省)天然支持时域可伸缩性灵活的质量-码率权衡(通过 QP 偏移)适合随机访问场景编码延迟大(需要缓存整个 GOP)DPB 需求更大,内存占用高编码复杂度增加(更多参考帧候选)不适合超低延迟场景(如实时视频通话,通常使用 IPPP 或低延迟 B 结构)
2026-06-02 19:30:45
260
原创 分层 B 帧(Hierarchical B-frames)详解
压缩效率显著提升(10%~20% 码率节省)天然支持时域可伸缩性灵活的质量-码率权衡(通过 QP 偏移)适合随机访问场景编码延迟大(需要缓存整个 GOP)DPB 需求更大,内存占用高编码复杂度增加(更多参考帧候选)不适合超低延迟场景(如实时视频通话,通常使用 IPPP 或低延迟 B 结构)
2026-06-02 16:40:14
239
原创 两种 AAC 码流封装详解:Raw(ASC) vs ADTS
│ AAC帧1 │ │ AAC帧2 │ │ AAC帧3 │ ← 只有纯音频数据每一帧只有纯压缩音频数据,没有任何头部信息帧与帧之间没有同步标记码流本身无法自我描述(不知道采样率、声道数等)配置信息被单独抽出来,存放在一个叫ASCASC(通常 2 字节,也可能更长):ASC 示例(常见的0x12 0x10AAC LC 44.1kHz 立体声(音频数据传输流)每一帧前面都加一个同步头│ADTS头(7/9)│ AAC数据 │ │ADTS头(7/9)│ AAC数据 │每一帧都自带头部信息。
2026-06-02 15:00:28
218
原创 Intra-refresh 的具体实现机制
Intra-refresh 本质:用一道在画面上匀速移动的"Intra 刷新波"替代周期性 IDR,把刷新成本均摊到多帧。三大技术支柱刷新波推进:每帧强制若干列为 IntraMV 边界约束:clean 区禁止引用 dirty 区(核心难点):告知解码器恢复时机需要继续深入?HEVC 中 Intra-refresh 的差异(CTU 结构、wavefront 影响)MV 约束算法的具体实现细节与边界 caseIntra-refresh + 丢包反馈的联合错误恢复策略。
2026-06-01 21:12:26
180
原创 低延迟场景下的 VBV 优化(Sub-frame 级控制)
核心要点:低延迟下 VBV buffer 缩小到接近单帧,必须把码率控制粒度从「帧」下沉到「行/slice」,通过实时预测帧最终大小 + 行级 QP 反馈调整来保证缓冲区不溢出,同时配合消除 I 帧尖峰。
2026-06-01 21:09:29
217
原创 Capped-CRF:直播场景下“质量优先、码率封顶“的混合策略
Capped-CRF = CBR 的安全下限(不会卡顿)+ CRF 的画质上限(简单场景不浪费、整体更均衡)。它在"保证流畅"的前提下,把 CBR 浪费掉的比特省了下来,平均码率往往显著低于纯 CBR,而画质还更好。│ Capped-CRF 策略全景 ││ ││ 核心思想:CRF 打底 + cap 封顶 ││ 平时按恒定质量编码,码率撞到上限才限制 ││ ││ 实现方式:CRF + VBV 叠加 ││ ││ 三个参数: ││ • CRF 值 → 质量底线 │。
2026-06-01 21:03:06
305
原创 VBV 缓冲区:精确数学建模与防溢出算法
│ VBV 缓冲区建模全景 ││ ││ 核心方程(水位递推): ││ ││ 两条红线: ││ • 下溢(卡顿):b_{i+1} ≤ F_i + R·T ││ • 上溢(丢数据):b_{i+1} ≥ F_i + R·T - B ││ ││ 每帧安全区间: ││ ││ 初始延迟:τ ≈ B/R (大B稳但延迟高) ││ ││ 防溢出算法: ││ • 预算向半满拉拢(负反馈) ││ • 紧急时:抬QP / 丢帧 / 填充比特 ││ • 帧内滚动 VBV 控制 ││ │。
2026-06-01 20:47:17
288
原创 λ 的标定:从理论到经验公式的完整推导
│ λ 标定的完整推导链 ││ ││ ① 最优化条件 ││ J = D + λR 求极值 ⟹ λ = -dD/dR ││ │ ││ ② 失真模型(量化误差均匀分布) ││ │ ││ ③ 码率模型(高码率信息熵) ││ │ ││ ④ 合并 ②③ 代入 ① ││ │ ││ ⑤ 引入 QP(Qstep ∝ 2^(QP/6)) ││ │ ││ ⑥ 度量适配(SAD 是一阶,SSD 是二阶) ││ │λ\lambdaλ的标定,完美体现了视频编码"理论指方向、实验定参数。
2026-06-01 20:44:41
333
原创 λ 与码率控制(CBR/VBR):编码器如何“边走边调“
│ λ 与码率控制的联动全景 ││ ││ 目标码率/质量 ││ │ ││ ▼ (R-Q 模型 / λ-domain:λ = α·R^β) ││ 码率控制算出 λ ──────► RDO 用 λ 做决策 ││ ▲ │ ││ │ ▼ ││ └──── 实际码率反馈 ◄─── 编码产出 ││ ││ 约束差异决定模式: ││ • CBR:强约束 + VBV 缓冲区,λ 调节激进 ││ • VBR:弱约束,只保平均,λ 看长远 ││ • CRF:控质量不控码率,λ 维持恒定质量 │。
2026-06-01 20:43:56
188
原创 深入 AV1:率失真优化(RDO)的实战架构
│ AV1 RDO 架构 = 分层决策树 + 激进剪枝 ││ ││ ① 划分层:10 种 partition 递归搜索(最耗时) ││ ② 模式层:60+ 帧内 / 数十种帧间 + 特色工具 ││ ③ 变换层:变换尺寸 + 16 种变换类型 ││ ④ 量化层:RDOQ / Viterbi 网格寻优 ││ ││ 每一层都用统一的 J = D + λ·R 打分 ││ ││ 复杂度管理(灵魂): ││ • Speed 档位总控 ││ • SATD 粗筛 + 早期终止 + 各类剪枝 │。
2026-06-01 20:37:03
289
原创 通俗讲透视频编码的“大脑“:率失真优化(RDO)
如果把视频编码器比作一个人,那么**率失真优化(Rate-Distortion Optimization,简称 RDO)**就是它的"大脑"。我们平时看视频时,编码器在背后默默做了无数个选择:这块画面该怎么切分?用哪种预测方式?运动矢量怎么定?变换和量化怎么做?这些大大小小的决定,几乎全都由 RDO 来拍板。那 RDO 到底在纠结什么呢?其实就一句话:这篇文章,我们就从最直观的角度,把这套看似复杂的数学框架彻底讲明白。视频压缩本质上是"有损压缩"——为了把文件变小,我们不得不丢掉一些信息。这里有两个天生对立
2026-06-01 20:34:37
319
原创 AV1 变换编码:流程位置、量化关系与压缩增益
│ 变换:空域 → 频域,能量集中(无损) ││ ↓ ││ 量化:丢弃高频细节(有损,失真来源) ││ ↓ ││ 二者配合:实现高效压缩 ││ ││ QP ↑ → Qstep ↑ → 失真↑ 码率↓ ││ QP ↓ → Qstep ↓ → 失真↓ 码率↑ │关键要点:变换本身不损失信息(理论可逆),损失发生在量化变换是为量化服务的——能量集中后量化才高效AV1 通过变换类型、尺寸、量化参数的联合 RDO实现最优压缩量化是编码质量与码率权衡的总开关。
2026-06-01 19:57:14
464
原创 微积分概念在机器学习与AI中的应用
微积分概念AI中的关键应用导数参数敏感度、单变量优化偏导数神经网络每个参数的梯度计算梯度梯度下降、Adam等所有主流优化器链式法则反向传播算法(深度学习核心)Hessian(二阶偏导)牛顿法、损失景观分析方向导数对抗攻击、可解释性全微分灵敏度分析、不确定性估计积分概率期望、VAE、扩散模型、强化学习偏微分方程PINN、神经ODE、扩散模型理论如果说线性代数是机器学习的"语言",那么微积分(特别是偏导数和梯度)就是机器学习的"引擎"——没有它,模型就无法"学习"。
2026-05-19 17:24:54
327
原创 gRPC C++ Callback API(Reactor 模式)介绍
同步 API异步 API(CompletionQueue)其中,是一种更偏现代事件驱动风格的接口。你不需要自己维护你不需要自己写复杂的事件轮询循环你只需要实现一组“事件回调”方法当读、写、结束、取消等事件发生时,gRPC 会回调你的对象在 gRPC C++ 中,这种写法通常通过Reactor基于 Reactor 模式的 Callback API从设计模式角度看,Reactor 模式底层框架负责监听事件当事件发生时,分发给对应的处理器处理器根据事件执行逻辑并推进状态。
2026-05-09 21:21:27
532
原创 Lamport Clock(兰伯特逻辑时钟)在celery中的应用
Lamport Clock 由 Leslie Lamport 在 1978 年提出。在不依赖物理时钟的前提下,为分布式系统中的事件建立因果序(happened-before relation)。进程内递增:进程在发生本地事件之前,递增自己的计数器。发送携带:进程发送消息时,将当前计数器值附加到消息中。接收同步max自身值消息中的值1max(自身值, 消息中的值) + 1max自身值消息中的值1。它简单:只需一个整数和一把锁。它强大:解决了乱序、时钟漂移和因果溯源问题。它克制。
2026-04-09 16:27:59
431
1
原创 以worker ping为例解释celery control命令
可选设置 ,然后调用 。 固定传 ,表示"发命令 + 等回包"。返回值经过 处理。关键步骤:这些默认值来自 :AMQP 核心配置总结: 做了以下关键事情:当 时,创建 reply 队列:构建控制消息:发布到 fanout Exchange:等待回复:前提条件:Pool 类型决定 Pidbox 实现选择:关键:,这是一个全局字典,存储所有远程控制命令的处理函数。 是 ,它: 装饰 函数时,等价于调用 ,将 函数注册到 。 是 ,其逻辑大致为:从测试 可以验证:
2026-04-08 11:20:25
407
1
原创 gstreamer 编译安装intel vaapi 插件
是由 Intel 主导的开源视频加速框架,允许 GStreamer、FFmpeg 等应用利用 GPU 加速视频编解码操作。显著降低 CPU 使用率提升解码 / 编码速度改善功耗性能主要支持 Intel、AMD、NVIDIA 等主流 GPU。优化项效果体积减少~40%构建时间缩短~50%依赖库减少无需 X11 / Wayland / GL部署更轻量适合服务器与容器环境特性完整版 (含预览 GUI)精简版 (无 GUI)图形显示与实时预览✅ 支持❌ 禁用✅ 启用。
2025-11-03 21:23:37
295
原创 使用CLion进行远程开发(Remote with local sources 模式)
在Windows上使用CLion连接远程Ubuntu服务器进行开发,可以让你在享受Windows系统便利的同时,拥有Linux的编译和运行环境。下面是配置步骤指南。
2025-10-24 20:14:35
1785
原创 从 Wireshark 抓包文件中提取 GB28181 协议中提取RTP负载 (PS)
从 Wireshark 抓包文件中提取 GB28181 协议中的 RTP PS 负载,关键在于将 PS 流数据从RTP 的封装中“剥离”出来。由于 GB28181 可能使用被动模式传输媒体流,且 Wireshark 可能无法自动识别 TCP 承载的 RTP 包,你需要手动引导 Wireshark 正确解析。
2025-09-26 20:06:54
140
原创 MPEG PS(Program Stream)介绍
MPEG PS(Program Stream)是MPEG-2标准(ISO/IEC 13818-1)中定义的一种,主要用于将音视频等基本流复用为一个单一数据流,以便于存储或传输。🧱MPEG PS封装的核心思想是将包打包成。PES包本身是由原始的(如H.264视频流或G.711音频流)加上PES包头(包含时间戳等信息)封装而成的。
2025-09-22 20:35:07
286
原创 Keepalived 负载均衡
Keepalived 可以与 LVS(Linux Virtual Server)结合,提供强大的四层负载均衡功能。它通过 IPVS(IP Virtual Server)内核模块实现高性能的负载分发。会话保持(Session Persistence)适用于需要。这两个服务在 Keepalived 中通过分别定义不同的。,各自的健康检查、调度算法和会话保持配置都可以独立设置。三元组建立映射的,因此。由于 IPVS 是基于。
2025-09-12 15:43:05
567
原创 VRRP 多节点工作原理
VRRP 的多节点支持使得它非常适合构建高可用集群,不仅限于简单的主备模式,可以根据实际需求灵活配置。当 Master 故障时,优先级最高的 Backup 会接管成为新的 Master。
2025-09-11 21:24:02
473
原创 介绍keepalived和LVS
Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)实现的高可用解决方案,主要用于防止单点故障。LVS 是 Linux 内核中的负载均衡解决方案,通过 IPVS(IP Virtual Server)模块实现四层负载均衡。
2025-09-11 21:19:45
491
当gstreamer 实例大于CPU数量时,单个gstreamer实例的CPU占有率大幅提升
2025-05-27
autotools a practitioner's guide to gnu autoconf automake and libtool
2017-12-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅