通常情況下rtsp協議中數據傳輸的實現是UDP,因工作需要,想讓rtsp的數據傳輸部分用TCP實現。DarwinStreamingServer服務器能自適應客戶端發起的數據傳輸請求是用TCP方式,還是用UDP方式,這里唯一需要解決的是客戶端協議的發起問題,而vlc支持RTSP over TCP的方式。
剩下的問題就好辦了,讓vlc以TCP的方式發起連接即可。
DSS的安裝配置我就不介紹了,不懂的朋友網上查下。
方式一:TCP傳輸媒體數據
我之前的文章(http://www.cnblogs.com/MikeZhang/archive/2012/09/09/vlcStreamingServer20120909.html )中提到過用vlc的命令行方式操作,而且還實現了用基於UDP媒體數據傳輸的RTSP協議。其實今天的這個需求只需要在vlc的命令行參數里面加入以下選項即可:
--rtsp-tcp
即用TCP方式訪問服務器應該用如下命令:
vlc rtsp://172.16.1.1/test --rtsp-tcp
這是其中的一個RTP數據包:
我們可以看到,通過這種方式的RTP數據包是基於TCP實現的。
方式二:UDP傳輸媒體數據
雖然在和DSS的交互中vlc默認是用UDP進行媒體數據的傳輸的,但我們也要考慮如果換成其它流媒體服務的情況,所以可以加上如下參數進行限制:
--no-rtsp-tcp
即用UDP方式訪問服務器應該用如下命令:
vlc rtsp://172.16.1.1/test –-no-rtsp-tcp
其中的一個數據包RTP包如下:
從圖上可以看到,這里的RTP是基於UDP實現的。
好,就這些了,希望對你有幫助。