2. 基础知识
在正式进入旭日(Sunrise)平台的视频流部署之前,需要先把“视频流从摄像头到 BPU 推理结果”这条链路上的基本概念、常见术语和典型应用场景梳理清楚。很多初学者一上来就写代码调用接口,结果遇到花屏、卡顿、推理结果错位等问题时无从下手,根本原因是对底层数据形态和术语缺乏统一认知。本节将围绕 RTSP、解码、抽帧、BPU 推理四个核心环节,建立一套可复用的知识框架。
一、核心原理:视频流处理链路
一条完整的智能视频分析链路,本质上是“压缩码流 → 原始图像 → 张量 → 推理结果”的逐级转换过程。摄像头采集到的画面经过 H.264/H.265 编码压缩后,通过 RTSP 协议以 RTP 包的形式在网络中传输;接收端拿到的是 NALU(网络抽象层单元)组成的压缩码流,必须经过解码才能还原成 YUV 或 RGB 的原始帧;随后按业务需求进行抽帧(降采样),把连续帧变成稀疏的关键帧序列;最后将图像缩放到模型输入尺寸,送入 BPU 执行神经网络推理,输出检测框、分类标签或分割掩码。
理解这条链路的关键在于:每一级的输出都是下一级的输入,任何一级的参数不匹配都会导致后续环节异常。例如解码输出的分辨率与模型输入尺寸不一致,就需要做 resize;抽帧间隔设置过大,会漏掉快速移动的目标;BPU 输入张量的排布格式(NCHW/NHWC)与模型要求不符,推理结果就会完全错乱。
二、常见术语速查
下面这张清单覆盖了本课程后续会反复出现的术语,建议先建立印象,后续章节会逐一展开。
| 术语 | 含义 | 在本课程中的位置 |
|---|---|---|
| RTSP | 实时流传输协议,用于控制音视频流的播放、暂停、拉取 | 视频接入层 |
| RTP / NALU | RTP 承载音视频包,NALU 是 H.264/H.265 的编码单元 | 码流传输与解析 |
| VPU | 视频处理单元,负责硬件编解码,降低 CPU 占用 | 解码加速 |
| YUV / NV12 | 解码后的原始图像格式,NV12 是 YUV420 的一种排布 | 解码输出 |
| 抽帧 | 从连续视频帧中按间隔取出部分帧,降低计算量 | 预处理 |
| BPU | 旭日平台的神经网络加速单元,执行模型推理 | 推理执行 |
| NCHW / NHWC | 张量维度排布方式,影响模型输入数据的组织 | 推理输入 |
| ROI | 感兴趣区域,只对画面局部做推理以节省算力 | 业务优化 |
三、方法流程:一次完整推理的步骤
把上面的链路拆成可操作的步骤,便于后续写代码时对照检查:
- 建立 RTSP 连接:使用 OpenCV、FFmpeg 或平台 SDK 打开
rtsp://地址,设置超时与缓冲策略。 - 读取压缩码流:从连接中持续读取 RTP 包,按 NALU 边界重组出完整帧。
- 解码为原始帧:调用 VPU 或软解接口,输出 NV12/YUV 图像,记录分辨率与帧率。
- 抽帧与缩放:按业务间隔取帧,resize 到模型输入尺寸,并做归一化。
- 张量排布转换:将图像数据整理为模型要求的 NCHW 或 NHWC 格式。
- BPU 推理:调用推理接口,获取输出张量,解析为检测框或分类结果。
- 后处理与上报:做 NMS、坐标还原、业务过滤,再上报或存储。
提示:实际部署中,第 1~3 步通常由平台的多媒体框架统一封装,开发者更多关注第 4~7 步的参数配置。但一旦出现花屏或卡顿,问题往往出在前三步,因此理解整条链路仍然必要。
四、应用场景与误区复盘
这套技术组合的典型应用场景包括:园区安防(周界入侵、人员聚集检测)、交通路口(车辆识别、违章抓拍)、工业质检(产线缺陷检测)、零售分析(客流统计、热区分析)。不同场景对抽帧间隔和分辨率的要求差异很大:交通场景目标移动快,抽帧间隔要小;零售客流统计目标移动慢,可以适当放大间隔以节省算力。
初学者最常见的三个误区:
- 误区一:抽帧越密越好。抽帧过密会让 BPU 长期满载,帧队列堆积,反而导致整体延迟升高。应根据目标运动速度和业务响应要求选择间隔。
- 误区二:忽略张量格式。模型训练时用的是 NCHW,部署时却按 NHWC 填充数据,推理结果会完全错乱,且不易察觉。
- 误区三:不做坐标还原。推理是在缩放后的图像上进行的,检测框坐标必须按比例映射回原始分辨率,否则画面上框的位置会偏移。
排障建议:遇到异常时,按“码流是否正常 → 解码是否成功 → 抽帧是否命中 → 张量格式是否匹配 → 坐标是否还原”的顺序逐级排查,可以快速定位问题所在环节,避免盲目修改参数。