简介
NodeMediaServer V3是一个Go语言开发的高性能流媒体服务端软件,支持RTMP\RTSP\SRT\KMP\GB28181\JT1078协议推流,RTMP\RTSP\KMP\HTTP(WS)-FLV\HTTP(WS)-MP4\HLS协议播流。内置图形化管理拉流转发器,可主动拉取远端RTMP\RTSP\RTP\HTTP流,转发到本机或远程服务器。
PaddleDetection是一个基于PaddlePaddle的目标检测端到端开发套件,在提供丰富的模型组件和测试基准的同时,注重端到端的产业落地应用,通过打造产业级特色模型|工具、建设产业应用范例等手段,帮助开发者实现数据准备、模型选型、模型训练、模型部署的全流程打通,快速进行落地应用。
安装
NodeMediaServer 一键部署安装,本案例使用windows平台
下载:https://cdn.nodemedia.cn/nms/3.19.2/nms-windows-amd64-v3.19.2-20230103.zip 解压后双击nms.exe运行
PaddleDetection基于Paddle,详细安装步骤:开始使用_飞桨-源于产业实践的开源深度学习平台
本例安装环境
python 3.9.13, 下载地址:https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe 不要使用3.10.x,更不要使用3.11.x ,当前PaddleDetection版本号2.5只支持python3.9。也不要使用windows应用商店的python。
安装cuda10.2版对应的paddle-gpu版
python -m pip install paddlepaddle-gpu==2.4.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
验证安装:安装完成后您可以使用 python
进入 python 解释器,输入import paddle
,再输入 paddle.utils.run_check()
如果出现PaddlePaddle is installed successfully!
,说明您已成功安装。
下载PaddleDetection源码:https://github.com/PaddlePaddle/PaddleDetection/archive/refs/tags/v2.5.0.zip
解压后安装:
# 安装其他依赖
cd PaddleDetection
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 编译安装paddledet
python setup.py install
下载ffmpeg: https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-5.0.1-full_build.7z 解压后将ffmpeg.exe拷贝到 c:/windows/ 目录中
应用案例
NodeMediaServer接收一路道路推流,可以是RTMP, GB28181或RTSP拉流转发等方式。
本案例使用PaddleDetection的推理部署的pipeline功能,需要修改一点代码:
进入PaddleDetection-2.5源码目录,编辑deploy/pipeline/pipe_utils.py,插入代码:
‘-c:v’,’libx264′,
‘-tune’,’zerolatency’,
默认代码如果不指定输出视频编码器,rtsp默认协议是采用mpeg4视频编码,在目前互联网应用中支持很低,改为h264编码。
修改rtsp输出流地址格式,以适应当前直播通用格式
将原代码中:
pushurl = os.path.join(self.pushurl, video_out_name)
改为
pushurl = self.pushurl
开始视频分析
在PaddleDetection-2.5源码目录下执行
python deploy/pipeline/pipeline.py –config deploy/pipeline/config/examples/infer_cfg_vehicle_attr.yml –rtsp rtsp://192.168.0.2/live/che –device=gpu –pushurl rtsp://192.168.0.2/live/che_ai
----------- Running Arguments -----------
DET:
batch_size: 1
model_dir: https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_ppvehicle.zip
MOT:
batch_size: 1
enable: true
model_dir: https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_ppvehicle.zip
tracker_config: deploy/pipeline/config/tracker_config.yml
VEHICLE_ATTR:
batch_size: 8
color_threshold: 0.5
enable: true
model_dir: https://bj.bcebos.com/v1/paddledet/models/pipeline/vehicle_attribute_model.zip
type_threshold: 0.5
crop_thresh: 0.5
visual: true
warmup_frame: 50
------------------------------------------
Multi-Object Tracking enabled
Vehicle Attribute Recognition enabled
DET model dir: C:\Users\aliang/.cache/paddle/infer_weights\mot_ppyoloe_l_36e_ppvehicle
MOT model dir: C:\Users\aliang/.cache/paddle/infer_weights\mot_ppyoloe_l_36e_ppvehicle
VEHICLE_ATTR model dir: C:\Users\aliang/.cache/paddle/infer_weights\vehicle_attribute_model
----------- Model Configuration -----------
Model Arch: PPLCNet
Transform Order:
--transform op: Resize
--transform op: NormalizeImage
--transform op: Permute
--------------------------------------------
----------- Model Configuration -----------
Model Arch: YOLO
Transform Order:
--transform op: Resize
--transform op: Permute
--------------------------------------------
video fps: 21, frame_count: -2177740619812933
the result will push stream to url:rtsp://192.168.0.2/live/che_ai
NodeMediaServer集成飞浆PaddleDetec