# BXC_VideoAnalyzer_v2 **Repository Path**: yuturuishi/BXC_VideoAnalyzer_v2 ## Basic Information - **Project Name**: BXC_VideoAnalyzer_v2 - **Description**: C++开发的视频行为分析系统v2版本 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 69 - **Forks**: 66 - **Created**: 2024-05-02 - **Last Updated**: 2026-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp, yolo5, ffmpeg, Windows, Linux ## README # 视频行为分析系统 v2(BXC_VideoAnalyzer_v2) * 官网:https://www.yuturuishi.com * 哔哩哔哩主页:https://space.bilibili.com/3707026471389492 * gitee开源地址:https://gitee.com/yuturuishi/BXC_VideoAnalyzer_v2 ## 相关视频链接 * 视频行为分析系统v1 开山之作:https://www.bilibili.com/video/BV1ZShy6vEMG * 视频行为分析系统v2 介绍:https://www.bilibili.com/video/BV17Shy6iEYQ ## 软件版本 * v1版本开源地址:https://gitee.com/yuturuishi/BXC_VideoAnalyzer_v1 * v2版本开源地址:https://gitee.com/yuturuishi/BXC_VideoAnalyzer_v2 ## 项目简介 视频行为分析系统是一套基于视频流的目标检测与报警联动开源方案,覆盖「拉流 -> 解码 -> 算法分析 -> 合成报警视频 -> 编码 -> 推流 -> Web 管理」的完整业务链路,可作为智慧安防、视频 AI 分析的参考实现与学习案例。v2 在 v1 基础上重构,默认兼容 Linux,并精简了代码结构、提升了可读性。 ## 功能特性 - 视频推拉流:支持 RTSP 等视频流接入,对接 ZLMediaKit 流媒体服务。 - 编解码:基于 ffmpeg 实现视频解码与编码。 - 目标检测:内置 YOLOv5 与 SSD 目标检测算法(Python 算法服务对外提供接口)。 - 报警联动:实时分析并合成报警视频。 - Web 管理:基于 Django 的后台管理端,提供配置与看板。 - 跨平台:v2 默认支持 Windows 与 Linux(Analyzer_v2 兼容 Linux)。 ## 系统架构 (1)Analyzer_v2: 基于C++开发的视频分析器模块,主要实现视频流的推拉流和编解码,兼容 Linux (2)Admin_v2: 基于Python开发的后台管理模块(跨平台) (3)Algorithm_v2: 基于Python开发的算法模块,主要实现了yolo5和ssd的目标检测算法,使用flask对外提供算法接口服务,供分析器模块调用(跨平台) (4)zlm: 基于C++开发的流媒体模块。也可以使用我们编译的其他版本:https://gitee.com/yuturuishi/zlm 注:本项目仅编译了 windows 版本 zlm,如需使用 linux 版本请参考 ZLMediaKit 自行编译:https://gitee.com/xia-chu/ZLMediaKit 注意:Analyzer_v2 兼容 Linux 系统,可直接在 Linux 下编译运行。 在安装和运行每一个子模块的时候,强烈建议参考每一个模块下面的README.md ## 目录结构 ``` BXC_VideoAnalyzer_v2/ ├── Analyzer_v2/ # C++ 视频分析器(推拉流、编解码、报警合成),Visual Studio 工程,兼容 Linux ├── Admin_v2/ # Django 后台管理端 ├── Algorithm_v2/ # Python 算法服务(YOLOv5 / SSD,Flask 接口) ├── zlm/ # 流媒体模块(ZLMediaKit) ├── data/ # 测试素材(test.mp4) ├── LICENSE └── README.md ``` ## 环境要求 - Windows / Linux(Analyzer_v2 为 C++ 工程,兼容 Linux;Windows 下需 Visual Studio 编译) - Python 3.7+(Admin_v2 / Algorithm_v2,基于 Python,跨平台),依赖见各自 requirements.txt - ffmpeg / ZLMediaKit ## 快速开始 建议依次参考各子模块目录下的 README.md 完成编译与启动: - Analyzer_v2:用 Visual Studio 打开 `Analyzer_v2/Analyzer_v2.sln` 编译运行(依赖库已内置在 `Analyzer_v2/3rdparty/`,克隆即用);Linux 下参考模块 README 编译。 - Admin_v2:`cd Admin_v2 && pip install -r requirements.txt && python manage.py runserver` - Algorithm_v2:`cd Algorithm_v2 && pip install -r requirements.txt` 后启动算法服务。 - zlm:按 `zlm` 目录说明启动流媒体服务。 ## 端口约定 各模块默认端口如下(实际以各模块 config.json / config.ini 为准): - Admin_v2:9001(Web 管理后台) - Analyzer_v2:9002(分析接口,供 Admin_v2 调用) - Algorithm_v2:9003(算法 HTTP 接口,供 Analyzer_v2 调用) - zlm:RTSP 554 / HTTP 80 / RTMP 1935 ## ffmpeg命令行推流模拟摄像头 ~~~ //将本地文件推流至VideoAnalyzer(该命令行未经优化,延迟较大) ffmpeg -re -stream_loop -1 -i test.mp4 -rtsp_transport tcp -c copy -f rtsp rtsp://127.0.0.1:554/live/test //将摄像头视频流推流至VideoAnalyzer(该命令行已优化,但仍然存在延迟,如果想要彻底解决推流延迟,可以参考我们的视频:https://space.bilibili.com/3707026471389492) ffmpeg -rtsp_transport tcp -i "视频源地址" -fflags nobuffer -max_delay 1 -threads 5 -profile:v high -preset superfast -tune zerolatency -an -c:v h264 -crf 25 -s 1280*720 -f rtsp -bf 0 -g 5 -rtsp_transport tcp rtsp://127.0.0.1:554/live/camera // 备注 仓库 data 目录提供 test.mp4,可用于模拟视频流测试 ~~~ ## 有关ffmpeg推流的几点补充说明 * 通过ffmpeg命令行实现的推流功能,延迟总是存在的,且无法解决。但基于ffmpeg开发库却可以彻底解决延迟推流的问题,可以参考我们的视频:https://space.bilibili.com/3707026471389492 ## v2版本相比于v1版本的变化 ~~~ (1)Analyzer_v2 一,在支持Windows的基础上兼容Linux (如果有需要部署arm或者其他嵌入式平台,也可以尝试编译) 二,删除了算法检测模块动态库和合成报警视频模块动态库,将动态库的代码简化后提取出来,与主程序代码放在一个项目中,提高了代码整体可读性,并优化了合成报警视频模块的帧复用 三,调用算法模块删除了C++调用Python版,仅保留了C++调用Python接口版的方式,简化了代码,提高了代码可读性,非常有利于学习和理解,此前因为代码要兼容C++调用Python的方式,所以很多朋友在学习这部分的时候,不太容易看明白,现在就清晰多了。 四,算法渲染后流推流由rtmp推流改成了rtsp推流,并修复了此前sps,pps的设置问题。 五,考虑到这个项目目前并没有对音频流做算法分析,因此本次代码升级,删除了音频的解码和编码模块,后续大家如有需要对音频做编解码处理,可参考本项目 v1 版本(https://gitee.com/yuturuishi/BXC_VideoAnalyzer_v1)中音频编解码相关实现。 (2)Admin_v2 一,强调一点,因为基于Python开发的,所以此前的v1版本和当前的v2版本都是支持跨平台的。 二,去除了一些无效的功能,修复了一些存在bug的功能 三,优化了错误提示,新版本的错误提示,可以很明显的看出来,是哪一个模块出了问题,程序启动后,可以在操作过程中,看到具体哪个模块报错。 (3)Algorithm_v2 相比于v1,无变化 (4)zlm (基于ZLMediaKit编译的流媒体服务器) 相比于v1,无变化。大家也可以自行下载ZLMediaKit源码进行编译使用。ZLMediaKit开源地址:https://gitee.com/xia-chu/ZLMediaKit ~~~ ## 适用场景 - 智慧安防系统集成商:可直接体验标准视频行为分析能力,作为产品选型与方案评估的参考。 - 算法工程师:可参考整套软件运行流程,了解如何把目标检测算法接入完整业务链路。 - 开发者 / 学生:可作为视频 AI 分析(推拉流、编解码、检测、报警合成、Web 管理)的全链路学习案例。 ## 开源协议 本项目基于 MIT 协议开源,Copyright (c) 2022 yuturuishi,详见 LICENSE。