即時串流協議（Real Time Streaming Protocol，RTSP）是一種網路應用協議，專為娛樂和通訊系統的使用，以控制流媒體伺服器。該協議用於建立和控制終端之間的媒體會話。媒體伺服器的客戶端釋出 VCR 命令，例如播放，錄製和暫停，以便於即時控制從伺服器到客戶端（影片點播）或從客戶端到伺服器（語音錄音）的媒體流。 流資料本身的傳輸不是 RTSP 的任務。大多數 RTSP 伺服器使用即時傳輸協議（RTP）和即時傳輸控制協議（RTCP）結合媒體流傳輸。然而，一些供應商實現專有傳輸協議。例如，RealNetworks 公司的 RTSP 伺服器軟體也使用 RealNetworks 的專有即時資料傳輸（RDT）。 RTSP 由 RealNetworks 公司，Netscape 公司 和哥倫比亞大學開發，第一稿於 1996 年提交給 IETF。由網際網路工程任務組（IETF）的多方多媒體會話控制工作組（MMUSIC WG）進行了標準化，並於 1998 年釋出為 RFC 2326。RFC 2326 Real Time Streaming Protocol RTSP IETF 1998 RTSP 20 於 2016 年釋出為 RFC 7826，作為 RTSP 10 的替代品。RTSP 20 基於 RTSP 10，但除了基本的版本協商機制之外不向後相容。 協議指令 雖然在某些方面與 HTTP 類似，RTSP 定義了控制多媒體播放控制順序。雖然 HTTP 是無狀態的，但 RTSP 具有狀態；當需要跟蹤併發會話時使用識別符號。像 HTTP 一樣，RTSP 使用 TCP 來維護端到端連線，而大多數 RTSP 控制訊息由客戶端傳送到伺服器，一些命令沿著另一個方向（即從伺服器到客戶端）傳播。 這裡提供了基本的 RTSP 請求。一些典型的 HTTP 請求，如 OPTIONS 請求也可用。預設傳輸埠為 554 ，該埠同時應用於 TCP 和 UDP，但後者很少用於控制請求。 OPTIONS 請求 OPTIONS 請求返回伺服器將接受的請求型別。 C 代表客戶端 S 代表服務端 CS OPTIONS rtspexamplecommediamp4 RTSP10 CSeq 1 Require implicitplay ProxyRequire gzippedmessages SC RTSP10 200 OK CSeq 1 Public DESCRIBE SETUP TEARDOWN PLAY PAUSE DESCRIBE 請求 DESCRIBE 請求包括 RTSP URL（rtsp）以及可以處理的回覆資料型別。該回復包括呈現描述，通常以會話描述協議（SDP）格式。其中，簡報描述列出了使用匯總網址控制的媒體流。在典型的情況下，每個音訊和影片都有一個媒體流。 CS DESCRIBE rtspexamplecommediamp4 RTSP10 CSeq 2 SC RTSP10 200 OK CSeq 2 ContentBase rtspexamplecommediamp4 ContentType applicationsdp ContentLength 460 mvideo 0 RTPAVP 96 acontrolstreamid0 arangenpt07741000 alengthnpt7741000 artpmap96 MP4VES5544 amimetypestringvideoMP4VES aAvgBitRateinteger304018 aStreamNamestringhinted video track maudio 0 RTPAVP 97 acontrolstreamid1 arangenpt07712000 alengthnpt7712000 artpmap97 mpeg4generic320002 amimetypestringaudiompeg4generic aAvgBitRateinteger65790 aStreamNamestringhinted audio track SETUP 請求 SETUP 請求指定如何傳輸單個媒體流。這必須在傳送 PLAY 請求之前完成。請求包含媒體流 URL 和傳輸說明符。該說明符通常包括用於接收 RTP 資料（音訊或影片）的本地埠，另一個用於 RTCP 資料（元資訊）。伺服器回覆通常會確認所選引數，並填寫缺少的部分，例如伺服器選擇的埠。必須在傳送聚合播放請求之前，使用 SETUP 配置每個媒體流。 CS SETUP rtspexamplecommediamp4streamid0 RTSP10 CSeq 3 Transport RTPAVPunicastclient_port80008001 SC RTSP10 200 OK CSeq 3 Transport RTPAVPunicastclient_port80008001server_port90009001ssrc1234ABCD Session 12345678 Play 播放請求 Play 播放請求 將導致播放一個或所有媒體流。可以透過傳送多個播放請求來堆疊播放請求。URL 可以是聚合 URL（播放所有媒體流）或單個媒體流 URL（僅播放該流）。可以指定範圍。如果沒有指定範圍，流將從頭開始播放，並播放到最後，或者如果流暫停，則在暫停點恢復播放。 CS PLAY rtspexamplecommediamp4 RTSP10 CSeq 4 Range npt520 Session 12345678 SC RTSP10 200 OK CSeq 4 Session 12345678 RTPInfo urlrtspexamplecommediamp4streamid0seq9810092rtptime3450012 PAUSE 暫停請求 PAUSE 暫停請求 暫時停止一個或所有媒體流，因此稍後可以透過播放請求恢復。請求包含聚合或媒體流 URL。PAUSE 請求中的範圍引數指定何時暫停。當省略範圍引數時，暫停會立即無限期地發生。 CS PAUSE rtspexamplecommediamp4 RTSP10 CSeq 5 Session 12345678 SC RTSP10 200 OK CSeq 5 Session 12345678 RECORD 記錄請求 RECORD 該方法根據呈現描述開始記錄一系列媒體資料。時間戳反映開始和結束時間（UTC）。如果沒有給定時間範圍，請使用簡報描述中提供的開始或結束時間。如果會話已經開始，請立即開始錄製。伺服器決定是否將記錄的資料儲存在請求 URI 或其他 URI 下。如果伺服器不使用請求 URI，則響應應為 201，幷包含描述請求狀態並引用新資源的實體以及 Location 頭。 CS RECORD rtspexamplecommediamp4 RTSP10 CSeq 6 Session 12345678 SC RTSP10 200 OK CSeq 6 Session 12345678 ANNOUNCE 釋出請求 ANNOUNCE 釋出方法有兩個目的： 從客戶端傳送到伺服器時，ANNOUNCE 將請求 URL 標識的簡報或媒體物件的描述釋出到伺服器。當從伺服器傳送到客戶端時，ANNOUNCE 會即時更新會話描述。如果新的媒體流被新增到簡報中（例如，在即時演示中），則應該再次傳送整個簡報描述，而不僅僅是附加的元件，以便可以刪除元件。下面郵箱 號替換成 CS ANNOUNCE rtspexamplecommediamp4 RTSP10 CSeq 7 Date 23 Jan 1997 153506 GMT Session 12345678 ContentType applicationsdp ContentLength 332 v0 omhandley 2890844526 2890845468 IN IP4 12616644 sSDP Seminar iA Seminar on the session description protocol uhttpwwwcsuclacukstaffMHandleysdp03ps emjhisiedu Mark Handley cIN IP4 22421712127 t2873397496 2873404696 arecvonly maudio 3456 RTPAVP 0 mvideo 2232 RTPAVP 31 SC RTSP10 200 OK CSeq 7 TEARDOWN 停止釋出流請求 TEARDOWN 請求用於終止會話。它停止所有媒體流，並釋放所有與會話相關的資料在伺服器上。 CS TEARDOWN rtspexamplecommediamp4 RTSP10 CSeq 8 Session 12345678 SC RTSP10 200 OK CSeq 8 GET_PARAMETER 獲取引數請求 GET_PARAMETER 請求檢索在 URI 中指定的呈現或流的引數的值。答覆和回覆的內容留給實施。沒有實體的 GET_PARAMETER 可能用於測試客戶端或伺服器活動（ping）。 SC GET_PARAMETER rtspexamplecommediamp4 RTSP10 CSeq 9 ContentType textparameters Session 12345678 ContentLength 15 packets_received jitter CS RTSP10 200 OK CSeq 9 ContentLength 46 ContentType textparameters packets_received 10 jitter 03838 SET_PARAMETER 設定引數請求 SET_PARAMETER 此方法請求設定由 URI 指定的簡報或流的引數值。 CS SET_PARAMETER rtspexamplecommediamp4 RTSP10 CSeq 10 Contentlength 20 Contenttype textparameters barparam barstuff SC RTSP10 451 Invalid Parameter CSeq 10 Contentlength 10 Contenttype textparameters barparam REDIRECT 重定向請求 REDIRECT 請求通知客戶端它必須連線到另一個伺服器位置。它包含強制性標頭檔案位置，表示客戶端應發出該 URL 的請求。它可能包含引數 Range，它指示重定向何時生效。如果客戶端希望繼續傳送或接收此 URI 的媒體，則客戶端必須向指定的主機發出針對當前會話的 TEARDOWN 請求和新會話的 SETUP。 SC REDIRECT rtspexamplecommediamp4 RTSP10 CSeq 11 Location rtspbigservercom8001 Range clock19960213T143205Z 嵌入式（交錯式）二進位制資料 某些防火牆設計和其他情況可能會強制伺服器交叉 RTSP 方法和流資料。通常應避免這種交錯，除非有必要，因為它會使客戶端和伺服器操作複雜化，並增加額外的開銷。交叉二進位制資料只能在 RTSP 透過 TCP 傳輸時使用。諸如 RTP 資料包之類的流資料由 ASCII 碼符號（24 個十六進位制）封裝，後跟一個位元組的通道識別符號，後面是封裝二進位制資料的長度，以二進位制位元組為單位，以網路位元組順序排列。流資料緊隨其後，沒有 CRLF，但包括上層協議頭。每個 塊只包含一個上層協議資料單元，例如一個 RTP 包。 CS SETUP rtspexamplecommediamp4 RTSP10 CSeq 3 Transport RTPAVPTCPinterleaved01 SC RTSP10 200 OK CSeq 3 Date 05 Jun 1997 185718 GMT Transport RTPAVPTCPinterleaved01 Session 12345678 CS PLAY rtspexamplecommediamp4 RTSP10 CSeq 4 Session 12345678 SC RTSP10 200 OK CSeq 4 Session 12345678 Date 05 Jun 1997 185915 GMT RTPInfo urlrtspexamplecommediamp4 seq232433rtptime972948234 SC 000 2 byte lengthlength bytes data wRTP header SC 000 2 byte lengthlength bytes data wRTP header SC 001 2 byte lengthlength bytes RTCP packet 速率適配 使用 RTP 和 RTCP 的 RTSP 允許實現速率適配。 已經成功實現的 服務端 Darwin Streaming Server Opensourced version of QuickTime Streaming Server maintained by Apple Erlyvideo has RTSP client and can restream video to other protocols Feng Lean and mean streaming server with focus on rfc compliance FFmpeg includes ffserver a GPL or LGPL RTSP streaming server GStreamer based RTSP Server and client Helix DNA Server RealNetworks streaming server Comes in both opensource and proprietary flavors Helix Universal Server RealNetworks commercial streaming server for RTSP RTMP iOS Silverlight and HTTP streaming media clients LEADTOOLS Media Streaming Server SDK from LEAD Technologies supports RTSPRTP RTSPRTP MPEG2 Transport RTSPRTP over HTTP LIVE555 liveMedia openRTSP Open source C server and client libraries used in wellknown clients like VLC and mplayer Managed Media Aggregation NET C RFC compliant implementation of RTSP written in completely managed code Nimble Streamer supports RTSP pull and announce input with TCP interleaved playback output pvServer Formerly called PacketVideo Streaming Server this is AlcatelLucents streaming server product QuickTime Streaming Server Apples closedsource streaming server that ships with Mac OS X Server SharpRTSP Open sourceC RTSP streaming server ViaMotion Integrated RTSP server for Video On Demand by Anevia VideoLAN Open source media player and streaming server VX30 Streaming video server and embedded Java client from Maui XStream Windows Media Services Microsoft streaming server previously included with Windows Server that uses RTSP modified with Windows Media extensions Wowza Streaming Engine Multiformat streaming server for RTSPRTP RTMP MPEGTS ICY HTTP HTTP Live Streaming HTTP Dynamic Streaming Smooth Streaming MPEGDASH WebRTC Xenon Streaming Server 來自 Vidiator Technology（US）Inc 的移動流伺服器 YouTube 在桌面上透過移動 HTTPS 版本檢視網站時，可以使用流媒體選項。 客戶端 Astra cURL 從 7200 版本 2010 年 2 月 9 日 FFmpeg GStreamer JetAudio LIVE555 liveMedia openRTSP 開源，C 伺服器和客戶端庫，如 VLC 和 mplayer 等知名客戶端使用。 Media Player Classic MPlayer MythTV via Freebox Managed Media Aggregation NET C RFC compliant implementation of RTSP written in completely managed code omxplayer QuickTime RealPlayer SharpRTSP 開源，C＃ 編寫的 RTSP 流客戶端。 Skype Spotify VLC media player Winamp Windows Media Player xine 參考 外部連結 有關 RTSP 更詳細的介紹 關於 RTSP 的 RFC 檔案 RTSP RTP RTCP 相關資料 Category 應用層協議 Category 串流