3

私は現在、C# で RTSP プロトコルを使用して IP カメラからビデオをストリーミングする WinForm アプリに取り組んでいます。すべてがうまくいきました。アプリの要件の一部には、IP カメラがオンラインかどうかを確認する機能が含まれています。

そこで、System.Net.NetworkInformation.Ping クラスを使用して ping 関数を実行し、IP カメラに ping を送信しました。カメラの RTSP URL が rtsp:// [CAMERA IP] :554/Master0-RTSP/1.0 の場合、[CAMERA IP]部分を抽出し、Ping クラスを使用してカメラがIP を使用してオンラインかどうかを確認します。

最初は、問題が発生するまで機能します。たとえば、意図した IP カメラ (コンピューターの IP など) ではない IP を入力した場合、入力したデバイスの入力された IP がオンラインであれば、ping 機能は引き続き機能します。

RTSP ping のようなものを検索しようとしましたが、見つかりませんでした。この件に関するアドバイスや意見を期待していました。C# の例は大歓迎です。ご静聴ありがとうございました。

4

4 に答える 4

2

OPTIONS動作する可能性がありますが、標準では、GET_PARAMETER.

RFC2326 はそれを明確に概説しています

http://www.ietf.org/rfc/rfc2326.txt

10.8 GET_PARAMETER

GET_PARAMETER リクエストは、URI で指定されたプレゼンテーションまたはストリームのパラメーターの値を取得します。リプライとレスポンスの内容は実装に任されています。エンティティ本体のない GET_PARAMETER を使用して、クライアントまたはサーバーの活性をテストできます (「ping」)。

サーバーによってサポートされてGET_PARAMETERいない可能性がありますが、そのサーバーがOPTIONSセッション ID さえ必要としない要求にどのように反応するかを知る方法はありません。したがって、既存のセッションが存続することは保証できません。

OPTIONSこれは、リクエストに関する同じRFCを読むことから明らかです

10.1 オプション

この動作は、[H9.2] で説明されているものと同等です。OPTIONS リクエストはいつでも発行できます。たとえば、クライアントが標準外のリクエストを試行しようとしている場合などです。サーバーの状態には影響しません。

例:

 C->S:  OPTIONS * RTSP/1.0
        CSeq: 1
        Require: implicit-play
        Proxy-Require: gzipped-messages

 S->C:  RTSP/1.0 200 OK
        CSeq: 1
        Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE

これらは必然的に架空の機能であることに注意してください (このセクションで強力な例を示すことができるように、真に役立つ機能を意図的に見落とさないようにしてください)。

GET_PARAMETER がサポートされていない場合は、維持したいセッションの SessionId を指定して PLAY リクエストを発行します。

これは、OPTIONS が PLAY がセッション ID を尊重しない場合でも機能するはずであり、すでにプレイしている場合は悪影響はありません。

C# RtspClient については、私のプロジェクト @ https://net7mma.codeplex.com/を参照してください。

CodeProject @ http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtpに関する記事

于 2012-12-11T23:41:57.150 に答える
0

ICMPpingの代わりに、RTSPビデオ/オーディオ RTP ストリームなしでヘルパー セッションを維持し、ソケット接続の良好な状態をチェックし、デバイスが応答しているかどうかを確認するために、定期的に (1 分に 1 回など)OPTIONSまたはコマンドを送信することをお勧めします。DESCRIBE

オプションの代わりに使用することを提案する人もいGET_PARAMETERますが、これは劣った方法です。OPTIONS必須でGET_PARAMETERはありません。どちらも異なる目的を果たします。どちらもサーバー側の実行費用はわずかです。OPTIONSのほうが明らかに優れています。

一部のサーバーはストリーム パラメータの設定をサポートしていないため、GET_PARAMETER および SET_PARAMETER をサポートしていません。

于 2012-07-16T11:19:24.050 に答える
0

C# での RTSP については、C# でRTMP または RTSP プロトコルを使用するこのスレッドを参照してください。

Pingに関しては…DESCRIBE操作として実装できますが…頻繁に行いすぎないように注意してください。デバイスに影響が出るはずです。

http://www.ietf.org/rfc/rfc2326.txt

于 2012-07-16T11:21:55.580 に答える