Skip to content

PXVDIStream 操作说明

PXVDIStream 是我们自研的一个串流工具,可以完整的发挥CPU和GPU性能,在多媒体场景中,可以获得更好的体验,例如视频,ppt放映。剪映,直播等。还可以进行云游戏,如饥荒等单机游戏。即便虚拟机不带GPU,我们也可以实现60fps 低延迟高性能远程。

相比其他的远程工具,我们深度将PXVDIStream 和PXVDI 结合起来,远程权限全部由PXVDI 管理平台管理。

同时PXVDIStream 和我们的新版本客户端v4.0 完美结合,实现了PC\手机\平板\WEB的共同兼容,我们同时还提供嵌入式的系统包,利用嵌入式的GPU进行硬件解码,在极低的配置中,我们也可以获得更好的性能体验!

PXVDIStream原生支持外网映射,通过部署我们的PXVDI HTML5组件 即可完成网页版访问和外网连接,更加的简单易用

产品架构

在Windows上我们使用dxgi进行屏幕捕获, 在Linux上,我们支持x11 和drm捕获,默认以root权限进行drm捕获。

最后通过gstreamer 进行编码使用硬件编码或者x264进行编码串流

声音部分需要用户在后台中添加一个声卡,选择spice或者none,或者在系统中创建虚拟声卡!否则将没有声音!

注意!

PXVDIStream是一个依赖硬件编码的协议,如果虚拟机内部没有硬件编码器,那么编码任务会全部由CPU承担,在1080@60的场景中,约会消耗2个CPU的性能(以e5-2670v4为基准)。如果由vGPU设备承担编码,则会降低至0.2-0.4个CPU(以e5-2670v4为基准)的使用率!

如果没有硬件编码且CPU资源紧张,请勿使用pxvdistream协议。

PXVDIStream 支持的系统

系统架构最低系统版本
windows10x86_641809
windows11arm6424h2
开源系统
Ubuntux86_6420.04
Ubuntuarm6420.04
debianx86_6411
debianarm6411
debianriscv6413
debianloongarch6413
openeulerx86_642203
openeulerarm642203
openeulerloongarch642203
Fedorax86_6442
Fedoraarm6442
商业系统
UOSx86_641070
UOSarm641070
UOSloongarch641070
Kylinx86_64v10
Kylinarm64v10
Kylinloongarch64v10
MacOSarm64sonoma

Linux 系统使用Appimage构建,基本兼容现代主流的linux,如果需要适配目标的linux或者bsd,请联系商务进行处理

PXVDIStream 虚拟机GPU要求

系统类型GPU类型状态
windowsvirtio-gpu支持
windowsnvidia-vgpu支持
windowsintel-vgpu不支持
windows直通不支持
linuxvirtio-gpu支持
linux其他不支持

PXVDIStream 各客户端硬件解码支持状态

某些平台不支持硬件解码,因此体验不是很好。这个问题会在以后完善硬件解码!

在不受支持的硬件解码平台上,建议使用web访问!

系统类型GPU类型状态
windowsamd仅sdl客户端支持
windowsnvidia仅sdl客户端支持
windowsintel仅sdl客户端支持
linuxanysdl客户端支持
andriodany支持硬件解码
iosany支持硬件解码
macosany支持硬件解码

PXVDIStream 下载和安装

下载地址

https://mirrors.lierfang.com/pxcloud/pxvdi/PxvdiStream

Windows 安装

安装PxvdiStream

https://mirrors.lierfang.com/pxcloud/pxvdi/PxvdiStream/

文件名为pxvdistream---版本号

随后直接双击即可,一直下一步即可

此时打开浏览器 ,输入https://127.0.0.1:9923

alt text

这样出现404,就代表服务安装成功

配置pxvdiserver地址

进入以下路径

C:\Program Files (x86)\lierfang\pxvdistream

pxvdistream.conf 复制到桌面,然后编辑,

alt text

去掉apiserver前的#号。 后面改成pxvdiserver的地址

例如你的pxvdiserver地址为 https://192.168.1.250:3002 这样访问的,你就填

apiserver=192.168.1.250:3002

重启系统就完成了

如果你是外部桌面,可以直接指定 uuid={随机UUID},在平台中添加这个UUID即可完成外部桌面的配置

Linux 安装

Linux前置要求

Linux 分为2种捕获模式,一种为x11捕获,一种为drm捕获。

捕获类型性能声音捕获权限要求登录画面wayland支持
drm无声音root支持支持
x11一般声音普通用户不支持不支持

x11 是指使用xserver环境,一般的国产系统,如uos kylin还有debian基本用的都是xserver,比较现代的例如Ubuntu 25 和 fedora 等用的是wayland

如果桌面用的是waylan的,那么只能使用root权限运行 drm模式,也不支持声音捕获。

如果桌面用的是x11,那么既支持drm,又支持x11。

普通用户的x11,只能由普通用户发起进程,请勿用root发起进程。

由于x11 无法捕获登录窗口输入账号密码那个页面,所以需要设置自动登录到桌面

如果没有声音要求,建议使用 drm捕获,性能更好

下载地址

https://mirrors.lierfang.com/pxcloud/pxvdi/PxvdiStream/

请选择对应的架构下载

架构常见cpu
x86_64intel amd 海光 兆芯
aarch64飞腾 鲲鹏
loongarch64龙芯

软件包均为appimage格式,特殊的国产系统,我们深度适配包,请联系销售获取

这里以ubuntu 22 x86_64 架构 为例

下载pxvdistream-{version}-common_x86_64.AppImage

添加可执行权限

chmod +x pxvdistream-1.0.0-common_x86_64.AppImage

复制到bin目录

mv pxvdistream-1.0.0-common_x86_64.AppImage /usr/bin/pxvdistream

以drm方式捕获

创建systemd服务

cat > /etc/systemd/system/pxvdistream.service  << EOF
[Unit]
Description=PXVDIStream Virtual Desktop Streaming
StartLimitIntervalSec=500
StartLimitBurst=5
After=network.target multi-user.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/pxvdistream
Restart=on-failure
RestartSec=5s

StandardOutput=journal
StandardError=journal
SyslogIdentifier=pxvdistream


[Install]
WantedBy=multi-user.target

EOF

随后设置开机启动

systemctl daemon-reload
systemctl enable pxvdistream
systemctl start pxvdistream

修改配置文件指定api server 地址

配置文件在用户的主目录下,~/.lierfang/pxvdistream.conf

和Windows一致

apiserver=192.168.1.250:3002

修改之后,重启以下虚拟机,即可生效

以x11 用户模式捕获

注意,以下命令请在用户登录的图形环境中操作,不要在ssh中操作

创建systemd服务

sudo bash -c "cat > /etc/systemd/system/add-dmi-permission.service"  << EOF
[Unit]
Description=Set DMI file permissions
After=sysinit.target local-fs.target
Before=pxvdistream.service

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'chmod 444 /sys/devices/virtual/dmi/id/* 2>/dev/null || true'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

EOF

sudo systemctl daemon-reload sudo systemctl enable add-dmi-permission.service

创建pxvdistream服务

sudo bash -c "cat > /etc/systemd/user/pxvdistream.service"  << EOF
[Unit]
Description=PXVDIStream Virtual Desktop Streaming
StartLimitIntervalSec=500
StartLimitBurst=5
After=graphical-session.target

[Service]
Type=simple
ExecStart=/usr/bin/pxvdistream
Restart=on-failure
RestartSec=5s

StandardOutput=journal
StandardError=journal
SyslogIdentifier=pxvdistream


[Install]
WantedBy=graphical-session.target

EOF

将当前用户添加到input组(把lucas替换成用户名) sudo usermod -a -G input lucas

修改udev权限,使用户组能够使用uinput

echo 'KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput"' | \
sudo tee /etc/udev/rules.d/85-pxvdistream-input.rules

systemctl --user enable pxvdistream
systemctl --user start pxvdistream

修改配置文件指定api server 地址 和 设置x11捕获

配置文件在用户的主目录下,~/.lierfang/pxvdistream.conf

和Windows一致

apiserver=192.168.1.250:3002
x11=true

修改之后,重启以下虚拟机,即可生效

使用容器——以Linux 无头模式部署

优势

针对LXC 和 Docker 用户,PxvdiStream 支持无头模式部署,使用容器技术,可以极大的节省CPU 和内存开销,还能共享主机硬件,如nvidia,intel-gpu等,同时也有很好的隔离性,也可以作为Linux桌面使用。

限制

  1. 无法使用任何外置设备! 这是容器的限制!因此usb重定向是不可用的!

部署

无头模式需要使用xvfb,请先安装xvfb。

另外管理员可以选择用户需要的桌面类型!目前较为简单的是

  • LXDE
  • LXQt
  • XFCE4

例如ubuntu

apt update
apt install lxde xorg xserver-xorg-input-all pulseaudio -y

这时候创建一个启动脚本,用于启动桌面环境

#!/bin/bash
pulseaudio --start &

pactl load-module module-null-sink sink_name=virtmic \
    sink_properties=device.description=Virtual_Microphone_Sink

pactl load-module module-remap-source \
    master=virtmic.monitor source_name=virtmic \
    source_properties=device.description=Virtual_Microphone

export DISPLAY=:99
Xvfb :99 -screen 0 1920x1080x24 &
sleep 2
startlxde &

可以把最后的startlxde 替换为其他桌面环境,如startxfce4

之后 请参考上文 将pxvdistream 作为x11 捕获,即可完成部署!

容器仅支持使用外部桌面管理!

USB重定向部署

PXVDIStream 通过SPICE完成USB重定向,如果要实现USB重定向,需要为虚拟机配置多个USB设备,后端选择spice。同时在连接协议处,配置SPICE代理地址。

直连模式

PXVDIStream 也支持直连模式,通过pxvdistreamclient直接连接到pxvdistream server.pxvdistreamclient 位于 pxvdi 同样的目录当中!

请在配置文件中加入

username=admin
password=123456

即可配置完成。

使用pxvdistreamcient --address youip --username admin --password 123456 即可连接。

额外的参数 --fps 60|120|144 --bitreate 10|20|50(码率单位为M)