如何通过乘VLC播放器播放一个流?

问题描述:

我想通过这个命令流媒体视频:如何通过乘VLC播放器播放一个流?

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

而且还对目的地,我运行它通过命令打一个分会场二VLC播放器:

$ vlc udp:// [source path] 

当我第一次运行它的球员播放视频,但当我运行第二个球员第一个球员停止,只有第二个球员播放流。

我怎么能玩2个玩家的一个流?

我假设目标路径是播放器的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可以直接作为流媒体服务器,但我从来没有尝试过。

+0

- 'out'#duplicate {dst = rtp {mux = ts,dst = 192.168.1.10,port = 50002},dst = rtp {mux = ts,dst = 192.168.1.40,port = 50004}}' 这种方法对我有一个问题:我有很多的内存,我不能使用更多,然后我有,但包重复需要一些内存(因为使用VLM,它需要内存)。我可以从端口读取数据到某个数组,并将它发送给几个vlc播放器,并使用vlc的回调清除数组内存? – BlueIceScream

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

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