1

OS: LINUX (Redhat Enterprise と Ubuntu LTS の両方)

現在、さまざまなクライアントにビデオ データをマルチキャストするために Gstreamer Pipeline を使用しています。私のパイプラインは次のようになります。rtspsrc location=rtsp://<ip>:<port>/<location>.sdp latency=0 ! udpsink host=225.1.1.1 auto-multicast=true port=5678 sync=false async=false. ご覧のとおり、マルチキャスト グループ225.1.1.1とポート5678があります。この情報を考慮して、(1) Gstreamer API (2) C/C++ の Berkeley Unix Sockets を介して、現在接続されている/アクティブなクライアント (IP アドレスおよびその他の属性) のリストを取得する方法はありますか?

これは小さなスニッフィング ツールと考えてください (tshark、ngrep、pcap などほど複雑ではありません)。おそらく、bash/Python スクリプトと tshark をいくつかのフィルターと組み合わせて使用​​できます。しかし、私は可能であれば C C++ コードを好みます (root 以外での実行は素晴らしいことです!)。

4

2 に答える 2

0

GStreamer Pipeline API/プロトコルは方法を提供するかもしれません.UDPマルチキャスト自体は確かにそうではありません. あなたが知ることができるのは、クライアントが存在するかどうかだけであり、それを行うにはいくつかの生のソケットコードを記述する必要があります (IGMP プロトコル)。

于 2013-02-10T22:18:38.127 に答える
0

典型的なRTSPストリーミング シナリオでは、クライアントは、データのタイプとクライアント ポートが利用可能なSETUPコマンドの前にコマンドを呼び出します。通常、応答が受信された後に呼び出されます。つまり、クライアントはソースのプロパティを認識し、接続のセットアップに進みます。そのため、SETUP は、クライアントについて詳しく知るのに適した場所になる可能性があります。PLAYSETUPDESCRIBE

于 2013-02-08T23:15:50.500 に答える