从 MJPEG 到 WebRTC:一次实时监控链路升级
记录音视频同步、TURN 穿透和树莓派媒体采集中的关键取舍。
问题背景
最初的监控页面分别使用 MJPEG 视频流和独立音频流。它们各自缓存、播放,没有共同时间戳,运行一段时间后容易出现音画漂移。
改造思路
使用 WebRTC 将 H.264 视频和 Opus 音频放进同一会话:
Picamera2 + USB麦克风
↓
H.264 + Opus
↓
WebRTC / TURN
↓
浏览器 video 元素
这次实践让我更清楚地认识到:连接成功不等于媒体发送成功。ICE、编解码和设备采集要分别观察状态与统计数据。
记录下来的经验
- 先用最小命令验证硬件参数。
- 为媒体轨道增加首帧与发送字节日志。
- 外网场景要把信令连接和媒体连接分开排查。
- 配置文件中的密钥不要写进代码仓库。