2

当用户单击视频 (RTSP) 流会话中的停止按钮时发送 TEARDOWN 是否合适?如果不是那为什么?

4

3 回答 3

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
于 2009-01-30T09:43:59.747 回答
1

是的,这是合适的。

服务器应该为特定用户维护一个会话状态,它们不应该假设所有命令都来自同一个 TCP 连接,而是提供一个在第一个 SETUP 回复发送到客户端时创建的 sessionid。其后的所有请求都应包含 sessionid(有例外)。通过发送 TEARDOWN 请求,客户端向服务器指示它可以释放与该用户关联的所有状态。

PAUSE 只会指示服务器停止发送数据包,而不是释放与该会话关联的状态。

于 2010-03-20T04:10:45.967 回答
0

rtsp 客户端软件拆除媒体会话的行为有多种实现方式。Realplayer 将在 TEARDOWN 之前发送 PAUSE。Quicktime Player 和 VLC 将在没有暂停的情况下发送 TEARDOWN。我觉得两者都可以接受。

于 2012-01-13T02:55:57.003 回答