-3

是否有人设法让 live555 rtsp 客户端异步工作并希望分享知识或更好的......代码。

4

1 回答 1

2

live555 API 中同步和异步的主要区别在于您现在必须在 RTSP 请求中指定处理程序。一旦 DESCRIBE 请求完成,您的处理程序将从 live555 事件循环中调用。

在 RTSPClient.hh responseHandler 中定义为:

typedef void (responseHandler)(RTSPClient* rtspClient,
             int resultCode, char* resultString);

当您的处理程序被调用时,live555 将为您提供以下信息:

  • 发出命令的 RTSP 客户端 -> 这允许您随后调用下一个 RTSP 方法。

  • 结果代码,成功时为 0,如果服务器返回 RTSP 错误代码,则为正,如果发生某些网络/套接字错误,则为负。

使用此信息来决定如何在您的处理程序中进行。查看 RTSPClient.hh,所有这些都在其中进行了解释。

例如,这意味着当您要调用 sendDescribeCommand 方法时:

unsigned sendDescribeCommand(responseHandler* responseHandler, 
         Authenticator* authenticator = NULL);

您必须指定 DESCRIBE 完成后将调用哪个处理程序(签名 responseHandler)。然后,在您的处理程序中,您必须根据结果代码决定是要执行 SETUP(再次指定处理程序)还是终止(如果发生某些错误)。

正如 jenseb 建议的那样,openRTSP 客户端提供了一个非常好的起点。

于 2011-10-08T13:15:22.170 回答