# video_strem **Repository Path**: meng-qiyang/video_strem ## Basic Information - **Project Name**: video_strem - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-18 - **Last Updated**: 2025-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GB28181视频流管理系统 基于GB28181协议的完整视频流管理系统,支持SIP注册认证、设备目录管理、视频流获取、MP4保存和Web界面管理。 ## 🎯 核心功能 ### 1. SIP注册与认证 - ✅ 完整的SIP REGISTER流程 - ✅ HTTP Digest认证支持 - ✅ 独立SIP用户名密码配置 - ✅ 智能配置回退机制 - ✅ 30秒心跳保活机制 - ✅ 自动重连和错误处理 ### 2. 设备目录管理 - ✅ MESSAGE方法Catalog全量查询 - ✅ XML设备目录解析 - ✅ 可视化设备目录树 - ✅ 设备类型自动识别 - ✅ 实时设备状态监控 ### 3. 视频流处理 - ✅ SIP INVITE媒体邀请 - ✅ RTP/UDP视频接收 - ✅ SDP媒体协商 - ✅ 多路并发视频流 - ✅ MP4格式保存 ### 4. Web界面管理 - ✅ 响应式Web界面 - ✅ 设备树可视化展示 - ✅ 一键视频流控制 - ✅ 实时状态监控 - ✅ 视频文件管理 - ✅ 完全离线使用 ## 📁 项目结构 ``` GB28181视频流管理系统/ ├── 核心模块/ │ ├── gb28181_client.py # GB28181协议客户端 │ ├── device_manager.py # 设备管理模块 │ ├── video_stream.py # 视频流处理模块 │ ├── video_uploader.py # 视频上传模块 │ └── web_interface.py # Web界面管理模块 ├── 启动程序/ │ ├── main.py # 命令行版本 │ ├── start_web.py # Web界面版本 │ └── start.sh # 启动脚本 ├── Web界面/ │ ├── templates/index.html # 主页面模板 │ ├── static/css/ # 样式文件 │ ├── static/js/ # 前端脚本 │ └── static/lib/ # 本地化库文件 ├── 配置文件/ │ ├── config.ini # 系统配置 │ ├── config_example.ini # 配置示例 │ └── requirements.txt # Python依赖 └── 数据目录/ ├── logs/ # 日志文件 └── videos/ # 视频文件 ``` ## 🚀 快速开始 ### 1. 环境要求 - Python 3.7+ - 支持的操作系统:Windows、Linux、macOS ### 2. Windows部署 ```cmd # 一键部署 deploy_windows.bat # 启动系统 start.bat ``` ### 3. Linux/macOS部署 ```bash pip install -r requirements.txt ``` ### 3. 配置系统 复制并编辑配置文件: ```bash cp config_example.ini config.ini ``` 编辑 `config.ini` 配置GB28181服务器信息: ```ini [GB28181] # GB28181服务器配置 server_ip = 192.168.1.100 server_port = 5060 server_id = 34020000002000000001 server_domain = 3402000000 # 本地客户端配置 local_ip = 192.168.1.200 local_port = 5061 device_id = 34020000001320000001 device_password = 12345678 # SIP认证配置(可选) sip_username = admin sip_password = admin123 sip_realm = 3402000000 ``` ### 4. 启动系统 #### Windows系统 ```cmd # Windows启动脚本(推荐) start.bat # 直接启动Web界面 python start_web.py ``` #### Linux/macOS系统 ```bash # Web界面版本(推荐) python start_web.py # 命令行版本 python main.py # 使用启动脚本 ./start.sh ``` 自动打开浏览器访问:http://localhost:8080 ## 💻 使用说明 ### 基本操作 1. **配置服务器** - 编辑 `config.ini` 设置GB28181服务器信息 2. **查看设备** - 左侧树形结构显示设备目录 3. **开始录制** - 选择摄像头设备,点击"开始视频流" 4. **管理文件** - 在视频文件列表中查看和下载MP4文件 ### 主要功能 - **设备目录管理** - 基于MESSAGE方法的完整catalog查询 - **视频流控制** - 一键开始/停止视频录制 - **实时监控** - WebSocket实时状态更新 - **文件管理** - MP4视频文件管理和下载 - **离线使用** - 完全本地化,无外部依赖 详细使用说明请查看:[使用说明.md](使用说明.md) ## ⚙️ 配置说明 ### GB28181基本配置 ```ini [GB28181] server_ip = 192.168.1.100 # GB28181服务器IP server_port = 5060 # 服务器端口(通常5060) server_id = 34020000002000000001 # 服务器设备ID(20位) server_domain = 3402000000 # 服务器域(通常为server_id前10位) local_ip = 192.168.1.200 # 本地客户端IP local_port = 5061 # 本地客户端端口 device_id = 34020000001320000001 # 本地设备ID(20位) device_password = 12345678 # 设备认证密码 expires = 3600 # 注册有效期(秒) ``` ### SIP认证配置(可选) ```ini # 如果GB28181服务器需要特定的认证用户名和密码 sip_username = admin # SIP认证用户名(默认使用device_id) sip_password = admin123 # SIP认证密码(默认使用device_password) sip_realm = 3402000000 # SIP认证域(默认使用server_domain) ``` ### 其他配置 ```ini [RTP] rtp_port_start = 10000 # RTP端口范围起始 rtp_port_end = 20000 # RTP端口范围结束 [VIDEO] output_dir = ./videos # 视频文件输出目录 video_format = mp4 # 视频格式 max_duration = 300 # 最大录制时长(秒) [UPLOAD] upload_url = http://localhost:8080/api/upload # 上传API地址 upload_timeout = 60 # 上传超时时间 max_file_size = 100MB # 最大文件大小 ``` ## 🔒 离线使用 ### 完全离线部署 系统支持完全离线使用,无需任何外部网络连接: - **Web界面本地化**: 所有CSS、JS、字体文件均为本地资源 - **无CDN依赖**: Bootstrap、图标、Socket.IO全部本地部署 - **数据本地存储**: 视频文件、配置、日志全部本地管理 - **仅需GB28181连接**: 只需连接到GB28181服务器,无其他网络依赖 ### 离线优势 - **高安全性**: 数据不出本地网络 - **高可用性**: 不受外部网络影响 - **快速响应**: 本地资源加载速度快 - **易于部署**: 一键启动,配置简单 ## 🛠️ 故障排除 ### 常见问题 #### 1. SIP注册失败 ```bash # 检查配置 cat config.ini | grep -A 10 "\[GB28181\]" # 查看日志 tail -f logs/gb28181.log | grep -i register ``` - 确认服务器IP和端口配置正确 - 检查设备ID和密码是否匹配 - 验证网络连通性和防火墙设置 #### 2. 设备目录为空 ```bash # 查看catalog查询日志 tail -f logs/gb28181.log | grep -i catalog ``` - 确认服务器支持MESSAGE Catalog查询 - 检查设备权限和认证配置 - 验证XML响应格式 #### 3. 视频流无法开始 - 确认设备状态为"ON"且类型为摄像头 - 检查RTP端口范围配置 - 验证UDP网络通信正常 #### 4. Web界面无法访问 - 确认端口8080未被占用 - 检查防火墙设置 - 验证所有依赖包已安装 ### 调试方法 ```bash # 查看实时日志 tail -f logs/gb28181.log # 检查系统状态 python -c "from gb28181_client import GB28181Client; print('配置加载正常')" # 验证网络连接 ping 192.168.1.100 # 替换为您的GB28181服务器IP ``` ## 📋 技术规格 - **协议支持**: GB/T 28181-2016 - **SIP协议**: RFC 3261 - **认证方式**: HTTP Digest Authentication - **视频编码**: H.264/H.265 - **传输协议**: RTP over UDP - **Web技术**: Flask + WebSocket + Bootstrap - **Python版本**: 3.7+ - **跨平台**: Windows/Linux/macOS --- 💡 **提示**: 建议在内网环境中部署使用,确保网络安全和系统稳定性。