前言
在上一小节,我们实现了基于TenosRT的推理加速,在本小节,我们将汇总第一章节的视频展示系统,实现8路视频满帧分析,并封装为完整的工程化代码。具体参考代码git仓库video_system。
一、基本回顾
1.1 视频展示系统
- 视频展示系统采用pyav以软解码的方式实现了8路RTSP视频流的拉取,并在屏幕上实现8路视频的实时显示

- 同时采用接口的方式进行了开启和关闭的封装
- 添加视频流
接口: POST /streams/{stream_id}
- 启动指定视频流
接口: POST /streams/{stream_id}/start
- 停止指定视频流
接口: POST /streams/{stream_id}/stop
- 删除视频流
接口: DELETE /streams/{stream_id}
1.2 基于TensorRT的推理封装
第二章节我们详细介绍了基于ultralytics、onnxruntime以及TensorRT的模型推理,以实验的方式介绍了各个推理工具的优缺点。通过该实验,我们验证了TensorRT具备以下优势:
- 更快的推理速度。相比ultralytics和onnxruntime,最大并发推理帧率可提升约2倍。
- 更低的资源占用。相比ultralytics和onnxruntime,设备利用率可提升约200%。
二、video system的设计与实现
2.1 推理引擎的设计
- 这个设计展示了TrtModel类的结构、与其他组件的关系以及推理过程的流程。类使用了线程安全设计和缓存机制来提高性能,同时提供了完整的预处理、推理和后处理功能。但是也存在以下弊端:
- 缺少合适的多模型推理机制。 如果需要一路分析多个算法和模型,目前的运行机制尚不完全满足。
- 缺少合适的多结果展示机制。 当前所有通道均为一个模型,如果存在多模型推理,如何展示不同推理模型的结果是个问题。
- 没有克服python GIL锁的限制。 受限于编程语言,多线程执行存在python GIL锁的限制。
- 缺少合适的进程池封装。 没有采用合适的多进程-多模型设计来进一步提高分析的帧率。
2.2 拉流引擎的设计
- 拉流引擎使用了多线程处理视频流解码,支持智能重连机制和与AI推理模块的集成。设计还展示了帧处理流程和状态管理机制。
2.3 主体服务的设计
主服务设计展示了一个完整的多路视频流处理管道,从视频流输入到AI推理再到结果展示和报警处理。系统采用了分层架构,各组件职责明确,通过FastAPI提供统一的管理接口,支持动态配置和扩展。
2.4 代码展示
- 由于本章节涉及的代码较多,请参考github仓库获取完整的代码,对于环境的安装,请参考之前小节的内容。
总结
我们已经完成了一个监控系统应有的部分,包括视频流的管理、基本的AI视频分析功能。但是随着生产需要和新技术的迭代,现有的系统仍需在智能化、实时性、扩展性以及多模态数据分析等方面进行深化和拓展。
接下来的工作重点将围绕以下几个方向展开:
算法模型优化与迭代
系统性能与实时性提升
平台扩展性与集成能力
数据管理与智能分析
用户体验与可视化
通过这些改进,系统将不仅满足当前的生产监控需求,也为未来的技术演进和应用场景拓展奠定坚实基础。我们致力于打造一个更智能、高效、易用的下一代监控分析平台。
后续内容预告
- 报警信息的推送与分析画面的推流
- 大模型赋能系统平台
- 新的算法提升监控的生命力