🍳 厨房监视器 - iPhone到iPad实时视频传输
基于WebRTC技术的高安全性实时视频监控系统,专为厨房烹饪场景设计。让你的iPad作为监视器,实时显示iPhone的拍摄画面。
✨ 功能特性
🎥 核心功能
- 📱 iPhone端: 作为摄像头,支持前后摄像头切换
- 📺 iPad端: 全屏显示实时视频流,自动隐藏控制栏
- 🔄 低延迟: 基于WebRTC P2P连接,延迟约200-500ms
- 📶 WiFi传输: 通过本地WiFi网络传输,无需互联网
- 🎯 专用设计: 针对厨房使用场景优化的简洁界面
🔒 安全特性
- 🛡️ CORS保护: 严格的跨域访问控制
- 🔐 输入验证: 完整的数据验证和清理机制
- 📜 安全证书: 自签名HTTPS证书支持
- 🚫 速率限制: 防止DDoS攻击
- 🔒 安全头部: 完整的HTTP安全头部
🚀 智能功能
- 📊 自适应质量: 根据网络状况自动调整视频质量
- 🔄 智能重连: 网络断开后的自动重连机制
- 📈 实时监控: 连接质量和性能实时监控
- 🛠️ 资源管理: 智能内存泄漏防护和资源清理
- 📱 多设备: 支持同时连接多个观看者
🎨 用户体验
- 📸 截图功能: 一键保存当前视频画面
- 🔍 双击缩放: 双击屏幕进行视频缩放
- ⌨️ 快捷键: 支持键盘快捷键操作
- 📊 质量指示: 实时显示连接质量
- 💡 触摸提示: 友好的操作提示
🔧 技术规格
系统要求
- Node.js: >= 14.0.0
- 浏览器: Safari 14+, Chrome 80+, Firefox 75+
- 网络: 本地WiFi,建议5GHz频段
- 设备: iPhone 6s+, iPad Air 2+
协议支持
- WebRTC: 支持1.0标准
- Socket.IO: 4.x版本
- 传输: WebSocket优先,HTTP长轮轮询备用
- 加密: TLS 1.2+ (HTTPS模式)
性能指标
- 延迟: 200-500ms (局域网)
- 分辨率: 最高1080p自适应
- 帧率: 15-30fps自适应
- 并发: 支持最多10个观看者
- 内存: < 100MB运行时占用
🚀 快速开始
1. 环境准备
确保你的Mac已安装:
- Node.js (14.0+): 下载地址
- Git:
xcode-select --install
2. 项目设置
# 1. 创建项目目录
mkdir kitchen-monitor
cd kitchen-monitor
# 2. 初始化项目
npm init -y
# 3. 安装依赖
npm install express socket.io
npm install --save-dev nodemon
# 4. 创建文件结构
mkdir public
3. 文件结构
kitchen-monitor/
├── server.js # 信令服务器
├── package.json # 项目配置
├── public/
│ ├── broadcaster.html # iPhone端页面
│ └── viewer.html # iPad端页面
└── README.md # 使用说明
4. 启动服务器
# 方式1: 直接启动
node server.js
# 方式2: 开发模式(自动重启)
npm run dev
# 方式3: 生产模式
NODE_ENV=production node server.js
服务器启动后会显示:
🔒 HTTPS服务器启动成功!
📱 iPhone访问: https://[你的IP]:3000/broadcaster.html
📺 iPad访问: https://[你的IP]:3000/viewer.html
🌐 HTTP服务器启动成功! (端口: 8080)
📱 iPhone备用访问: http://[你的IP]:8080/broadcaster.html
📺 iPad备用访问: http://[你的IP]:8080/viewer.html
5. 安全配置(可选)
创建环境配置文件:
# 创建.env文件
echo "NODE_ENV=production" > .env
echo "HTTPS_PORT=3000" >> .env
echo "HTTP_PORT=8080" >> .env
6. 验证安装
访问以下URL验证服务是否正常运行:
- 根目录:
http://localhost:3000 或 https://localhost:3000
- iPhone端:
http://localhost:3000/broadcaster.html
- iPad端:
http://localhost:3000/viewer.html
5. 获取本机IP地址
# macOS获取IP地址
ifconfig | grep "inet " | grep -v 127.0.0.1
# 或者在系统偏好设置 > 网络中查看
6. 设备连接
- 确保iPhone和iPad连接到同一WiFi网络
- iPad端:
- 打开Safari浏览器
- 访问:
http://[你的IP]:3000/viewer.html
- 等待连接iPhone
- iPhone端:
- 打开Safari浏览器
- 访问:
http://[你的IP]:3000/broadcaster.html
- 点击"开始广播"
- 允许摄像头和麦克风权限
📋 使用步骤详解
iPhone端操作
- 📱 打开网页: 在Safari中访问broadcaster.html
- 🎥 开始广播: 点击"开始广播"按钮
- ✅ 权限确认: 允许访问摄像头和麦克风
- 🔄 切换摄像头: 点击"切换摄像头"按钮(前置/后置)
- ⏹️ 停止广播: 点击"停止广播"结束传输
iPad端操作
- 📺 打开监视器: 在Safari中访问viewer.html
- ⏳ 等待连接: 页面会自动连接iPhone
- 🖥️ 全屏观看: 点击"全屏"按钮进入全屏模式
- 🔄 重新连接: 如果断开,点击"重连"按钮
⚙️ 技术参数
- 视频分辨率: 1280x720 (可调整)
- 帧率: 30fps (可调整)
- 音频: 支持音频传输
- 延迟: 200-500ms (取决于网络环境)
- 编码: VP8/VP9 (WebRTC自动选择)
- 网络: 本地WiFi,无需互联网连接
🔧 自定义配置
调整视频质量
在broadcaster.html中修改视频约束:
const constraints = {
video: {
facingMode: currentFacingMode,
width: { ideal: 1920 }, // 宽度
height: { ideal: 1080 }, // 高度
frameRate: { ideal: 30 } // 帧率
},
audio: true
};
修改服务器端口
在server.js中修改:
const PORT = process.env.PORT || 8080; // 改为你想要的端口
🐛 故障排除
连接问题
- 确认设备在同一WiFi网络
- 检查防火墙设置
- 确认IP地址正确
- 重启服务器和刷新网页
权限问题
- iPhone: 在Safari设置中允许摄像头权限
- iPad: 确保允许自动播放视频
- HTTPS: 如需HTTPS,需要配置SSL证书
性能优化
- 关闭其他应用: 释放内存和CPU资源
- 稳定WiFi: 确保WiFi信号强度良好
- 降低分辨率: 如果卡顿,可以降低视频分辨率
📱 设备兼容性
支持的设备
- iPhone: iPhone 6及以上 (iOS 11+)
- iPad: iPad Air 2及以上 (iPadOS 13+)
- 浏览器: Safari 11+
iPad Air 2特别说明
- ✅ 支持iPadOS 15.8.4
- ✅ 支持WebRTC
- ✅ 支持H.264视频解码
- ⚠️ 性能有限,建议使用较低分辨率
🔒 安全说明
- 🏠 本地网络: 数据仅在本地WiFi网络传输
- 🔐 无云存储: 不会上传到任何云服务
- 👥 访问控制: 仅同一网络设备可访问
- 🛡️ 临时会话: 关闭浏览器即断开连接
🎯 使用场景
- 👨🍳 厨房烹饪: 监控炉灶和烹饪过程
- 📹 直播辅助: 作为第二视角监视器
- 👶 婴儿监护: 简单的婴儿监控系统
- 🏠 家庭监控: 临时监控特定区域
🛠️ 进阶开发
已实现的高级功能
✅ 截图功能: 双指点击或使用快捷键截图
✅ 多设备支持: 支持同时连接多个观看者
✅ 自适应质量: 根据网络状况自动调整视频质量
✅ 智能重连: 网络断开后的自动重连机制
✅ 连接监控: 实时显示连接质量和性能统计
✅ 视频缩放: 双击屏幕进行视频缩放
✅ 键盘快捷键: 支持键盘操作
✅ 安全防护: 完整的安全机制和输入验证
可扩展功能
- 🎙️ 音频支持: 添加双向音频传输
- 📹 录制功能: 视频录制和本地保存
- 🌙 夜视模式: 低光环境优化
- 📊 数据分析: 连接质量历史记录
- 🔔 通知系统: 连接状态推送通知
- 🎨 主题定制: 界面主题和颜色定制
架构优化
- 🏗️ 模块化重构: 进一步代码模块化
- 🧪 测试覆盖: 添加单元测试和集成测试
- 📦 容器化: Docker容器化部署
- 📈 监控集成: Prometheus监控指标
- 🔄 负载均衡: 支持多服务器部署
性能优化方向
- 🚀 硬件编解码: 启用WebRTC硬件加速
- 📊 智能调度: 基于设备性能的编码参数调整
- 💾 内存优化: 进一步减少内存占用
- ⚡ 缓存策略: 静态资源缓存优化
- 🌐 CDN支持: 公网部署CDN加速
📄 许可证
MIT License - 可自由使用、修改和分发
🤝 贡献
欢迎提交Issue和Pull Request!
享受你的厨房监视器! 🍳✨