誰かが live555 rtsp クライアントの作業を非同期で行うことができたので、その知識またはそれ以上のコードを共有したいと考えています。
1 に答える
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 クライアントは非常に良い出発点を提供します。