1. 程式人生 > >關於RTSP-Over-HTTP

關於RTSP-Over-HTTP

創建 net nbsp 解決 發送 示例 訪問 ket tun

一、概述

RTSP-Over-HTTP的關鍵(同時也是全部內容)在於:讓RTSP報文通過HTTP端口(即80端口)通信。

我們知道RTSP的標準端口是554,但是由於各種不同的防火墻等安全策略配置的原因,客戶端在訪問554端口時可能存在限制,從而無法正常傳輸RTSP報文。

但是HTTP端口(80端口)是普遍開放的,於是就有了讓RTSP報文通過80端口透傳的想法,即RTSP-Over-HTTP。

二、暫無標準

目前RTSP-Over-HTTP沒有標準做法,蘋果公司出了一份非正式文檔公開在外,並且也被LIVE555等支持。

三、LIVE555的RTSP-Over-HTTP

對照著蘋果公司的“Tunneling QuickTime RTSP and RTP over HTTP”文檔,LIVE555的具體做法如下:

首先客戶端開啟2個socket鏈接服務器HTTP端口,我們稱這2個socket分別為“數據socket”和“命令socket”。

Step 1、客戶端通過“數據socket”發送HTTP GET命令,請求RTSP鏈接。

Step 2、服務器通過“數據socket”響應HTTP GET命令,並回復成功/失敗。

Step 3、客戶端創建“命令socket”,並通過“命令socket”發送HTTP POST命令,建立RTSP會話。

至此,HTTP的輔助功能完成,服務器不返回客戶端的HTTP POST命令。接下來是RTSP在HTTP端口上的標準流程,但是需要通過2個socket協同完成,“命令socket

”只負責發送,“數據socket”只負責接受。

Step 4、客戶端通過“命令socket”發送RTSP命令(BASE64編碼加密)。

Step 5、服務器通過“數據socket”響應RTSP命令(明文)。

Step 6、重復Step4-Step5,直到客戶端發送RTSP PLAY命令,服務器響應RTSP PLAY命令。

Step 7、服務器通過“數據socket”向客戶端傳輸音視頻數據

數據交互完畢後。。。

Step 8、客戶端通過“命令socket”發送RTSP TEARDOWN命令(BASE64編碼加密)

Step 9、服務器通過“數據socket”響應RTSP TEARDOWN命令(明文)。

Step 10、關閉2個socket。

四、HTTP透傳現狀

各個廠家的音視頻服務器客戶端之所以兼容RTSP協議,為的就是RTSP協議的標準通用,不同廠家的設備可以相互兼容。

如果套了一層非標準非通用的透傳協議,那麽各個廠家就失去了做RTSP-Over-HTTP的理由,而且他們大都有自己的私有音視頻傳輸協議,這時候,他們往往會問這麽一個問題:為什麽不用自己的私有協議做HTTP透傳呢?

所有,市場上另有一種透傳做法就是利用私有協議通過HTTP透傳,而不是RTSP,反正也解決了防火墻問題。

myRtspClient暫不支持RTSP-Over-HTTP

五、相關鏈接

LIVE555 RTSP-Over-HTTP透傳示例:http://www.rosoo.net/a/201509/17373.html

LIVE555 RTSP-Over-HTTP透傳wireshark抓包(透傳端口8000):https://pan.baidu.com/s/1hrNWyna

關於RTSP-Over-HTTP