WebRTC 配置
它使用高效的 H.264 编码来节省带宽。视频通过 WebRTC 协议进行流式传输,您可能在使用 Discord 或 Google Chat 进行视频通话时遇到过该协议。
它兼容 BliKVM v1、v2、v3,以及所有基于 HDMI-CSI 桥接的 DIY 设备。
您可以在 Web UI 的系统菜单中切换视频模式。如果您没有看到切换选项,可能是因为您的浏览器不支持 H.264 视频。
"当KVM有多个ip地址时,譬如你同时连接了以太网,wifi,或者安装了vpn, 在你使用h264模式时,如果出现譬如视频无法播放问题,可能原因是多ip地址下ICE错误问题,可以通过限制使用网卡来来实现。"
- 首先ssh登陆到kvm终端,然后使用
ifconfig,查看网卡名字,例子如下:
root@blikvm(rw):~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.8 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::3609:81d9:30b1:858c prefixlen 64 scopeid 0x20<link>
inet6 2409:8a1e:7bd5:24a0:a75:9560:80e:7086 prefixlen 64 scopeid 0x0<global>
ether d8:3a:dd:26:a8:1d txqueuelen 1000 (Ethernet)
RX packets 31424 bytes 4853302 (4.6 MiB)
RX errors 0 dropped 4420 overruns 0 frame 0
TX packets 56486 bytes 59463233 (56.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1257 bytes 162450 (158.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1257 bytes 162450 (158.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1420
inet 10.0.0.2 netmask 255.255.255.255 destination 10.0.0.2
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 22796 bytes 3297976 (3.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 55462 bytes 57044224 (54.4 MiB)
TX errors 8 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.45 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 2409:8a1e:7bd5:24a0:d82e:28b5:f282:3ce2 prefixlen 64 scopeid 0x0<global>
inet6 fe80::63b:12f1:44bd:24f2 prefixlen 64 scopeid 0x20<link>
ether d8:3a:dd:26:a8:1e txqueuelen 1000 (Ethernet)
RX packets 8506 bytes 516509 (504.4 KiB)
RX errors 0 dropped 4406 overruns 0 frame 0
TX packets 457 bytes 43843 (42.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 使用
rw命令,将当前系统改为可读写系统,然后使用nano /mnt/exec/release/lib/pi/janus_configs/janus.jcfg编辑配置文件,找到ice_ignore_list这个配置项,进行编译,如上面给出的例子,kvm总共有3个网卡,你想使用的是wg0这张网卡进行web访问,你可以配置如下:
ice_ignore_list = "eth0,wlan0"
- 使用
systemctl restart kvmd-web重启web服务生效。
工作原理
MJPEG 视频通过类似于获取 Web UI 的 HTTP 连接进行流式传输。这意味着对于远程访问,您只需要在路由器上转发端口 80 和 443(如果它具有公共外部 IP 地址)。
相比之下,WebRTC 是一种完全不同的视频传输方式。它使用 P2P 连接和 UDP。这减少了网络负载,但使连接更复杂——BliKVM 需要了解您的网络配置才能正确使用它:公共 IP、NAT 类型等。
为此,BliKVM 检查用于默认网关的网络接口,并尝试使用 Google 的 STUN 服务器找出您的外部 IP 地址。
::: tip "选择 Google 的 STUN 服务器是出于可靠性考虑。" 如果您不想使用它,可以选择其他任何公共 STUN 服务器或设置自己的服务器。如果您发现无法在公共网络下获取图像,请检查以下配置: 编辑 /opt/janus/etc/janus/janus.jcfg(示例):
stun_server = "stun1.l.google.com"
stun_port = 19302
然后使用 systemctl restart kvmd-web 重启整个服务。 :::