2009-01-26 15 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。 我觉得这两个都可以接受。