安装了一个干净的 Ubuntu 22.04
启用了内置远程桌面。我从 Windows 10 连接。除了音频传输外,一切正常。
:~$ inxi-SMA
System:
Host: rdp Kernel: 5.19.0-32-generic x86_64 bits: 64 Console: pty pts/0
Distro: Ubuntu 22.04.2 LTS (Jammy Jellyfish)
Machine:
Type: Qemu System: QEMU product: Standard PC (Q35 + ICH9, 2009) v: pc-q35-7.1
serial: <superuser required>
Mobo: N/A model: N/A serial: N/A UEFI: EFI Development Kit II / OVMF v: 0.0.0
date: 02/06/2015
Audio:
Device-1: Intel 82801I HD Audio driver: snd_hda_intel
Device-2: NVIDIA driver: snd_hda_intel
Device-3: Intel 82801FB/FBM/FR/FW/FRW High Definition Audio driver: snd_hda_intel
Sound Server-1: ALSA v: k5.19.0-32-generic running: yes
Sound Server-2: PulseAudio v: 15.99.1 running: yes
Sound Server-3: PipeWire v: 0.3.48 running: yes
:~$ journalctl -b -t pulseaudio
feb 26 19:56:26 rdp pulseaudio[877]: Failed to find a working profile.
feb 26 19:56:26 rdp pulseaudio[877]: Failed to load module "module-alsa-card" (argument: "device_id="0" name="pci-0000_00_1b.0" card_name="alsa_card.pci-0000_00_1b.0" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1""): initialization failed.
feb 26 19:56:27 rdp pulseaudio[877]: Unable to load mixer: Недопустимый аргумент
feb 26 19:56:27 rdp pulseaudio[877]: Unable to load mixer: Недопустимый аргумент
feb 26 19:56:27 rdp pulseaudio[877]: Disabling timer-based scheduling because running inside a VM.
feb 26 19:56:27 rdp pulseaudio[877]: Disabling timer-based scheduling because running inside a VM.
feb 26 19:56:27 rdp pulseaudio[877]: Failed to find a working profile.
feb 26 19:56:27 rdp pulseaudio[877]: Failed to load module "module-alsa-card" (argument: "device_id="0" name="pci-0000_00_1b.0" card_name="alsa_card.pci-0000_00_1b.0" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1""): initialization failed.
feb 26 19:56:52 rdp pulseaudio[877]: GetManagedObjects() failed: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
输出设备中的音频参数只有一个声卡。没有像XRDP中的xrdp-sink源。如果使用XRDP,声音是可以传输的,但是绘制速度会差很多。如何在ubuntu 22.04中使用标准RDP重置(激活)声音?
答案1
如何在 ubuntu 22.04 中使用标准 RDP 重置(激活)声音?
Ubuntu 22.04 中的标准 RDP 服务是 gnome-remote-desktop (grd)。grd
中的音频输出转发是在 GNOME 43 中实现的 (0+ 一些改进1)(还需要 PipeWire 进行音频处理),但是 Ubuntu 22.04 使用 GNOME 42(和 Pulseaudio)。
您基本上需要安装较新的 GNOME 版本并将 PipeWire 配置为音频处理程序(Ubuntu 22.10 及更高版本应该已经如此)。
需要注意的是,Ubuntu 中 grd 的音频传输效率不如其他发行版,因为 Ubuntu(至少目前)没有在启用 fdk-aac 的情况下构建 grd(这取决于https://bugs.launchpad.net/ubuntu/+source/fdk-aac/+bug/1977614)。
因此,在 Ubuntu 22.10(及更高版本)中,grd 具有音频传输功能。
(但是与 Fedora 37 上的 grd 或 Archlinux 上的 grd 相比,它会占用 Ubuntu 上的更多带宽(这也可能会对卡顿处理产生影响),因为如果没有 fdk-aac,单个音频数据包将大于 1600 字节,需要拆分。)