目前,我正在使用桥接连接在 VMware Workstation + Windows 7 本地主机上的 Ubuntu Server 上对其进行测试。稍后,这必须转到实时服务器。
我在 Ubuntu 上使用 VLC 流媒体视频文件
cvlc -vvv /home/user/file.avi --loop --sout '#rtp{access=udp,mux=ts,dst=239.1.1.1,port=32321,caching=10000}'
稍后此流被udpxy
选为
udpxy -a lo -m eth0 -p 7777 &
基本上一切都运行良好,但我的托管服务提供商将 UDP 流量计为出站流量,尽管我不需要它在外面的任何地方。我的想法是阻止多播 UDP 出站流量。
我试过用
route add -net 239.0.0.0/8 dev lo
流量受到限制(无法从外部访问),但
dumprtp 239.1.1.1 32321
在同一台服务器上也不起作用。
我也尝试过/etc/network/interfaces
像这样为多播地址创建新的环回接口
auto lo lo:udp
iface lo inet loopback
iface lo:udp inet static
address 239.1.1.1
netmask 255.0.0.0
network 239.0.0.0
我只是想让它工作,但是却不行。
因此,基本上我希望多播 UDP 流量留在服务器内部,而不流出到外部网络。并且它应该是多播 UDP(流也由存储系统和流质量测试挑选)。
谢谢。
答案1
解决方案是:
- 为 VLC添加新选项
--miface=lo
:cvlc -vvv /home/user/file.avi --loop --sout '#rtp{access=udp,mux=ts,dst=239.1.1.1,port=32321,caching=10000}' --miface=lo
为多播地址添加路由
lo
:route add -net 239.1.1.0 netmask 255.255.255.0 dev lo
2a. 为了使路由持久化,我们必须为其添加
/etc/network/interfaces
前缀up
。像这样:up route add -net 239.1.1.0 netmask 255.255.255.0 dev lo
就是这样。现在 VLC 正在流式传输到lo
接口而不是eth0
。此外,任何想要订阅 239.1.1.1 - 239.1.1.254 的应用程序都将通过lo
接口进行。
希望这能帮助某人解决流媒体问题。