0

已建立:我目前正在使用 gstreamer over RTP 将数据包(.mp3 文件)从源(服务器)流式传输到接收器(客户端 A)。这件事很简单,我成功地通过网络将音乐从服务器传输到设备。

要求:现在,我想从客户端 A 实时(或至少尽可能接近实时)重新传输数据包,以说任何其他客户端 B 。因此,控制权仍将保留在客户端 A 上,并且现在只有音乐实际上会与客户端 B 一起流式传输。

做这种事情的最佳方法是什么。

4

2 回答 2

1

假设您想快速尝试一下。理想的方法是在客户端 A 上设置一个 rtsp 服务器,它可以转发客户端 B 的数据。如果您想按照自己的方式进行操作,这是一种方法:

如果您在客户端 B 中有一个播放器,它可以在给定 sdp 文件的情况下播放 rtp 流,您可以这样做:创建您在客户端 A 中获得的 sdp 的副本。通过某些路径将其提供给客户端 B。[说双方同意通信的 tcp 套接字]

将您在客户端 A 中获得的内容的副本也流式传输到客户端 B。

您需要将 sdp 中的端口号更改为客户端 B 上可用的端口号 [这就是 RTSP 协商所做的]。如果客户端 B 可以在获取 SDP 之前告诉客户端 A 端口号,那么您可以正确设置 sdp 中的端口号,将其提供给客户端 B,然后将他的流的副本发送给客户端 B。您是完毕。

于 2012-11-12T07:18:15.393 回答
0

您还使用了基于 TCP 的 RTP。所以这对你来说很容易,因为在 RTP 级别不需要更改。您需要将数据包传递给 RTSP,而不是直接通过 UDP 套接字发送。一切都将由 RTSP 处理。如果您将 RTP 用作独立的,根据 rfc 3550,它不是 RTP 的一部分您仍然不想这样做,那么您没有遵循 RTP 实现的标准方式。

于 2012-11-12T16:17:25.370 回答