1

操作系统: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 套接字获取当前连接/活动客户端(IP 地址和其他属性)的列表(如果有)?

把它想象成一个迷你嗅探工具(不像 tshark、ngrep、pcap 等那样复杂)。我可能可以将 bash/Python 脚本和 tshark 与一些过滤器结合使用。但如果可能的话,我更喜欢 C C++ 代码(非 root 执行会很棒!)。

4

2 回答 2

0

在典型的Streaming 场景中,客户端会在数据类型和客户端端口可用之前RTSP调用SETUP命令。通常在收到响应后调用,即客户端知道源的属性并继续建立连接。因此,SETUP 可能是了解更多客户信息的好地方。PLAYSETUPDESCRIBE

于 2013-02-08T23:15:50.500 回答
0

GStreamer Pipeline API/协议可以提供一种方式:UDP 多播本身当然没有。你所能知道的只是是否有任何客户端,你必须编写一些原始套接字代码来做到这一点(IGMP 协议)。

于 2013-02-10T22:18:38.127 回答