標籤:
http://blog.csdn.net/span76/article/details/12913307
離線媒體只是用 Http協議去讀取伺服器端檔案而已,而對於即時直播如何?, 這裡就要用到 RTP/RTCP協議了
RTP/RTCP
RTP是基於 UDP協議的, UDP不用建立串連,效率更高;但允許丟包, 這就要求在重新組裝媒體的時候多做些工作
RTP只是包裹內容資訊,而RTCP是交換控制資訊的,Qos是通過RTCP實現的
RTP中一個重要的概念是 session, 對於一個 audio stream 可以是一個session 但可以有多個 contributor, 也可以有多個監聽者, 比如網路電話
做即時視頻流,先用採集裝置,直接把視頻做成 H.264 的 NALu,而後通過 RTP打包,傳輸給用戶端
有一篇文就是介紹如何把 NALu 用RTP打包的
http://www.rosoo.net/a/201108/14896.html
RTSP
但還缺少一個環節, 應用程式對應的是 play, seek, pause, stop, 如何把應用指令和 RTP的傳輸結合起來.
RTSP正是為瞭解決這個問題產生的
RTSP是應用程式層的協議和 HTTP協議很相似,用戶端和伺服器通過傳遞文本,通知如何進行 RTP/RTCP資訊的互動
,我們可以看到 RTSP也可以不用 RTP, 而用TCP來實現流媒體傳遞
RTSP的 client 串連 server 多通過 SDP(會話描述協議)傳遞資訊
[html] view plaincopy
- C -> S :
- DESCRIBE rtsp://server.example.com/fizzle/foo RTSP/1.0 312
- Accept: application/sdp, application/rtsl, application/mheg
-
- S -> C :
- RTSP/1.0 200 312 OK
- Date: 23 Jan 1997 15:35:06 GMT
- Content-Type: application/sdp
- Content-Length: 376
-
- v=0
- o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4
- s=SDP Seminar
- i=A Seminar on the session description protocol
- u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
- e=[email protected] (Mark Handley)
- c=IN IP4 224.2.17.12/127
- t=2873397496 28973404696
- a=recvonly
- m=audio 3456 RTP/AVP 0
- m=video 2232 RTP/AVP 31
- m=whiteboard 32416 UDP WB
- a=orient:portrait
Session description
v= (protocol version)
o= (owner/creator and session identifier)
s= (session name)
i=* (session information)
u=* (URI of description)
e=* (email address)
p=* (phone number)
c=* (connection information - not required if included in all media)
b=* (zero or more bandwidth information lines)
One or more time descriptions ("t=" and "r=" lines, see below)
z=* (time zone adjustments)
k=* (encryption key)
a=* (zero or more session attribute lines)
Zero or more media descriptions
通過這些資訊,client 就可以串連正確的 RTP session
關於RTMP和RTSP的區別
RTMP: RTM(Messaging)P 是 Adobe公司自己的規範,為Flash播放器和伺服器之間音頻、視頻和資料轉送開發的私人協議。
【轉載】 瞭解即時媒體的播放(RTP/RTCP 和 RTSP)