在两台计算机上同步VLC播放器


15

是否可以在两台不同的机器上同步VLC的播放?我想在房子的不同地方让两台PC播放同一视频-因此,也欢迎提出解决此问题的其他建议!

Answers:


9

我使用多播。这同时将一个流发送到所有接收器。

网络具有有线和wifi网段。

对于多播,流在每个段上仅使用其带宽的一倍

这也意味着所有计算机大约在同一时间接收相同的数据包,从而减少了通过我的交换机的传播延迟。对于声音和人类可见视频(30fps),传播延迟可以忽略不计。

唯一可能发生的是,不同的计算机在其网络缓存中的不同位置工作。为了使它们尽可能的近,我拒绝了缓存,直到最慢的系统(WiFi上的32位笔记本电脑)有时开始断电,然后再增加一点。

原因:一旦vlc开始吃掉缓冲区,要花很长时间才能返回到缓冲区的开头,似乎编码没有优先回到“零缓冲区”,而是很愿意留在那儿。

我还在“服务器”上使用了两个vlc客户端:一个生成流,并且不在本地显示。另一个是显示客户端,它像所有其他系统一样使用相同的网络缓存设置来侦听流。

在命令行中:

流生成客户端,该客户端连接到Internet流(该客户端具有很大的缓存,因此不会中断,并将恒定的流传递到我的多播网络中):

vlc -vvv http://yp.shoutcast.com/sbin/tunein-station.pls?id=154 --sout udp:239.0.0.1 --no-sout-display --sout-keep --ttl 4 (应该在一行上)

如您所见,给出了--no-sout-display:生成了流输出,但是没有本地输出。无论播放本地文件/ DVD还是网络内容,我都一样。

如果某处有无线路由器,请确保将--ttl设置为> 1。我总是将其设置为4,以免产生“意外”。但是,如果您具有多路由器网络,并且一个网络上的主机看不到多播,则可能需要将其设置为一两个缺口(或检查您的路由器是否确实允许多播通过,并非所有无线路由器都是设置为默认值)。

在每个系统上,包括生成流并运行非输出vlc的系统,我都有以下vlc:

vlc udp://@239.0.0.1 --network-caching 60 --sout-keep

这会将网络缓存设置在我的网络中,并使最慢的系统的性能达到最高。有价值.06秒的缓存。

对于声音,这对应于大约100英尺的传播距离,这意味着如果最大程度地占用了缓存,则缓慢的系统将发出声音,好像它在100英尺外。

我的网络延迟是.5ms或更好(不是ping,这是低优先级的堆栈往返,只有几毫秒)。

在我所在的地方,我从来不会同时看到或听到两个相距100英尺以上的系统(我不爆炸楼上和地下室,这样做的好处是在不爆炸客厅放大器的情况下,到处都有相同的系统)。

卧室里的笔记本电脑:如果笔记本电脑经常停工,我只能将其本地缓存打开,在地下室或楼上不会听到它的声音,当我在那里时,我可能会关闭其他笔记本电脑:-)。

非常重要:每当我需要转码时,所有接收器都使用相同的协议和编码,并且我会在生成流的非输出vlc上进行转码。

我不在多播客户端上进行代码转换。由于每个系统的性能都不同,因此会导致严重的延迟。

对于此音频示例,根本没有代码转换,所有人都可以理解shoutcast起源的编码。(实际上,我也不需要为vid进行转码...全部都有完整的编解码器集)。

这有帮助吗?

是的,网上有一些使用--network-synchronization主/客户端和多个单播流(服务器上10英里长的目标字符串:-D)进行同步vlc的示例。

但是,将单播流传输到段上的n个客户端会使该流在该段上出现n次,并且您向原始服务器访问的级别越高,同一流的乘法消耗的带宽就越多。我将无法观看我的1080p视频。我的无线设备几乎无法处理其中之一,并非总是(56Mb)。

哦,您问如何在GUI中:

在流媒体窗口中,单击“更多选项”,然后为生成流的vlc实例取消选择“本地播放”(输入时是本地文件,播放列表或Internet流)。将缓存保留为默认值(价值1000ms的缓存)。如果任何其他客户端无法理解您的编解码器,请决定一个都可以理解并转码到同一系统上的客户端。

在目标的选项上,您保留默认的“本地显示”,并更改缓存:进行此操作(从100开始然后将其调低),直到最慢的系统切出为止,然后将所有较快的系统设置为相同。缓冲时间短:当客户启动时,大约需要10到15秒的溅射时间,直到它“得到”为止。

我的客户有100%的时间在工作,每当我停止流式传输时,他们只会继续收听多播地址。

没有提供端口:到处默认为1234,我运行一台原始服务器。如果运行多个端口,则需要提供如下端口号:... 239.0.0.1:65535。我的示例数字:选择239/8中的任何多播地址。端口:选择高于1024的端口(是的,选择1024,因为Microsoft在MC上也使用1024)。

如果没有人在监听,则流根本不会出现在网络上,只有在第一个监听器加入多播会话后,流才开始。因此,如果您定义了十个并且仅侦听一个,那么您就有一个流吞噬带宽。如果您收听不同的流,那么您获得的带宽是n个流的n倍。

组播:每个流使用一个或10000个客户端使用的带宽相同。

使用单播:每个客户端在不同的时间跳到发件人的流,这意味着即使您加紧了缓存,您的延迟仍然存在。单播和多播工作完全不同。这就是为什么单播具有同步功能。

如果以相同的方式流播整个目标商店,则存在另一种方式:然后,您将以同步方式将单播流传输到卫星vlc客户端,并从那里为“声音范围”内的客户端提供服务。在办公室中,我每层执行一两个操作,因此使用单播和网络同步将所有层紧密同步。通常在地板内,网络传播延迟比声学延迟要短得多,并且声学被调低,因此您不会听到所有扬声器,而只会听到附近的扬声器。

如果您需要帮助,请通过sirhelpsalot@gmail.com给我发送电子邮件,我也可能会在youtube上发给我。

:-)


3
欢迎使用SuperUser,并感谢您的贡献!您能通过删除不必要的评论来减少答案吗?现在,它是一堵名副其实的文字墙,实际答案很难把握。
Indrek

1
流/多播同步视频的可靠性如何?如果我有一个运行VLC的十六进制核心桌面和一个运行omxplayer的树莓派,那么我能保证omxplayer不会花费3 s更长的时间打开流吗?
2013年

4

VLC可以通过网络流式传输输出,也可以在本地播放,因此,我建议您有一台计算机通过网络流式传输输出,但是请在“目标”选项卡中选中“本地显示”选项。

是用于流式传输的设置的简短描述。


1

VLC用于(或确实从未更新过文档)有一个称为netsync的模块,但与大多数不常见的VLC模块一样,它有很多错误,几乎没有文档记录,却被忽略。我从来没有得到它的工作。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.