# 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 后台管理模块,新增了合成报警视频的管理功能,可以对报警视频进行增删改查,布控中的视频产生的报警视频会出现在这个功能中。同时在布控过程中,支持绘制布控周界区域和选择监测分类。