VLC 无法在 Ubuntu 14.04 中打开 UDP 流

VLC 无法在 Ubuntu 14.04 中打开 UDP 流

我有一台 Ubuntu 桌面 14.04,它有两个 NIC,eth0 和 eth1。一个用于互联网,另一个位于本地子网上,多播 UDP 流从该子网传来。默认路由在 eth0 上,多播路由在 eth1 上。UDP 流从 eth1 传来,我可以看到它在该接口上使用 TCPDUMP,但无法在 VLC 中打开它。在 VLC 日志中,我可以看到 VLC 无法打开该端口,或者是什么原因?有人能帮帮我吗?这是某些用户权限的问题还是端口已关闭,或者是什么原因?我可以在其他装有 Windows 的计算机上播放相同的流。这是 VLC 日志:

main debug: processing request item: udp://225.224.2.2:1002, node: Playlist, skip: 0
main debug: resyncing on udp://225.224.2.2:1002
main debug: udp://225.224.2.2:1002 is at 9
main debug: starting playback of the new playlist item
main debug: resyncing on udp://225.224.2.2:1002
main debug: udp://225.224.2.2:1002 is at 9
main debug: creating new input thread
main debug: Creating an input for 'udp://225.224.2.2:1002'
main debug: using timeshift granularity of 50 MiB, in path '/tmp'
main debug: `udp://@225.224.2.2:1002' gives access `udp' demux `' path `@225.224.2.2:1002'
main debug: creating demux: access='udp' demux='' location='@225.224.2.2:1002' file='(null)'
main debug: looking for access_demux module matching "udp": 20 candidates
main debug: no access_demux modules matched
main debug: creating access 'udp' location='@225.224.2.2:1002', path='(null)'
main debug: looking for access module matching "udp": 25 candidates
access_udp debug: opening server=:0 local=225.224.2.2:1002
main debug: net: opening 225.224.2.2 datagram port 1002
main error: socket bind error (Permission denied)
access_udp error: cannot open socket
main debug: no access modules matched
main error: open of `udp://@225.224.2.2:1002' failed
main debug: dead input
main debug: changing item without a request (current 9/10)
main debug: nothing to play

这是 IP 路由:

路由

default via 192.168.2.1 dev eth0  proto static 
192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.50  metric 1 
192.168.10.0/24 dev eth1  proto kernel  scope link  src 192.168.10.25  metric 1 
224.0.0.0/4 via 192.168.10.25 dev eth1

我更改了多播端口,但仍然无法打开在同一子网中的 Windows 机器上可以轻松打开的流。这是 VLC 流:

main debug: incoming request - stopping current input
main debug: object waitpipe triggered
main debug: socket 25 polling interrupted
main debug: prebuffering done 0 bytes in 39s - 0 KiB/s
main error: cannot pre fill buffer
main debug: removing module "access_udp"
main warning: cannot create a stream_t from access
main debug: incoming request - stopping current input
main debug: finished input
dbus debug: Getting property CanRaise
main debug: incoming request - stopping current input
main debug: dead input
main debug: processing request item: udp://225.224.2.3:3003, node: Playlist, skip: 0
main debug: resyncing on udp://225.224.2.3:3003
main debug: udp://225.224.2.3:3003 is at 0
main debug: starting playback of the new playlist item

并且防火墙已被禁用....

还有一个更新:在 Ubuntu 桌面上,甚至在(我必须尝试)Win 2008 服务器上,当连接两个 NIC 时,VLC 不会打开通过多播传输的 UDP 流。当连接一个 NIC 时,VLC 可以播放流....所以问题出在 VLC 和两个 NIC 上。我假设 VLC 不知道在哪个 NIC 上查找流,但我不知道如何解决这个问题。有什么想法吗???

我没有找到问题的答案但是不能再等了,需要继续做其他事情......所以,整个事情是这样的:我需要对 eth1 上的流进行多播以转发到 eth0,以便子网中的其他计算机和学生可以看到它(将多播流连接到路由器或交换机只会弄乱网络和带宽,并且流会冻结和像素化),(无论以何种方式,但最好是 http 流,以便学生可以使用 VLC 打开流)首先,我需要验证流是否可用,为此我尝试使用 Ubuntu 桌面,它可以在一个 NIC 上运行,但两个 NIC 不行。经过很长时间而没有解决方案后,我决定转移到服务器 14.04 和 UDPXY。现在我安装了 Ubuntu 服务器 14.04,服务器加入了多播组,使用 tcpdump -i 我可以看到多播流在 eth1 上,无法打开流因为它是没有视频卡的服务器,我安装了 UDPXY,它在 eth1 上接受多播流并在 eth0 上接受客户端请求,因此它们像这样打开流:http://192.168.2.50:5005/udp/225.224.2.3:3003 我尝试在 Windows 和 Linux 计算机上使用 VLC 打开流,但没有任何效果。VLC 日志显示的信息与之前在 Ubuntu 桌面上显示的信息相同。

即使我更改了整个配置,问题还是一样……带有两个 NIC 的 Ubuntu 无法打开或转发流。是内核路由还是权限问题?在这种情况下,VLC 在选择哪个 NIC 来查找流时没有问题,因此必须使用 Ubuntu……请帮忙???

答案1

从 VLC 日志可以清楚地看出套接字绑定失败:

主调试:网络:打开 225.224.2.2 数据报端口 1002
主错误:套接字绑定错误(权限被拒绝)

考虑到 1024 以下的端口特权并且只能与具有同等权限的用户绑定。因此,您可以运行 VLCsudo或更改端口号。

还要确保没有其他应用程序使用相同的端口、IP 和套接字类型。

相关内容