# CamStream **Repository Path**: junzixing/cam-stream ## Basic Information - **Project Name**: CamStream - **Description**: win10、win11下,将本地摄像头画面以 RTSP 协议推流到网络,支持多摄像头切换、本地预览及低延迟优化。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-01 - **Last Updated**: 2026-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

CamStream

将任意摄像头一键变为 RTSP 流媒体源
专为无人机图传、远程监控、局域网视频分发等场景设计

快速开始核心特性使用场景MIT License

---

界面预览

## 核心特性 - **一键推流** — 选择摄像头,点击「开始推流」,即可生成标准 RTSP 流地址 - **UDP / TCP 双模** — 默认 UDP 低延迟(适合实时图传),可切换 TCP 保证可靠传输 - **GPU 硬件加速** — 支持 NVIDIA NVENC 硬编码,CPU 占用低、延迟小 - **多编码格式** — H.264 / H.265,按需选择画质与带宽平衡 - **自带 RTSP 服务器** — 内置 MediaMTX,开箱即用,无需额外部署 - **自动端口管理** — 端口冲突时自动切换备用端口并通知用户 - **局域网即用** — 自动配置 Windows 防火墙,同一网络下的设备可直接拉流 - **音视频同步** — 可选麦克风音频一同推流 - **高性能模式** — FFmpeg 直接采集摄像头(DirectShow),无 Python 管道瓶颈 - **实时预览** — 本地画面叠加时间戳,方便测量端到端延迟 ## 使用场景 | 场景 | 说明 | |------|------| | **无人机图传** | 将机载摄像头画面通过 RTSP 实时传输到地面站,UDP 模式延迟极低 | | **远程监控** | 把 USB/IP 摄像头变成网络流,多端同时拉流查看 | | **直播推流源** | 作为 OBS / VLC 等工具的 RTSP 输入源 | | **教学演示** | 将摄像头画面实时分享给局域网内多个学生终端 | ## 快速开始 ### 环境要求 - Windows 10 / 11 - Python 3.10+ ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 启动 双击 `run.bat` 或命令行运行: ```bash python main.py ``` 首次启动时,程序会自动安装 FFmpeg 和 MediaMTX(优先从 `packages/` 目录离线安装,否则联网下载)。 ### 3. 推流 1. 选择摄像头 2. 配置分辨率、帧率、编码格式、传输协议 3. 点击 **「开始推流」** 4. 复制推流地址,在其他设备上拉流 ### 4. 拉流 在同一局域网的任意设备上: ```bash # VLC(UDP,低延迟) vlc rtsp://<本机IP>:8554/live # VLC(TCP,稳定优先) vlc --rtsp-tcp rtsp://<本机IP>:8554/live # ffplay ffplay rtsp://<本机IP>:8554/live ``` ## 项目结构 ``` CamStream/ ├── main.py # 入口 ├── run.bat # 双击启动(免终端) ├── requirements.txt ├── split_packages.py # 大文件分片工具(Git 友好) ├── packages/ # FFmpeg & MediaMTX 安装包 └── src/ ├── main_window.py # PyQt6 主界面 ├── camera.py # 摄像头枚举与采集 ├── audio.py # 音频设备枚举 ├── rtsp_sender.py # FFmpeg RTSP 推流引擎 ├── ffmpeg_installer.py # FFmpeg 自动安装 ├── mediamtx_server.py # MediaMTX 服务管理 ├── packages_utils.py # 安装包分片合并工具 └── config.py # 配置管理 ``` ## 技术栈 | 组件 | 用途 | |------|------| | **PyQt6** | GUI 界面 | | **OpenCV** | 摄像头采集与预览 | | **FFmpeg** | 视频编码与 RTSP 推流 | | **MediaMTX** | 轻量级 RTSP/RTMP 流媒体服务器 | ## 常见问题
推流地址在哪里查看? 启动推流后,界面顶部显示完整的 RTSP 地址,点击「复制推流地址」即可分享给其他设备。将 `127.0.0.1` 替换为本机局域网 IP 即可在其他设备拉流。
如何降低延迟? - 传输协议选择 **UDP** - 编码格式选择 **H.264 (NVENC GPU)**(需 NVIDIA 显卡) - 勾选「高性能模式」 - 适当降低分辨率和码率
局域网其他设备无法拉流? 程序会自动尝试配置 Windows 防火墙放行。若失败(非管理员权限),请手动放行对应端口的 TCP+UDP 入站规则,或以管理员身份运行程序。
提示端口被占用? 程序会自动尝试备用端口(8554 → 18554 → 28554 → 38554),并弹窗通知新地址。无需手动干预。
## 参与贡献 欢迎提交 Issue 和 Pull Request! 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'Add amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 发起 Pull Request ## 开源协议 本项目基于 [MIT License](LICENSE) 开源。 --- ## 开发者 **怒飞垂云** — 无人机调试 | 飞控硬件定制 | 固件修改 | Log 日志分析 | 飞控驱动添加 - QQ:3500985284 - 博客:[www.nufeichuiyun.com](http://www.nufeichuiyun.com/) - 教程:[无人机飞控开发课程(网易云课堂)](https://study.163.com/course/introduction/1209568864.htm?share=1&shareId=1448054983)

公众号