2020/05/23

一種令Windows版VLC多媒體播放程式指定網卡發送IGMP封包的作法(續)

摘要

本文簡介一種添加選徑規則(routing rule)的作法,使得具備多張網卡的Windows 10作業系統上的VLC多媒體播放程式(VLC media player)可以選擇特定網卡來發送IGMP(Internet Group Management Protocol)封包。

本文

欲在IPv4的環境下,透過具備多張網卡的Windows 10作業系統上的VLC多媒體播放程式,以群播(multicast)的形式來觀看網路電視,可能會遭遇群播的IGMP封包未在預期的網卡離開機器的狀況。可以在這裡見到相關的範例、以及使用更改既有路徑的metric的解決作法。

另一個解決作法是添加專用的路徑,範例指令如下,其中239.4.1.1/255.255.255.255是群播位址、而192.168.33.1指定的網卡(VMware的host-only網卡)上的IPv4位址。

route add 239.4.1.1 mask 255.255.255.255 192.168.33.1


使用VLC多媒體播放程式裏的「開啟網路串流」功能來觀看rtp://239.4.1.1:5004的電視節目時,它會發送IGMP封包、且期許節目封包入境、並且在節目封包入境時呈現節目畫面。


可以利用Wireshark觀察到IGMP封包從指定的介面位址192.168.33.1出境;而且,這張網卡介面後方具有提供電視節目的機器。



附錄

使用指令啟動VLC多媒體播放程式進行群播串流

類似這裡所提到的Windows環境的作法,一個在Ubuntu環境的console使用指令啟動VLC多媒體播放程式進行群播(multicast)串流的範例如下,其中,使用的VMware的Ubuntu 18.04虛擬機、239.4.1.1是節目的群播位址、5004是節目的埠、而ens33是連結(綁定)的介面。

cvlc ~/Downloads/ATM+%e5%ae%a3%e5%b0%8e%e5%bd%b1%e7%89%87.mp4 --sout='#rtp{dst=239.4.1.1,port=5004,mux=ts}' --sout-all --sout-keep --loop --ttl=1 --dscp=0x20 --miface=ens33

留意,ens33的介面名稱是可以省略的引數。

cvlc ~/Downloads/ATM+%e5%ae%a3%e5%b0%8e%e5%bd%b1%e7%89%87.mp4 --sout='#rtp{dst=239.4.1.1,port=5004,mux=ts}' --sout-all --sout-keep --loop --ttl=1 --dscp=0x20

然而,在host-only網卡的配置之下,省略介面名稱將會遭遇VLC啟動失敗的狀況。

面對這種配置,可以添加一筆群播專用的路徑。

ip -4 route add 224.0.0.0/4 dev ens33

使得在host-only網卡的配置之下也能順利地啟動VLC。



參考文獻

https://zer931.pixnet.net/blog/post/36975565

沒有留言:

張貼留言