Paulzzh

一个过期东方苟的博客


Explore Me
Paulzzh
Paulzzh
一个过期东方苟的博客
15
4
21
东方Project随机图片API[置顶]
接口地址点击获得随机图片自己做的随机图片api,收录4W+张图片,虽然服务器在国外但是速度依然很快,
6年前 · Paulzzh
lxc linux debian13 xfce4 桌面 相关坑 记录 2.0
目标:PVE上所有LXC容器都是无特权安装 trixie-backports intel gpu 驱
1小时前 · Paulzzh
在 debian 13 上为 xrdp 启用 h264 / x264
前提网络上的教程大部分都是教你用这个脚本,实际上这里有第一个坑,首先他们用的参数是-s -e,未启用
2小时前 · Paulzzh
为 TiviMate 2.1.5 增加回放支持
本文章同步发表在 https://github.com/stackia/rtp2httpd/issu
4月前 · Paulzzh
TP-LINK TL-ER2260T 1.2.x 固件开启 telnet
曾经不懂事升级了 1.1.x 后再也找不回来的 SSH,现在回来了首先打开你的浏览器,登录路由器管理
5月前 · Paulzzh
東方香霖堂
摘录 Paulzzh · 7年前
这三本书与我手头的十二本合在一起共十五本,恐怕这十五本正好是一套。外部世界的式神果然和幻想乡是一样的。在电脑知识中F代表十五,F包含了一切,当所有东西成为F的时候它就有了最大值——我曾在一本书上读到过这样的内容。
在 debian 13 上为 xrdp 启用 h264 / x264
折腾 Paulzzh · 2小时前

前提

网络上的教程大部分都是教你用这个脚本,实际上这里有第一个坑,首先他们用的参数是-s -e,未启用编译安装的话这几个参数根本没有作用。
正确的参数是./xrdp-installer-1.5.6.1.sh -c -s -e才能编译进声音和h.264编码支持。
但是如果跑脚本就行的话就没有这篇文章了。
这里有第二个坑,脚本默认的编译参数相较debian默认源xorgxrdp未启用--enable-glamor,没有这个参数的话Xorg会没有显卡硬件加速。

再加上这个脚本重复下载文件,一堆报错,很难用。并且debian源的本来就挺好用,于是决定自己编译安装

第一个坑

这里参考了这篇文章,直接在debian 13上执行了apt-get source xrdp
坑来了。截至目前debian trixie的xrdp版本为0.10.1-3.1+deb13u1,然而xrdp要>=0.10.2才有h.264编码支持。
如果你也这样做了你会发现你添加了--enable-x264但实际上压根没装依赖都还能正常编译。

第一步

首先推荐在一个新的debian13 lxc容器里(和目标系统相同)安装依赖
apt-get install dpkg-dev devscripts build-essential fakeroot
然后找到debian forky的包,这个版本够高0.10.5-4
滚到下面的Download xrdp,依次下载保存:

确保在同一目录下,然后执行dpkg-source -x xrdp_0.10.5-4.dsc
之后应该长这样:

drwxr-xr-x  3 root root    4096 Apr 13 16:58 .
drwx------ 12 root root    4096 Apr 13 16:58 ..
drwxr-xr-x 30 root root    4096 Apr 13 16:58 xrdp-0.10.5
-rw-r--r--  1 root root   38068 Apr 13 15:16 xrdp_0.10.5-4.debian.tar.xz
-rw-r--r--  1 root root    1351 Apr 13 15:16 xrdp_0.10.5-4.dsc
-rw-r--r--  1 root root 2489216 Feb  1 16:16 xrdp_0.10.5.orig.tar.gz

进入xrdp-0.10.5/目录
继续安装依赖
apt-get build-dep xrdp
apt install libx264-dev libopenh264-dev

然后修改debian/rules文件:
找到:

override_dh_auto_configure:
        ./bootstrap
        cd librfxcodec && ./bootstrap
        cd libpainter && ./bootstrap
        ./configure \
            --enable-ipv6 \
            --enable-jpeg \
            --enable-fuse \

修改为:

override_dh_auto_configure:
        ./bootstrap
        cd librfxcodec && ./bootstrap
        cd libpainter && ./bootstrap
        ./configure \
            --enable-x264 \
            --enable-openh264 \
            --enable-ipv6 \
            --enable-jpeg \
            --enable-fuse \

即添加--enable-x264--enable-openh264编译参数。
最后执行debuild -us -uc编译deb包。
然后你应该能在上级目录里找到xrdp_0.10.5-4_amd64.deb
现在你的目录应该长这样:

drwxr-xr-x  3 root root    4096 Apr 13 17:08 .
drwx------ 12 root root    4096 Apr 13 16:58 ..
drwxr-xr-x 31 root root    4096 Apr 13 17:08 xrdp-0.10.5
-rw-r--r--  1 root root 1138336 Apr 13 17:08 xrdp-dbgsym_0.10.5-4_amd64.deb
-rw-r--r--  1 root root   38068 Apr 13 17:07 xrdp_0.10.5-4.debian.tar.xz
-rw-r--r--  1 root root    1351 Apr 13 17:07 xrdp_0.10.5-4.dsc
-rw-r--r--  1 root root  312051 Apr 13 17:08 xrdp_0.10.5-4_amd64.build
-rw-r--r--  1 root root    6500 Apr 13 17:08 xrdp_0.10.5-4_amd64.buildinfo
-rw-r--r--  1 root root    1957 Apr 13 17:08 xrdp_0.10.5-4_amd64.changes
-rw-r--r--  1 root root  646696 Apr 13 17:08 xrdp_0.10.5-4_amd64.deb
-rw-r--r--  1 root root 2489216 Feb  1 16:16 xrdp_0.10.5.orig.tar.gz

提取出来,在目标系统上安装:

# apt install xrdp x264
# dpkg -i xrdp_0.10.5-4_amd64.deb
# ldd /usr/sbin/xrdp|grep 264
        libx264.so.164 => /lib/x86_64-linux-gnu/libx264.so.164 (0x00007759f7e00000)
# xrdp -v
xrdp 0.10.5
  A Remote Desktop Protocol Server.
  Copyright (C) 2004-2026 Jay Sorg, Neutrino Labs, and all contributors.
  See https://github.com/neutrinolabs/xrdp for more information.

  Configure options:
      --enable-x264
      --enable-openh264
      --enable-ipv6
      --enable-jpeg

有flag并且ldd能看见链接库就是成功。

第二个坑

这个时候你尝试rdp连接,输完密码回车后会直接被踢出。观察发现是xorgxrdp崩了。
日志显示

[902455.071] expected xrdp client_info version 20230425, got 20241118
[902455.071] (EE) Fatal server error:
[902455.071] (EE) Incompatible xrdp version detected - please recompile(EE)
[902455.071] (EE) Please consult the The X.Org Foundation support at http://wiki.x.org for help.
[902455.071] (EE) Please also check the log file at ".xorgxrdp.10.log" for additional information.
[902455.071] (EE)
[902455.071] rdpmouseControl: what 4
[902455.071] rdpkeybControl: what 4
[902455.071] (II) AIGLX: Suspending AIGLX clients for VT switch
[902455.071] rdpLeaveVT:
[902455.072] (EE) Server terminated with error (1). Closing log file.

报告版本不兼容不一致。这里是第二个坑。xrdp和xorgxrdp是配套的要一起编译版本要一致。。而我们的xorgxrdp仍然是trixie的0.10.2-1

第二步

编译xorgxrdp。forky源

dpkg-source -x xorgxrdp_0.10.5-2.dsc
cd xorgxrdp-0.10.5/
apt-get build-dep xorgxrdp
debuild -us -uc
cd ..
ls -la
drwxr-xr-x 11 root root     4096 Apr 13 15:33 xorgxrdp-0.10.5
-rw-r--r--  1 root root   273360 Apr 13 15:33 xorgxrdp-dbgsym_0.10.5-2_amd64.deb
-rw-r--r--  1 root root    21300 Apr 13 15:32 xorgxrdp_0.10.5-2.debian.tar.xz
-rw-r--r--  1 root root     1394 Apr 13 15:32 xorgxrdp_0.10.5-2.dsc
-rw-r--r--  1 root root   138405 Apr 13 15:33 xorgxrdp_0.10.5-2_amd64.build
-rw-r--r--  1 root root     9008 Apr 13 15:33 xorgxrdp_0.10.5-2_amd64.buildinfo
-rw-r--r--  1 root root     1868 Apr 13 15:33 xorgxrdp_0.10.5-2_amd64.changes
-rw-r--r--  1 root root    67796 Apr 13 15:33 xorgxrdp_0.10.5-2_amd64.deb
-rw-r--r--  1 root root   521964 Feb  1 16:16 xorgxrdp_0.10.5.orig.tar.gz

提取出xorgxrdp_0.10.5-2_amd64.deb,安装。

(附加)第三个坑

然后你可能会遇到效果不明显。似乎未启用x264编码。
调查发现是色深必须要设置为32-bit否则不兼容
client requested gfx protocol with insufficient color depth
2026-04-13T17:22:42.png
修改为32位色深后,能明显看到带宽占用降低。
并且日志:

[2026-04-14T00:18:36.812+0800] [INFO ] Codec search order is H264
[2026-04-14T00:18:36.816+0800] [INFO ] Matched H264 mode
[2026-04-14T00:18:36.820+0800] [INFO ]   replying version 0x000a0600 flags 0x00000000
[2026-04-14T00:18:36.824+0800] [INFO ] xrdp_mm_egfx_caps_advertise: xrdp_egfx_send_capsconfirm error 0 best_index 7
[2026-04-14T00:18:36.828+0800] [INFO ] xrdp_egfx_reset_graphics:
[2026-04-14T00:18:36.832+0800] [INFO ] xrdp_egfx_reset_graphics: width 1920 height 1080 monitorcount 1
[2026-04-14T00:18:36.836+0800] [INFO ] xrdp_mm_egfx_caps_advertise: xrdp_egfx_send_reset_graphics error 0 monitorCount 0
[2026-04-14T00:18:36.840+0800] [INFO ] xrdp_mm_egfx_create_surfaces: map surface_id 0 left 0 top 0 width 1920 height 1080
[2026-04-14T00:18:36.844+0800] [INFO ] xrdp_encoder_create: starting h264 codec session gfx
[2026-04-14T00:18:36.848+0800] [INFO ] xrdp_encoder_create: using x264 for software encoder

不完美的地方

目前是如果你不是N卡(NV有单独的nvenc支持但是我不关心)
只有x264和openh264两个选择。这俩都是软件编码。
我有igpu。我可以正常用intel qsv和va-api。但是这里都用不上加速。
可能需要等add FFmpeg/dma-buf based VAAPI/Vulkan encoding support

彩蛋

2026-04-13T17:29:21.png

  评论
  • 您正在回复给 Poi