<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>RTSP - tag - 沐木</title><link>https://oldletter.cn/tags/rtsp/</link><description>RTSP - tag - 沐木</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sat, 11 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://oldletter.cn/tags/rtsp/" rel="self" type="application/rss+xml"/><item><title>实时视频（一）：RTSP 到浏览器的协议选择</title><link>https://oldletter.cn/posts/rtsp-browser-01-protocol-options/</link><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><author>mumu</author><guid>https://oldletter.cn/posts/rtsp-browser-01-protocol-options/</guid><description><![CDATA[<blockquote>
<p>系列导航：<a href="/posts/rtsp-browser-01-protocol-options/" rel="">8</a> | <a href="/posts/rtsp-browser-02-rtp-access-unit/" rel="">9</a> | <a href="/posts/rtsp-browser-03-webcodecs-wasm/" rel="">10</a></p></blockquote>
<p>浏览器没有通用的 RTSP 播放入口。摄像头的 RTP 负载需要经过协议转换、容器封装或转码，才能交给浏览器的媒体栈。协议选择不能从“哪个库能播放”开始，应从延迟预算、编码格式、网络边界、并发方式和音频要求倒推。</p>
<h2 id="先写延迟预算">先写延迟预算</h2>
<p>端到端延迟可以拆成：</p>
<p>$$L = L_{capture} + L_{encode} + L_{gateway} + L_{network} + L_{buffer} + L_{decode} + L_{render}$$</p>
<p>每一项都要有观测点。只看浏览器缓冲区会漏掉摄像头编码和网关排队。实时云台控制通常需要低延迟和快速恢复，回放或大屏分发更看重 CDN 复用和长连接稳定性。延迟预算写成上限后，协议比较才有可执行标准。</p>
<div class="mermaid" id="id-2" data-mermaid-definition="Zmxvd2NoYXJ0IFRECiAgICBDYW1lcmFbUlRTUCDmkYTlg4/lpLRdIC0tPiBQdWxsW&#43;acjeWKoeerr&#43;aLiea1geS4juS/nea0u10KICAgIFB1bGwgLS0&#43;IFJUUFtSVFAg6Kej5YyFXQogICAgUlRQIC0tPiBBVVtBY2Nlc3MgVW5pdF0KICAgIEFVIC0tPiBXZWJSVENbV2ViUlRDIOaJk&#43;WMhV0KICAgIEFVIC0tPiBGTVA0W2ZNUDQg5bCB6KOFXQogICAgQVUgLS0&#43;IFdTW1dlYlNvY2tldCDlrZfoioLpgJrpgZNdCiAgICBXZWJSVEMgLS0&#43;IEJyb3dzZXJb5rWP6KeI5Zmo5pKt5pS&#43;XQogICAgRk1QNCAtLT4gTVNFW01TRV0KICAgIEZNUDQgLS0&#43;IEhMU1tMTC1ITFNdCiAgICBXUyAtLT4gRGVjb2RlcltXZWJDb2RlY3Mg5oiWIFdBU01dCiAgICBNU0UgLS0&#43;IEJyb3dzZXIKICAgIEhMUyAtLT4gQnJvd3NlcgogICAgRGVjb2RlciAtLT4gQnJvd3Nlcg==">flowchart TD
    Camera[RTSP 摄像头] --&gt; Pull[服务端拉流与保活]
    Pull --&gt; RTP[RTP 解包]
    RTP --&gt; AU[Access Unit]
    AU --&gt; WebRTC[WebRTC 打包]
    AU --&gt; FMP4[fMP4 封装]
    AU --&gt; WS[WebSocket 字节通道]
    WebRTC --&gt; Browser[浏览器播放]
    FMP4 --&gt; MSE[MSE]
    FMP4 --&gt; HLS[LL-HLS]
    WS --&gt; Decoder[WebCodecs 或 WASM]
    MSE --&gt; Browser
    HLS --&gt; Browser
    Decoder --&gt; Browser</div><h2 id="四种下游路径">四种下游路径</h2>
<p>WebRTC 适合交互预览。它有 ICE、拥塞控制、抖动缓冲和关键帧反馈，工程重点落在信令、TURN、会话权限和媒体服务器。低延迟不等于零延迟，编码 GOP、网络中继和浏览器缓冲仍会影响体验。</p>]]></description></item></channel></rss>