基於RTSP的流媒體播放器製作(1)

第一部分主要寫思路,

介紹幾個概念(網上有很多,簡單介紹):

RTSP:實時流傳輸協議,應用層協議,

             作用:發起/終結流媒體,只用於控制媒體流的傳輸

RTP: RTP/RTCP一起使用,往往建立在UDP協議上,實行有序傳送

             作用:傳輸流媒體數據,RTCP對RTP進行控制,同步

RTSP消息格式:

響應消息頭:


RTSP協議上的簡單交互:

其中獲取文件的大小,通過DESCRIBE,RTP端口號通過SETUP協商得到,一般取服務器發過來的最小的


上述的過程只是標準的、友好的rtsp流程,但實際的需求中並不一定按此過程。

      其中第三和第四步是必需的!第一步,只要服務器客戶端約定好,有哪些方法可用,則option請求可以不要。第二步,如果我們有其他途徑得到媒體初始化描述信息(比如http請求等等),則我們也不需要通過rtsp中的describe請求來完成。第五、六步,可以根據系統需求的設計來決定是否需要

主要作用:建立連接,請求播放

RTP協議上:建立好了連接,傳輸數據通過RTP

VLC:有了數據之後,下載到本地,在VLC播放器上播放,播放器的控制通過RSTP,VLC解碼文件:

libvlc_new():創建libvlc_instance_t。

libvlc_media_new_path():創建libvlc_media_t。

libvlc_media_player_new_from_media():創建libvlc_media_player_t。

libvlc_media_player_release():釋放libvlc_media_player_t

libvlc_media_release():釋放libvlc_media_t。

libvlc_release():釋放libvlc_instance_t

libvlc_media_player_play():播放。

libvlc_media_player_pause():暫停。

libvlc_media_player_stop():停止。

 

以上基本介紹了流媒體播放中一些概念,

下面梳理一下過程:

建立SOCKET連接-->發RTSP消息-->RTP傳輸數據-->VLC上播放-->釋放資源

其中幾點需要注意的關鍵點:

RSTP中  :1、在客戶端如何解析,把RTSP格式組成字符串通過Socket接收然後解析,服務端通過LIVE555解析。

2、session作用,每個RTSP協議中都會有session,保證是改連接

RTP中:使用UDP協議,會存在緩衝區,當暫停時,播放器會把緩衝區的數據繼續播放,造成一定的延時,因此暫停需要暫停本地數據

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章