1

我正在尝试通过此命令流式传输视频:

$ vlc [path to file] --sout udp:// [destination path]

同样在目的地,我运行两个 VLC 播放器,它们通过命令播放一个流:

$ vlc udp:// [source path]

当我运行第一个播放器时,它播放视频,但是当我运行第二个播放器时,第一个播放器停止并且只有第二个播放器播放流。

如何让 2 个玩家播放一个流?

4

2 回答 2

0

对于您的情况,最好有一些实用程序将发送到特定端口的 UDP 数据包复制到同一台机器上的其他几个端口。

这个应用程序的实现应该是微不足道的。

于 2011-10-18T15:31:03.350 回答
0

我假设目标路径是播放器的 IP 和端口,这意味着您将流直接单播到该端点。当您在播放器上打开流时,它会绑定到该套接字并读取数据包。之后数据包“消失”。通常玩家会保留地址,因此没有其他程序可以在那里打开套接字,但这里似乎没有发生这种情况,所以第二个玩家劫持了同一个套接字并获取了 UDP 数据包。

如果两个玩家都在同一个主机上,多播也不起作用。如果需要支持的玩家数量是固定的,可以让VLC复制输出;

--sout '#duplicate{dst=rtp{mux=ts,dst=192.168.1.10,port=50002}, dst=rtp{mux=ts,dst=192.168.1.40,port=50004}}'

如果您需要动态支持未知数量的客户端,则需要混合使用流式服务器。哪一个真正取决于您想要实现的目标。可能是 VLC 也可以直接充当流媒体服务器,但我从未尝试过。

于 2011-10-18T14:51:34.700 回答