2009-01-26 22 views

回答

1

我認爲這是,沒有其他「有保證」的方式來告訴服務器停止。 Quicktime和VLC都這樣做,我不知道其他客戶端。 正如您從RFC 2326的頁面可以看到的那樣,推薦使用PAUSE指令,但不是必需的。此外,它是暫停,而不是停止,是的,TEARDOWN是正確的路要走。

method   direction  object  requirement 
    DESCRIBE   C->S    P,S  recommended 
    ANNOUNCE   C->S, S->C  P,S  optional 
    GET_PARAMETER  C->S, S->C  P,S  optional 
    OPTIONS   C->S, S->C  P,S  required 
               (S->C: optional) 
    PAUSE    C->S    P,S  recommended 
    PLAY    C->S    P,S  required 
    RECORD   C->S    P,S  optional 
    REDIRECT   S->C    P,S  optional 
    SETUP    C->S    S   required 
    SET_PARAMETER  C->S, S->C  P,S  optional 
    TEARDOWN   C->S    P,S  required 
1

是的,這是適當的。

服務器應該爲特定用戶維護一個會話狀態,他們不應該假定所有的命令都來自同一個TCP連接,而是提供一個會話ID,當第一個SETUP應答發送給客戶。接下來的所有請求都應包含sessionid(有例外)。通過發送TEARDOWN請求,客戶端向服務器表明它可以釋放與該用戶關聯的所有狀態。

PAUSE只會指示服務器停止發送數據包,而不是釋放與該會話關聯的狀態。

0

rtsp客戶端軟件拆卸媒體會話的行爲有多個實現。 在TEARDOWN之前,Realplayer會發送暫停。 Quicktime播放器和VLC將發送沒有暫停的TEARDOWN。 我覺得這兩個都可以接受。