live555原始碼分析 PLAY命令的處理

2021-08-30 08:49:37 字數 1034 閱讀 3353

play命令概述

play命令要求在setup命令之後進行,此命令處理過程中就開始傳送資料了,在處理play命令過程中還建立了rtcpinstance例項。

對於play命令請求中的url有以下幾種情況(與pause、teardown、get_parameter、set_parameter處理是一樣的):

1)非聚合,如rtsp:作為stream name, urlsuffix作為subsession的trackid

2)非聚合的情況下,才能根據trackid找到subsession

3)聚合,如

rtsp: 將urlsuffix作為stream name,而urlpresuffix忽略

rtsp: 只存在urlpresuffix,並將其作為stream name, 這應該是最常見的情況

4)聚合,如rtsp: 將urlpresuffix/urlsuffix整個作為stream name 

我們可以對session中的subsession進行單獨控制(這需要提供subsession的trackid), 也可以對整個session進行控制(這種情況應該是最常見的吧)。

貼乙個setup訊息例項:

play rtsp: rtsp/1.0

cseq: 5

session: 263bd44b

range: npt=0.000-

user-agent: libvlc/1.1.0 (live555 streaming media v2010.03.16)

response: rtsp/1.0 200 ok

cseq: 5

date: wed, nov 30 2011 06:55:07 gmt

range: npt=0.000-

session: 263bd44b

rtp-info: url=rtsp:track1;seq=38851;rtptime=1434098600,ur

l=rtsp:track2;seq=27752;rtptime=3595585826

**分析的過程比較煩瑣,就先把總結性的東西放到最前面了

live555原始碼分析 live555大致流程

今天大致分析了下live555的流程,以h264為例子進行的分析.從連線到傳送rtp rtcp資料報。首先分析呢,不能太關注細節,先整體再區域性。在分析的過程中,設計到live555自己封裝的乙個高階類 比如迭代器,雜湊表,而且這2個類在live555中運用的範圍還非常的廣,但是無不例外都是用鍊錶進...

live555原始碼初步解析(一)

最近因專案需要,要學習live555這個開源平台。live555是用c 實現的,對於該平台的介紹網上有很多文章,以下是個人在讀它原始碼時的記錄,也是乙個初步的理解,和大家一起分享一下。有錯誤,或者不足之處請大家指出。basicusageenvironment庫 a basichashtable.cp...

live555原始碼學習第二節

live555 原始碼學習第二節 usageenvironment 類學習 usageenvironment 代表了整個系統的執行環境,主要包括錯誤的輸入和輸出。其預設實現主要針對控制台進行輸入和輸出。該類中還儲存了乙個非常重要的資料結構 tasksecheduler 類的引用,這兩個類共同構建了整...