2. 基础知识

在正式进入旭日(Sunrise)平台的视频流部署之前,需要先把“视频流从摄像头到 BPU 推理结果”这条链路上的基本概念、常见术语和典型应用场景梳理清楚。很多初学者一上来就写代码调用接口,结果遇到花屏、卡顿、推理结果错位等问题时无从下手,根本原因是对底层数据形态和术语缺乏统一认知。本节将围绕 RTSP、解码、抽帧、BPU 推理四个核心环节,建立一套可复用的知识框架。

一、核心原理:视频流处理链路

一条完整的智能视频分析链路,本质上是“压缩码流 → 原始图像 → 张量 → 推理结果”的逐级转换过程。摄像头采集到的画面经过 H.264/H.265 编码压缩后,通过 RTSP 协议以 RTP 包的形式在网络中传输;接收端拿到的是 NALU(网络抽象层单元)组成的压缩码流,必须经过解码才能还原成 YUV 或 RGB 的原始帧;随后按业务需求进行抽帧(降采样),把连续帧变成稀疏的关键帧序列;最后将图像缩放到模型输入尺寸,送入 BPU 执行神经网络推理,输出检测框、分类标签或分割掩码。

理解这条链路的关键在于:每一级的输出都是下一级的输入,任何一级的参数不匹配都会导致后续环节异常。例如解码输出的分辨率与模型输入尺寸不一致,就需要做 resize;抽帧间隔设置过大,会漏掉快速移动的目标;BPU 输入张量的排布格式(NCHW/NHWC)与模型要求不符,推理结果就会完全错乱。

视频流智能分析链路:从 RTSP 到 BPU 推理 摄像头 / IPC H.264 / H.265 RTSP 推流 RTSP 拉流 RTP / NALU 码流缓冲 硬件解码 VPU / 软解 YUV / NV12 抽帧 / 缩放 间隔 / 分辨率 RGB / Tensor BPU 推理 检测 / 分类 输出结果 压缩码流 RTP 包序列 原始帧 稀疏帧 结构化结果 关键参数与常见取值 RTSP 地址 rtsp://ip:554/stream 解码输出格式 NV12 / YUV420P 抽帧间隔 每 5~30 帧取 1 帧 模型输入尺寸 1×3×224×224 链路要点:解码分辨率决定抽帧质量;抽帧间隔决定算力占用;输入张量排布必须与模型一致,否则推理结果错位。 常见异常:花屏(解码失败)、卡顿(缓冲不足)、漏检(抽帧过疏)、结果错乱(张量格式不匹配)。

二、常见术语速查

下面这张清单覆盖了本课程后续会反复出现的术语,建议先建立印象,后续章节会逐一展开。

术语 含义 在本课程中的位置
RTSP 实时流传输协议,用于控制音视频流的播放、暂停、拉取 视频接入层
RTP / NALU RTP 承载音视频包,NALU 是 H.264/H.265 的编码单元 码流传输与解析
VPU 视频处理单元,负责硬件编解码,降低 CPU 占用 解码加速
YUV / NV12 解码后的原始图像格式,NV12 是 YUV420 的一种排布 解码输出
抽帧 从连续视频帧中按间隔取出部分帧,降低计算量 预处理
BPU 旭日平台的神经网络加速单元,执行模型推理 推理执行
NCHW / NHWC 张量维度排布方式,影响模型输入数据的组织 推理输入
ROI 感兴趣区域,只对画面局部做推理以节省算力 业务优化

三、方法流程:一次完整推理的步骤

把上面的链路拆成可操作的步骤,便于后续写代码时对照检查:

  1. 建立 RTSP 连接:使用 OpenCV、FFmpeg 或平台 SDK 打开 rtsp:// 地址,设置超时与缓冲策略。
  2. 读取压缩码流:从连接中持续读取 RTP 包,按 NALU 边界重组出完整帧。
  3. 解码为原始帧:调用 VPU 或软解接口,输出 NV12/YUV 图像,记录分辨率与帧率。
  4. 抽帧与缩放:按业务间隔取帧,resize 到模型输入尺寸,并做归一化。
  5. 张量排布转换:将图像数据整理为模型要求的 NCHW 或 NHWC 格式。
  6. BPU 推理:调用推理接口,获取输出张量,解析为检测框或分类结果。
  7. 后处理与上报:做 NMS、坐标还原、业务过滤,再上报或存储。

提示:实际部署中,第 1~3 步通常由平台的多媒体框架统一封装,开发者更多关注第 4~7 步的参数配置。但一旦出现花屏或卡顿,问题往往出在前三步,因此理解整条链路仍然必要。

四、应用场景与误区复盘

这套技术组合的典型应用场景包括:园区安防(周界入侵、人员聚集检测)、交通路口(车辆识别、违章抓拍)、工业质检(产线缺陷检测)、零售分析(客流统计、热区分析)。不同场景对抽帧间隔和分辨率的要求差异很大:交通场景目标移动快,抽帧间隔要小;零售客流统计目标移动慢,可以适当放大间隔以节省算力。

初学者最常见的三个误区:

  • 误区一:抽帧越密越好。抽帧过密会让 BPU 长期满载,帧队列堆积,反而导致整体延迟升高。应根据目标运动速度和业务响应要求选择间隔。
  • 误区二:忽略张量格式。模型训练时用的是 NCHW,部署时却按 NHWC 填充数据,推理结果会完全错乱,且不易察觉。
  • 误区三:不做坐标还原。推理是在缩放后的图像上进行的,检测框坐标必须按比例映射回原始分辨率,否则画面上框的位置会偏移。

排障建议:遇到异常时,按“码流是否正常 → 解码是否成功 → 抽帧是否命中 → 张量格式是否匹配 → 坐标是否还原”的顺序逐级排查,可以快速定位问题所在环节,避免盲目修改参数。