# BXC_VideoAnalyzer_v3 **Repository Path**: yongyuan/BXC_VideoAnalyzer_v3 ## Basic Information - **Project Name**: BXC_VideoAnalyzer_v3 - **Description**: 视频行为分析系统 v3系列版本,下载后可以直接运行体验 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 65 - **Created**: 2024-01-24 - **Last Updated**: 2024-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 视频行为分析系统 v3 * 作者:北小菜 * 个人网站:http://www.any12345.com * 邮箱:bilibili_bxc@126.com * QQ:1402990689 * 微信:bilibili_bxc * v3安装包下载地址:https://gitee.com/Vanishi/BXC_VideoAnalyzer_v3 * v4安装包下载地址:https://gitee.com/Vanishi/BXC_VideoAnalyzer_v4 ### v3系列版本介绍 * 视频行为分析系统v3系列版本,用户定位是同行开发者,v3会一直保持更新,首次获得v3源码以后,可以永久获得v3持续的升级版本,(但仅限于v3系列),升级内容偏向于音视频开发案例,编解码开发案例,gb28181接入案例,NVR相关功能扩展案例,多种推理引擎对常见算法模型的推理实现。音频分析功能案例,音频处理案例,v3系列源码100元。 * 截止到v3.2版本,该系统支持OpenVINO和TensorRT推理引擎,OpenVINO对应的硬件是英特尔处理器,TensorRT对应的硬件是英伟达显卡。如果是AMD处理器且不包含英伟达显卡的电脑,是不支持的。 ### Windows版启动运行 * 第一步下载程序:下载master分支对应的程序就是Windows版程序 * 第二步运行程序:可以双击运行 VideoAnalyzer.exe启动程序,观察窗口提示如果没有报错,即表示启动成功 * 第三步打开程序:在浏览器输入 http://127.0.0.1:9001 系统默认账号 用户名:admin 密码:admin888 * 第四步停止程序:关闭启动程序窗口即可 ### Linux版启动运行 * 需要自己获得源码编译,源码支持跨平台 ### 如何获得源码 * v1版本源码免费下载地址 http://www.any12345.com/code/20230817/QsiD97C922F.html * v2版本源码免费下载地址 http://www.any12345.com/code/20230820/Tni9bAf4cDE.html * v3版本源码购买地址(淘宝) https://item.taobao.com/item.htm?id=746326947806 * v3版本源码购买地址(闲鱼) https://h5.m.goofish.com/item?id=744350097882 ### 视频教程 * v1版本视频介绍地址 https://www.bilibili.com/video/BV1dG4y1k77o * v1版本源码讲解(1)拉流,解码,实时算法分析,合成报警视频,编码,推流 https://www.bilibili.com/video/BV1L84y177xc * v1版本源码讲解(2)音频解码,音频重采样,音频编码,合成报警视频 https://www.bilibili.com/video/BV1984y1L7zB * C++调用Python,支持传递图片格式的数据,支持调用Python版AI算法模型,C++传递Mat格式的图片数据到Python https://www.bilibili.com/video/BV1Vd4y1p7GE * v2版本视频介绍地址 https://www.bilibili.com/video/BV1CG411f7ak * v3.0版本视频介绍地址 https://www.bilibili.com/video/BV1Xy4y1P7M2 * v3.1版本视频介绍地址 https://www.bilibili.com/video/BV1F64y1L7dq * v3.2版本视频介绍地址 https://www.bilibili.com/video/BV12g4y167u2 ### 配置说明 ~~~ //config.json { "version": "3", //程序版本号 "host": "127.0.0.1", //部署机器IP地址(可以使用127.0.0.1,推荐使用ipconfig获取本机局域网IP地址) "adminPort": 9001, //后台管理服务器端口 "analyzerPort": 9002, //分析器服务端口 "mediaHttpPort": 9003,//流媒体服务器HTTP端口 "mediaRtspPort": 9554,//流媒体服务器RTSP端口 "mediaSecret": "aqxY9ps21fyhyKNRyYpGvJCTp1JBeGOM",//流媒体服务器安全码 "rootDir": "www", //报警产生的视频或图片存储位置 "videoFileNameFormat": "%Y%m%d%H%M%S", //报警产生的视频名称格式 "recordLogInterval": 30, //主程序正常启动后记录日志的间隔时间,单位秒 "workerConcurrency": 20, //布控最大并发数量 "supportHardwareVideoDecode": false,//是否支持硬件解码(建议关闭硬件解码,将硬件资源留给算法) "supportHardwareVideoEncode": false,//是否支持硬件编码(建议关闭硬件编码,将硬件资源留给算法) "yolov8OpenVINOWeight": "models\\yolov8n.xml",//OpenVINO推理模型文件 "yolov8TensorRTWeight": "models\\yolov8n.fp16.1.1.engine",//TensorRT推理模型文件 "algorithmEngine": "OpenVINO", //推理引擎 "algorithmDevice": "GPU" //算法模型运行设备,CPU or GPU } ~~~ ### ffmpeg命令行推流 ~~~ //将本地文件推流至VideoAnalyzer(该命令行未经优化,延迟较大) ffmpeg -re -stream_loop -1 -i test.mp4 -rtsp_transport tcp -c copy -f rtsp rtsp://127.0.0.1:9554/live/test //将摄像头视频流推流至VideoAnalyzer(该命令行已优化,但仍然存在延迟,如果想要彻底解决推流延迟,可以参考我的视频:https://space.bilibili.com/487906612) ffmpeg -rtsp_transport tcp -i url -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:9554/live/camera // 备注 根目录下data文件夹中,我提供了一个test.mp4,大家可以测试,模拟视频流 ~~~ ### 有关ffmpeg推流的几点补充说明 * 通过ffmpeg命令行实现的推流功能,延迟总是存在的,且无法解决。但基于ffmpeg开发库却可以彻底解决延迟推流的问题,可以参考我的视频:https://space.bilibili.com/487906612 控制面板 视频流管理 报警视频管理 算法管理 布控管理 编辑布控 播放算法视频流 ##### v3主要更新功能点 * 1 基础算法模型升级,yolov5升级至yolov8 * 2 基础算法模型推理继续采用openvino,区别在于 V1,V2版本是基于python版openvino调用,V3版本则是基于c++调用,c++版可以大幅度减少性能损耗和程序交互复杂度,极大提升了视频分析的计算频率。 * 3 布控算法模块,周界入侵算法功能完善,支持绘制算法识别区域,支持监测周界入侵的分类,比如支持监测人,狗,猫等等分类。 * 4 分析器模块和算法模块合并,在V1和V2版本中两个模块各自独立,通过api接口进行交互,V3版本中两个模块合并,通信也不需要再借助api而是直接调用,效率大幅度提升。 * 5 流媒体模块跟随开源代码的更新而更新,同时二次开发中去除不需要的流媒体协议 * 6 后台管理模块,新增了合成报警视频的管理功能,可以对报警视频进行增删改查,布控中的视频产生的报警视频会出现在这个功能中。同时在布控过程中,支持绘制布控周界区域和选择监测分类。