-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 に答える