是否有人设法让 live555 rtsp 客户端异步工作并希望分享知识或更好的......代码。
问问题
2388 次
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 回答