/GB28181

GB28181使用python实现源码 作为上级域对接海康蓝盾平台。包括catalog设备信息,预览设备视频流保存成本地文件以及球机PTZ控制

Primary LanguagePython

GB28181-python

公司需求研究了一下GB28181协议
对接的2011版国标 2016版国标向下兼容 没有什么大影响
使用python实现了此协议,没有具体验证过可以同时预览几路视频流,最多的一次是22路视频流同时预览
这个取决与网络的带宽以及部署服务器的内存大小
踩过很多坑,完善优化了很多次程序,目前这版至少后台启动两个月正常使用,生成的文件需定时清理否则服务器被写满会导致程序无法进行I/O操作而结束
本程序已100帧存储为一个文件 翻译成人话就是 大概一个视频文件大概能播三秒,想变长可以自行修改h264.py
对接国标需要提供视频方绑定三个信息:名称,IP,端口 此程序绑定的名称为 0000042001000001 如需修改,全选替换。
绑定的本地IP地址以文件的形成放在程序同一目录config.txt
内容为
ip=192.168.1.1
port=7890

这是我瞎写的 只是举个栗子

程序会定时获取设备信息 ,此程序获取设备信息是在当天晚上1点,之后每隔七天获取一次,保存成sb_sbdy.txt(从包里摘取主要用到的信息 格式为 名称 ID 经度 纬度 状态 摄像机类型) zong_sb_sbdy.txt(存储为接收的完成视频信息包 用于验证核实 此文件比较大)

预览的视频流根据文件 如需修改自己找 我每个方法名都注释此方法的用途
预览视频时读取的文件内容格式
alives:123456432145,2143653235465743524
deads:2143658754365,435676546346458,3254658857463524

就是这么个格式 中间的数字是设备ID 也是我瞎写的 如果关闭数据最后一个ID没截对 就在deads后边加回车 两秒钟扫描一次 读取一个文件删一个 不想删把删除注释就好,那样一个文件可以一直控制程序预览哪些ID,程序打开的过程中 删除预览视频文件可能会导致程序找不到文件错误,我这块没加异常处理 想比程序速度快吗 那你就删了试试看程序挂没挂

PTZ文件实现对球机的控制
不懂可以加我qq解惑10961020
我不是圣人 只会空闲时间帮你解答

最后一句 python不适合做这个 只适合采坑,最好使用C++,java等其他语言实现此程序
视频花屏先抓网络包查看网关收到的码流是否正常 网关的正常说明视频发送过来的是好的 原因就只有python的效率较低,部分码流包被缓冲区丢弃最终导致花屏
本人能力较低 无法使用python在线解码H264并播放,故以缓兵之策 保存成文件
ffmpeg库可以实现对码流的在线解码转发推流操作 目前本人找到python关于ffmpeg库的资料只能调用命令 无法调用ffmpeg库方法

写了这么多 各位帮忙点个star呗?感谢

参考博文
ps流 h264解析
https://blog.csdn.net/caixing_java/article/details/79154819
https://blog.csdn.net/occupy8/article/details/39288035
https://blog.csdn.net/machh/article/details/52165292
ptz控制
https://blog.csdn.net/zhangrui_fslib_org/article/details/52537781