阿里云 ECS (Alibaba Cloud Linux + GNOME) RDP 远程声音配置指南
适用场景
•云服务器:阿里云 ECS(或其他云服务器)
•操作系统:Alibaba Cloud Linux / CentOS 8 / RHEL 8
•桌面环境:GNOME
•远程协议:RDP (xrdp)
•问题:Windows 远程连接后听不到声音
________________________________________
核心原理
云服务器默认没有物理声卡,需要:
1.编译 PulseAudio 源码(生成头文件)
2.编译安装 pulseaudio-module-xrdp(RDP 音频重定向模块)
3.配置 xrdp 和 PulseAudio,让声音通过 RDP 传输到 Windows 客户端
________________________________________
完整操作步骤
第一步:安装基础开发工具和依赖
bash
复制
下载
sudo yum install -y epel-release
sudo yum install -y git gcc gcc-c++ make autoconf automake libtool \
pulseaudio-libs-devel meson ninja-build \
glib2-devel libcap-devel libsndfile-devel \
speexdsp-devel alsa-lib-devel dbus-devel \
libtdb-devel openssl-devel libudev-devel lirc-devel \
check check-devel doxygen
第二步:下载并编译 PulseAudio 源码
bash
复制
下载
cd /tmp
wget https://freedesktop.org/software/pulseaudio/releases/pulseaudio-15.0.tar.xz
tar -xf pulseaudio-15.0.tar.xz
cd pulseaudio-15.0
# 配置构建(禁用文档以加快编译)
meson setup build -Ddocumentation=false
# 编译
ninja -C build
第三步:下载并编译 xrdp 音频模块
bash
复制
下载
cd /tmp
git clone --depth=1 https://github.com/neutrinolabs/pulseaudio-module-xrdp.git
cd pulseaudio-module-xrdp
# 生成配置
./bootstrap
# 指向 PulseAudio 源码目录
./configure PULSE_DIR=/tmp/pulseaudio-15.0 PULSE_CONFIG_DIR=/tmp/pulseaudio-15.0/build
# 编译安装
make
sudo make install
第四步:配置自动加载
bash
复制
下载
# 创建 PulseAudio 自动加载配置
mkdir -p ~/.config/pulse/default.pa.d/
cat > ~/.config/pulse/default.pa.d/xrdp.pa << 'EOF'
### Load xrdp module for RDP audio redirection
.ifexists module-xrdp-sink.so
load-module module-xrdp-sink
.endif
.ifexists module-xrdp-source.so
load-module module-xrdp-source
.endif
EOF
# 设置 xrdp-sink 为默认输出设备(登录时自动执行)
echo 'pactl set-default-sink xrdp-sink' >> ~/.profile
第五步:配置 xrdp 服务端
bash
复制
下载
# 编辑 /etc/xrdp/xrdp.ini,确保 [channels] 部分有:
# audio=true
# rdpsnd=true
sudo sed -i '/\[channels\]/,/^$/ s/^;*audio=true/audio=true/' /etc/xrdp/xrdp.ini
sudo sed -i '/\[channels\]/,/^$/ s/^;*rdpsnd=true/rdpsnd=true/' /etc/xrdp/xrdp.ini
# 重启 xrdp
sudo systemctl restart xrdp
第六步:Windows RDP 客户端设置
在 Windows 上打开远程桌面连接(mstsc):
•显示选项 → 本地资源 → 远程音频 → 设置
•远程音频播放 → 在此计算机上播放
•点击确定
第七步:测试声音
重新 RDP 连接后,在服务器终端执行:
bash
复制
下载
# 检查设备
pactl list sinks short
# 播放测试音
paplay /usr/share/sounds/alsa/Front_Center.wav
或者在 GNOME 设置 → 声音 → 输出设备中选择 xrdp-sink,点击测试。
________________________________________
常见问题速查
问题解决方案
pactl list sinks 看不到 xrdp-sink执行 pactl load-module module-xrdp-sink
编译缺依赖根据报错用 yum search 找到对应 devel 包安装
PulseAudio 启动失败检查 XDG_RUNTIME_DIR 环境变量,应为 /run/user/1000
声音卡顿/延迟Windows RDP 客户端降低音频质量为"动态"
重启后声音消失确认 ~/.config/pulse/default.pa.d/xrdp.pa 存在
________________________________________
关键文件路径
文件/目录作用
/usr/lib64/pulse-15.0/modules/module-xrdp-sink.soxrdp 音频模块
~/.config/pulse/default.pa.d/xrdp.pa用户级 PulseAudio 自动加载配置
/etc/xrdp/xrdp.inixrdp 服务配置
/tmp/pulseaudio-15.0/PulseAudio 源码目录(编译用)
________________________________________
这套流程的核心是:让 PulseAudio 识别到 RDP 虚拟出来的音频通道。关键是编译 pulseaudio-module-xrdp 时需要正确的 PulseAudio 源码头文件路径。
以后如果换服务器或重装系统,按这个文档一步步来就行