木棉花開時,鳳凰涅槃日!
RTSP是由Real network 和Netscape共同提出的如何有效地在IP網路上傳輸流媒體資料的應用層協議。 實時流協議(RTSP)建立並控制一個或幾個時間同步的連續流媒體,如音訊和視訊。儘管連續媒體流與控制流交叉是可能的,RTSP 本身並不傳送連續媒體流。換言之,RTSP 充當多媒體伺服器的網路遠端控制。RTSP 提供了一個可擴充套件框架,實現實時資料(如音訊與視訊)的受控、按需傳送。資料來源包括實況資料與儲存的剪輯。RTSP
用於控制多個數據傳送會話,提供了選擇傳送通道(如 UDP、組播 UDP 與 TCP 等)的方式,並提供了選擇基於 RTP 的傳送機制的方法。
目前還沒有 RTSP 連線的概念;伺服器維護由識別符標識的會話。RTSP 會話不會繫結到傳輸層連線,如 TCP。在 RTSP 會話期間,RTSP 客戶端可開啟或關閉多個對伺服器的可靠傳輸連線以發出 RTSP 請求。它也可選擇使用無連線傳輸協議,如 UDP。
RTSP 控制的流可能用到 RTP,但 RTSP 操作並不依賴用於傳輸連續媒體的傳輸機制。RTSP 在語法和操作上與 HTTP/1.1 類似,因此 HTTP 的擴充套件機制在多數情況下可加入 RTSP。然而,在很多重要方面 RTSP 仍不同於 HTTP :
- RTSP 引入了大量新方法並具有一個不同的協議識別符號:
- 在大多數情況下,RTSP 伺服器需要保持預設狀態,與 HTTP 的無狀態相對;
- RTSP 中客戶端和伺服器都可以發出請求;
- 在多數情況下,資料由不同的協議傳輸;
- RTSP 使用 ISO 10646 (UTF-8)而並非 ISO 8859-1,與當前的國際標準 HTML 相一致;
- URI 請求總是包含絕對 URI。為了與過去的錯誤相互相容,HTTP/1.1 只在請求過程中傳送絕對路徑並將主機名置於另外的頭欄位。
該協議支援如下操作:
- 從媒體伺服器上檢索媒體:使用者可通過 HTTP 或其它方法提交一個演示描述請求;
- 媒體伺服器邀請進入會議: 媒體伺服器可被邀請參加正進行的會議,或回放媒體,或記錄部分或全部演示;
- 將新媒體加到現有演示中:如伺服器能告訴客戶端接下來可用的媒體內容,對現場直播顯得尤其有用
RTSP 是一種文字協議,採用 UTF-8 編碼中的 ISO 10646 字符集。一行可通過 CRLF 終止,但接收端需要做好解釋 CR 和 LF 作為一行終止符的準備。關於頭欄位概述如下:
Header Type Support Methods Accept R opt. entity Accept-Encoding R opt. entity Accept-Language R opt. all Allow R opt. all Authorization R opt. all Bandwidth R opt. all Blocksize R opt. All but OPTIONS, TEARDOWN Cache-Control G opt. SETUP Conference R opt. SETUP Connection G req. all Content-Base E opt. entity Content-Encoding E req. SET_PARAMETER Content-Encoding E req. DESCRIBE, ANNOUNCE Content-Language E req. DESCRIBE, ANNOUNCE Content-Length E req. SET_PARAMETER, ANNOUNCE Content-Length E req. entity Content-Location E opt. entity Content-Type E req. SET_PARAMETER, ANNOUNCE Content-Type R req. entity CSeq G req. all Date G opt. all Expires E opt. DESCRIBE, ANNOUNCE From R opt. all If-Modified-Since R opt. DESCRIBE, SETUP Last-Modified E opt. entity Proxy-Authenticate Proxy-Require R req. all Public R opt. all Range R opt. PLAY, PAUSE, RECORD Range R opt. PLAY, PAUSE, RECORD Referer R opt. all Require R req. all Retry-After R opt. all RTP-Info R req. PLAY Scale Rr opt. PLAY, RECORD Session Rr req. All but SETUP, OPTIONS Server R opt. all Speed Rr opt. PLAY Transport Rr req. SETUP Unsupported R req. all User-Agent R opt. all Via G opt. all WWW-Authenticate R opt. all
型別 "g" 表示請求和響應中的通用請求頭;型別 "R" 表示請求頭;型別 "r" 表示響應頭;型別 "e" 表示實體頭欄位。在 "support" 一欄中 標有 "req." 的欄位 必須由接收者以特殊的方法實現;而 "opt." 的欄位是可選的。注意,不是所有 "req." 欄位在該型別的每個請求中都會被髮送。 "req." 只表示客戶機(支援響應頭)和伺服器(支援請求頭)必須執行該欄位。最後一欄列出了關於頭欄位產生作用的方法;其中 "entity" 針對於返回一個資訊主體的所有方法。
RTSP訊息格式:
RTSP的訊息有兩大類 --- 請求訊息(request), 迴應訊息(response)。
請求訊息:
方法 URI RTSP版本 CR LF
訊息頭 CR LF CR LF
訊息體 CR LF
其中方法包括OPTION迴應中所有的命令,URI是接受方的地址,例如:rtsp://192.168.20.136。RTSP版本一般都是 RTSP/1.0。每行後面的CR LF表示回車換行,需要接受端有相應的解析,最後一個訊息頭需要有兩個CR LF
迴應訊息:
RTSP版本 狀態碼 解釋 CR LF
訊息頭 CR LF CR LF
訊息體 CR LF
其中RTSP版本一般都是RTSP/1.0, 狀態碼是一個數值, 200表示成功, 解釋是與狀態碼對應的文字解釋.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
簡單的rtsp互動過程:
C表示rtsp客戶端, S表示rtsp服務端
1. C->S:OPTION request //詢問S有哪些方法可用
1. S->C:OPTION response //S迴應資訊中包括提供的所有可用方法
2. C->S:DESCRIBE request //要求得到S提供的媒體初始化描述資訊
2. S->C:DESCRIBE response //S迴應媒體初始化描述資訊,主要是sdp
3. C->S:SETUP request //設定會話的屬性,以及傳輸模式,提醒S建立會話
3. S->C:SETUP response //S建立會話,返回會話識別符號,以及會話相關資訊
4. C->S:PLAY request //C請求播放
4. S->C:PLAY response //S迴應該請求的資訊
S->C:傳送流媒體資料
5. C->S:TEARDOWN request //C請求關閉會話
5. S->C:TEARDOWN response //S迴應該請求
上述的過程是標準的、友好的rtsp流程,但實際的需求中並不一定按部就班來。 其 中第3和4步是必需的!第一步,只要伺服器客戶端約定好,有哪些方法可用,則option請求可以不要。第二步,如果我們有其他途徑得到媒體初始化描述信 息(比如http請求等等),則我們也不需要通過rtsp中的describe請求來完成。第五步,可以根據系統需求的設計來決定是否需要。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rtsp中常用方法:
1. OPTION
目的是得到伺服器提供的可用方法:
OPTIONS rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 1 //每個訊息都有序號來標記,第一個包通常是option請求訊息
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
伺服器的迴應資訊包括提供的一些方法,例如:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 1 //每個迴應訊息的cseq數值和請求訊息的cseq相對應
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SCALE,GET_PARAMETER //伺服器提供的可用的方法
2. DESCRIBE
C向S發起DESCRIBE請求,為了得到會話描述資訊(SDP):
DESCRIBE rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 2
token:
Accept: application/sdp
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
伺服器迴應一些對此會話的描述資訊(sdp):
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 2
x-prev-url: rtsp://192.168.20.136:5000
x-next-url: rtsp://192.168.20.136:5000
x-Accept-Retransmit: our-retransmit
x-Accept-Dynamic-Rate: 1
Cache-Control: must-revalidate
Last-Modified: Fri, 10 Nov 2006 12:34:38 GMT
Date: Fri, 10 Nov 2006 12:34:38 GMT
Expires: Fri, 10 Nov 2006 12:34:38 GMT
Content-Base: rtsp://192.168.20.136:5000/xxx666/
Content-Length: 344
Content-Type: application/sdp
v=0 //以下都是sdp資訊
o=OnewaveUServerNG 1451516402 1025358037 IN IP4 192.168.20.136
s=/xxx666
u=http:///
[email protected]
c=IN IP4 0.0.0.0
t=0 0
a=isma-compliance:1,1.0,1
a=range:npt=0-
m=video 0 RTP/AVP 96 //m表示媒體描述,下面是對會話中視訊通道的媒體描述
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 profile-level-id=245;config=000001B0F5000001B509000001000000012000C888B0E0E0FA62D089028307 a=control:trackID=0 //trackID=0表示視訊流用的是通道0
3.SETUP
客戶端提醒伺服器建立會話,並確定傳輸模式:
SETUP rtsp://192.168.20.136:5000/xxx666/trackID=0 RTSP/1.0
CSeq: 3
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
//uri中 帶有trackID=0,表示對該通道進行設定。Transport引數設定了傳輸模式,包的結構。接下來的資料包頭部第二個位元組位置就是 interleaved,它的值是每個通道都不同的,trackID=0的interleaved值有兩個0或1,0表示rtp包,1表示rtcp包,接 受端根據interleaved的值來區別是哪種資料包。
伺服器迴應資訊:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 3
Session: 6310936469860791894 //伺服器迴應的會話識別符號
Cache-Control: no-cache
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=6B8B4567
4.PLAY
客戶端傳送播放請求:
PLAY rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 4
Session: 6310936469860791894
Range: npt=0.000- //設定播放時間的範圍
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
伺服器迴應資訊:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 4
Session: 6310936469860791894
Range: npt=0.000000-
RTP-Info: url=trackID=0;seq=17040;rtptime=1467265309
//seq和rtptime都是rtp包中的資訊
5.TEARDOWN
客戶端發起關閉請求:
TEARDOWN rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 5
Session: 6310936469860791894
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
伺服器迴應:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 5
Session: 6310936469860791894
Connection: Close
相關推薦
木棉花開時,鳳凰涅槃日!
RTSP是由Real network 和Netscape共同提出的如何有效地在IP網路上傳輸流媒體資料的應用層協議。 實時流協議(RTSP)建立並控制一個或幾個時間同步的連續流媒體,如音訊和視訊。儘管連續媒體流與控制流交叉是可能的,RTSP 本身並不傳送連續媒體流。換言之,RTSP 充當多媒體伺服器的網路遠
如何使瀏覽器打開時,默認的文檔模式就是標準模式
frame ie8 ie10 默認 ram html5 comm jsp 寫上 請看下方: 第一步,將代碼設置成html5的模式,那麽用戶打開項目之後,文檔模式就是標準的;即不會是ie5Qurik模式;但有可能是ie7標準模式; 第二步, 2.1 在html head中寫上
Xshell 打開時,初始運行卡慢優化方法
tsar html 重新 for xshell 打開 其他 title htm 我使用的是Xshell 6免費版,有需要的同學可以去這個地址下載:https://www.netsarang.com/download/down_form.html?code=622 一開始
MyBatis入門介紹,鳳凰涅槃:從 iBatis 到 MyBatis
對於從事 Java EE 的開發人員來說,iBatis 是一個再熟悉不過的持久層框架了,在 Hibernate、JPA 這樣的一站式物件 / 關係對映(O/R Mapping)解決方案盛行之前,iBaits 基本是持久層框架的不二選擇。即使在持久層框架層出不
開博之日,謹此銘記!
ctx ~~ 風中 一聲 col 方向 恢復 font 憂傷 一心集·染脂梨花 雲遮住皎潔的月光 找不到你離開的方向 草叢間七八只蟋蟀 又奏起不知名的憂傷 桌上余溫尚存的紙杯 卻被胭脂掩蓋了茶香 你無情的離去還叫我把你遺忘 可滴在我手心的淚又叫我如何遺忘 石子墜入我門
【fifan的專欄】夫君子之行,靜以修身,儉以養德。非淡泊無以明志,非寧靜無以致遠。夫學須靜也,才須學也,非學無以廣才,非志無以成學。淫慢則不能勵精,險躁則不能治性。年與時馳,意與日去,遂成枯落,多不接世,悲守窮廬,將復何及!
夫君子之行,靜以修身,儉以養德。非淡泊無以明志,非寧靜無以致遠。夫學須靜也,才須學也,非學無以廣才,非志無以成學。淫慢則不能勵精,險躁則不能治性。年與時馳,意與日去,遂成枯落,多不接世,悲守窮廬,將復...
使用windows打開一個文本時,鼠標右鍵找不到notepad
windows 右鍵 找不到 【出現問題】:notepad++已經安裝在Windows中,但是當要打開一個文件時,鼠標右鍵卻找不到notepd++【解決辦法】:打開notepad++後記事本,輸入:Windows Registry Editor Version 5.00 [HKEY_CLASSES
5月20日重點:當請求的參數是動態的形式時,原生app與h5頁面之間數據交互的方法
post方法 註意 data 不能 images 動態 構建 parse 拼接 方案一: 1.app在打開H5頁面的時候,把需要給的參數,以get的形式,放在H5的url中。 2.然後H5的js從url中獲取到需要的參數,拼接到ajax請求的url中。 3.H5ajax請求
低谷時,請讀書!
我想 所有 我不 解決問題 便是 還要 如何 情況 感覺 這段時期總感覺不太對勁,被敵人追擊、緊盯、蹲守和騷擾,整個戰局打的都不是很好,如同MF時總有個疾風步的劍聖在一旁等待吃我的經驗,心裏總是慌慌的。 雖然我也常常自勉,認為這才是年輕時候的磨練,但是總覺得這種磨練
PLSQL 打開時出現"動態執行表不可訪問,本會話的自動統計被禁止"
訪問權限 app 對話 導航 如果 name 局限 方式 點擊 這個報錯信息在不同的PL/SQL Developer版本都會出現,從上面詳細的報錯提示信息中我們可以判斷得到,報錯原因不在工具本身。在此,詳細記錄一下這個小問題的三種處理方法。1.第一種處理方法(不推薦)就是在
IE打開https網站時,取消證書問題提示
設置 完成 手動 進入 bubuko src 界面 找到 alt 上面介紹了,調用IE來打開對應的網頁問題,但是在實際測試中,有些網站是采用https協議的,這時候IE瀏覽器會彈出如下窗口,一般手動選擇後,才可進入登錄界面,那麽該如何解決呢? 1、點擊【繼續瀏覽此網頁】
SetProcessWorkingSetSize() 方法使內存降低了很多(把內存放到交換區,其實會降低性能)——打開後長時間不使用軟件,會有很長時間的加載過程,原來是這個!
相關 opera UNC 情況下 縮小 ole careful however guarantee 在項目中對程序性能優化時,發現用SetProcessWorkingSetSize() 方法使內存降低了很多,於是查閱了相關的資料如下: 我的程序為什麽能夠將占用的內存
當面試官問這些基礎的Python問題時,竟然還有80%的人不會!
核心 變量 字符 進制數 基礎 技術分享 run 但是 http 怎樣才能開始一個交互式解釋器的會話? 在Windows下可以通過點擊開始按鈕,選擇“程序”,點擊“Python”,然後選擇“Python(command line)”菜單選項來開始一個交互會話。 你應該在哪
安裝兩個版本的python安裝包,後安裝的python程序打開時閃退
bsp 卸載 雙擊 python的安裝 環境變量 系統默認 電腦 3.6 路徑 1.環境變量的問題 (Win7)右鍵打開“計算機”的屬性設置→高級系統設置→環境變量。 在系統變量中的path中,編輯,在末尾加入Python的安裝路徑“F:\Python27”, 路徑與
input屬性type為file打開文件資源管理器時,如何限制多次選取或只能一次選取的行為
esc image object ttr itl 文件 ctu 轉化 idt 1、input標簽沒有設置multiple屬性,文件資源管理器默認一次選取 <!doctype html> <html lang="en"> <head>
蘋果手機如何上YouTube看視頻,怎麽打開YouTube最有效解決方法!
cisco term out ado nag 使用 sha -o .com 現在這個時代還有多少人不知道YouTube這個軟件呢 ?YouTube已經成為現在年輕人的主流看視頻使用工具的。但是還是有很多人不懂的怎麽去使用如何打開YouTube軟件。可以說這個款軟件是被國.內
正確生成浮點型的方法,解決sqlachemy Float浮點型的坑,生成float類型時,長度和精度均為0,導致查詢不到結果!
依然 tab 圖片 control 選擇 分享 ice mod ble 問題描述 在使用flask_sqlachemy時,給price字段選擇了Float類型,數據庫用的mysql,生成數據庫表後,發現 from sqlalchemy import Float
火狐瀏覽器中設置打開新地址時,不會覆蓋原頁面的方法
希望 技術 col 有效 book 覆蓋 圖片 bsp 頁面 近期使用火狐瀏覽器發現打開新標簽頁時總是會覆蓋原頁面,百度了好多方法都是在選項中-設置標簽頁, 然而,在我用的瀏覽器版本裏均無此項可設置,一直百度總算找到一種辦法,親試絕對有效! 1、本人用的是火狐瀏覽器62.0
正確生成浮點型的方法,解決sqlachemy Float浮點型的坑,生成float型別時,長度和精度均為0,導致查詢不到結果!
問題描述 在使用flask_sqlachemy時,給price欄位選擇了Float型別,資料庫用的mysql,生成資料庫表後,發現 from sqlalchemy import Float,Column price = Column(Float,default=0.00) &
STM32除錯DEBUG時,需要知道的知識!
學習STM32開發,肯定少不了DEBUG除錯這一步驟。那麼,本文帶你瞭解一下這個除錯相關的知識。 本文以STM32F1、Cortex-M3為例,其它系列晶片或核心,原理相同或類似。 1概況 在STM32中,有很多除錯元件。使用它們可以執行各種除錯功能,包括