# python-rtsp **Repository Path**: renjiangyang/python-rtsp ## Basic Information - **Project Name**: python-rtsp - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-04 - **Last Updated**: 2026-03-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RTSP 项目 该项目使用 Python 和 OpenCV 实现了完整的 RTSP(实时流协议)客户端和服务器组件。 ## 功能特点 - **RTSP 服务器**:通过网络流式传输来自摄像头或视频文件的视频 - **RTSP 客户端**:连接到 RTSP 服务器并显示视频流 - **多客户端支持**:服务器可以同时处理多个客户端连接 - **视频文件循环**:视频结束时服务器会自动重新开始播放 - **实时流传输**:低延迟视频传输 - **易于使用**:简单的命令行界面 ## 系统架构 ``` ┌─────────────────┐ TCP 套接字 ┌─────────────────┐ │ │ ┌───────────────┐ │ │ │ RTSP 服务器 │◄─ ┤ 端口 8554 ├─►│ RTSP 客户端 │ │ │ └───────────────┘ │ │ └─────────────────┘ └─────────────────┘ ▲ ▲ │ │ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │ 视频源 │ │ 视频显示 │ │ (文件/摄像头) │ │ (OpenCV 窗口) │ │ │ │ │ └─────────────────┘ └─────────────────┘ ``` ## 开始使用 ### 前提条件 - Python 3.7+ - pip - 兼容 OpenCV 的系统 ### 安装步骤 1. **克隆仓库** ```bash git clone <仓库地址> cd rtsp-project ``` 2. **创建虚拟环境** ```bash python -m venv venv ``` 3. **激活虚拟环境** - Windows: ```bash venv\Scripts\activate ``` - Linux/Mac: ```bash source venv/bin/activate ``` 4. **安装依赖** ```bash pip install opencv-python numpy ``` ### 使用方法 #### RTSP 服务器 **使用摄像头的基本用法:** ```bash python rtsp_server.py ``` **使用视频文件:** ```bash python rtsp_server.py --video "path/to/video.mp4" ``` **自定义端口和流名称:** ```bash python rtsp_server.py --video "path/to/video.mp4" --port 8555 --stream mystream ``` #### RTSP 客户端 **连接到本地服务器:** ```bash python rtsp_client.py ``` **连接到远程服务器:** ```bash # 在 rtsp_client.py 中修改 server_ip 为服务器的 IP 地址 # 然后运行: python rtsp_client.py ``` ### 命令行参数 #### 服务器参数 | 参数 | 描述 | 默认值 | |------|------|--------| | `--video` | 视频文件路径 | 0 (摄像头) | | `--port` | 服务器端口 | 8554 | | `--stream` | 流名称 | stream | #### 客户端配置 在 `rtsp_client.py` 中修改以下内容: - `server_ip`:RTSP 服务器的 IP 地址 - `server_port`:RTSP 服务器的端口 ### 项目结构 ``` rtsp-project/ ├── rtsp_client.py # RTSP 客户端实现 ├── rtsp_server.py # RTSP 服务器实现 ├── requirements.txt # 依赖项 └── README.md # 本文档 ``` ### 技术细节 #### 服务器实现 - **基于套接字**:使用 TCP 套接字进行通信 - **多线程**:每个客户端连接在单独的线程中运行 - **帧编码**:使用 JPEG 压缩进行高效流式传输 - **视频处理**:支持摄像头和视频文件作为源 #### 客户端实现 - **基于套接字**:使用 TCP 套接字连接到服务器 - **帧解码**:解码 JPEG 帧用于显示 - **错误处理**:对网络问题的健壮错误处理 ### 调试指南 #### 服务器调试 1. **检查视频源**:确保视频文件存在且可访问 2. **检查端口可用性**:确保端口 8554 未被其他应用程序使用 3. **检查防火墙**:确保端口在防火墙中已打开 4. **查看服务器日志**:服务器会在控制台打印详细日志 #### 客户端调试 1. **检查服务器连接**:确保服务器正在运行且可访问 2. **检查网络连接**:验证您可以访问服务器的 IP 地址 3. **查看客户端日志**:客户端会在控制台打印详细日志 4. **检查 OpenCV 安装**:确保 OpenCV 已正确安装 ### 常见问题及解决方案 | 问题 | 可能原因 | 解决方案 | |------|----------|----------| | `ModuleNotFoundError: No module named 'cv2'` | OpenCV 未安装 | 运行 `pip install opencv-python` | | `Failed to open video source` | 视频文件路径无效或摄像头不可用 | 检查文件路径或连接摄像头 | | `Connection refused` | 服务器未运行或端口被阻止 | 启动服务器并检查防火墙设置 | | `Failed to decode frame` | 帧数据损坏 | 检查网络连接 | | `Incomplete frame received` | 网络问题 | 检查网络连接并重试 | ### 性能优化 1. **调整帧率**:修改服务器代码中的 `time.sleep(0.033)`(默认约 30fps) 2. **调整 JPEG 质量**:修改服务器代码中的 `cv2.IMWRITE_JPEG_QUALITY` 参数 3. **降低分辨率**:在流式传输前调整帧大小以提高性能 ### 示例用例 1. **安全摄像头流式传输**:通过网络流式传输来自安全摄像头的视频 2. **视频监控**:同时监控多个摄像头 feed 3. **远程视频查看**:从远程位置查看视频流 4. **视频共享**:与多个客户端共享视频内容 ## 许可证 MIT