2012年6月11日 星期一

live555 程式碼分析 -- RTSP Server on demand


分析 testOnDemandRTSPServer.cpp 運作流程

1. 建立一個新的 RTSPServer 實體,向 taskScheduler 註冊 incomingConnectionHandlerRTSP()。當收到 RTSP Request 時,便會建立 RTSPClientSession。

2. 對於此伺服器可以接收的各種媒體,都先建立對應的 session以及subsession,等待 client 建立連線。

2012年6月8日 星期五

live555 程式碼分析 -- RTSP Client


Live555 是一套以 C++ 實作的Multimedia Streaming library,這套函數庫實做了RTP/RTCP/RTSP/SIP 等標準協議,支援MPEG, H.264, H.263+, DV, JPEG 等格式。

Live555 為GNU Lesser General Public License(LGPL)自由軟體,因此只要不更改其原始碼,
我們可以使用其函數庫進行商業產品開發,並且保留自己的程式碼。例如 VLC media player 就是使用 live555 來實作其 RTSP 協議。

使用方式可以參考 live555 的 testprogs 目錄,以下以 RTSP Client 為例說明其運作方式


2012年6月5日 星期二

live555原始程式碼簡介



live555原始程式碼簡介
liveMedia項目的原始程式碼包括四個基本的庫,各種測試代碼以及IVE555 Media Server

四個基本的庫分別是UsageEnvironment&TaskSchedulergroupsockliveMediaBasicUsageEnvironment

2012年6月4日 星期一

串流軟體封包分析 -- RealPlayer


直接撥放影片
其作法是使用 Macromedia 公司自訂的協議
透過 smip 協議與 Macromedia - Flash Communication Server 溝通 

所以 RealPlayer 預設的撥放方式也並不是透過 RTSP 協議。

串流軟體封包分析 -- youtube


分析 Youtube 串流封包,是否與 RTSP 有關。

一、使用 Flash Player

1. 下載 flash player
GET /strat/components/YTPlayer/1.0/YTPlayer.swf HTTP/1.1\r\n

串流軟體封包分析 -- Hifree


使用 hifree 應用程式,觀察其播放媒體的方式,分別使用哪種協議。

一、選擇"頻道"撥放
其作法是直接下載整首歌曲後播放,並非使用RTSP協議。

1. hifree 先向伺服器取得歌曲清單
[truncated] GET /get_channel_song.php?enc=u&oenc=kkt&hw_vendor=kkbox&hw_model=fttx&sid=V0000a.739500000000000000000000000000AbED05335PoQDS001Fn6Jjc9e1&ksid=V0000a.739500000000000000000000000000AbED05335PoQDS001Fn6Jjc9e1&kkid=KKBOX-VZQSCFAG
User-Agent: KKBOX air(Get Song List)\r\n
Host: api.kkbox.com.tw\r\n
Cookie: PPHPSESSID=267759049478910113475\r\n

MMS(Microsoft Media Server)

此處所描述的MMS,並非多媒體簡訊(Multimedia Message Service),而是微軟之前發展的一個串流機制,稱為Microsoft Media Server (MMS),2003年時微軟決定由 RTSP 取代此機制,並且於2008年正式廢除此機制。

所以現在使用 "mms://" 與 "rtsp://" 基本上都是使用 RTSP 協議。