整体流程

1、采集与编码:摄像头/显卡/CPU 把原始帧编码成 H.264/H.265/AV1,音频多为 AAC/Opus。
2、打包封装:把编码后的帧封进容器或分片(MPEG-TS、MP4/fMP4、FLV,或直接裸流)。
3、传输协议:基于 UDP/TCP/HTTP/QUIC 的不同协议把数据发出去。
4、接收端:解封装/去包 → 解码 → 渲染;期间有抖动缓冲、同步与重传等策略。

基于 RTSP RTP WebRTC进一步学习

  • RTSP:负责“控制/会话”。通过 DESCRIBE/SETUP/PLAY 获取并建立会话,拿到相机端的 SDP(描述编解码与 RTP 参数)。
  • RTP 承载真实媒体(H.264/H.265 等视频帧、AAC/PCMU 等音频)。
  • 传媒体的是 SRTP(加密的 RTP),并带 ICE/STUN/TURN、DTLS、拥塞控制、NACK/PLI/FIR/FEC 等。

配合的本质:在中间层把“RTSP 拉到的 RTP 媒体”和“WebRTC 的 SRTP + SDP/ICE 信令体系”对接起来,形成浏览器可解的实时流。

一句话概况:RTSP 提供控制与 SDP;相机用 RTP 输出真实媒体;中间层据此把媒体重打包为 WebRTC 的 SRTP,并生成浏览器可接受的 SDP/ICE 会话。这样,RTP/RTSP 与 WebRTC 并不是直接互通,而是通过“中间层的协议/封装与信令桥接”实现浏览器预览。而这边中间件就是我们要做的。

额外学习:

  • H.264(又名 AVC):一种视频压缩编码标准/算法(Codec),把原始画面压缩成码流(帧里有 I/P/B,含 SPS/PPS 等参数)。
  • SPS 管“全局/序列级参数”,PPS 管“图像/片级参数”;两者提供解码所需的“说明书”。
  • IDR(即时解码刷新帧):一种特殊的 I 帧,标记随机接入点,自包含的关键帧,不依赖其他帧。解码器在此清空参考,IDR 之后的帧不会再引用 IDR 之前的帧,便于“中途加入/首开/快进定位”。
  • P、B 都是“参考预测帧”类型;P 只看过去,B 看过去+未来。B 提效但增延迟,低延迟预览通常少用或禁用 B 帧。

  • MP4:一种容器/封装格式(Container),用来“打包”音视频码流与元数据(时间戳、索引),便于存储和传输。

编码”和“封装”是两层:

H.264(把画面压缩成视频码流)

H.264 以 NAL 单元形式装进 RTP 包

MP4/TS/FLV(把视频码流+音频码流+时间戳打包)

把 H.264 作为一个 avc1/avc3 轨道存进去,参数在 avcC box(含 SPS/PPS),按 sample/chunk 组织并带完整时间轴(PTS/DTS)、索引(moov)。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐