【发布时间】:2010-05-17 04:46:39
【问题描述】:
是否有人设法让 live555 rtsp 客户端异步工作并希望分享知识或更好的...代码。
【问题讨论】:
标签: c++ media voip live555 rtsp-client
是否有人设法让 live555 rtsp 客户端异步工作并希望分享知识或更好的...代码。
【问题讨论】:
标签: c++ media voip live555 rtsp-client
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 客户端提供了一个非常好的起点。
【讨论】: