【转载】 了解实时媒体的播放(RTP/RTCP 和 RTSP)
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?
? ?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播放器和服務器之間音頻、視頻和數據傳輸開發的私有協議。
?
轉載于:https://www.cnblogs.com/littleKing163/p/4823074.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【转载】 了解实时媒体的播放(RTP/RTCP 和 RTSP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乌鲁木齐半山铭邸是毛坯房还是精装修?
- 下一篇: html你可能还不知道的一些知识点