mOt*_*tmd 9 audio containers fedora pipewire
从 Fedora 34 开始,pulseaudio 被 Pipewire 取代。我使用脉冲音频插座从容器中获取声音,这是最安全的方法。所以,我现在想设置管道来处理容器中的音频,但我找不到方法......
我现在正在尝试最简单的方法,共享 snd 设备,无需套接字:
启动 fedora 34 容器:
podman run -it --device /dev/snd fedora
Run Code Online (Sandbox Code Playgroud)
创建用户并将其添加到音频组:
useradd usertest -u 1000 -m -p ''
usermod -aG audio usertest
Run Code Online (Sandbox Code Playgroud)
安装页面:
dnf -y install pipewire alsa-utils pulseaudio-utils
systemctl start --user pipewire-pulse.service
Run Code Online (Sandbox Code Playgroud)
当我启动它时,出现 DBUS 错误,因为 DBUS 没有在容器上运行
对于用户,pactl info返回此错误:
连接失败:连接被拒绝
pa_context_connect() 失败:连接被拒绝
或者是否有可能获得类似于带有管道线的脉冲音频插座的东西?
我想您不需要在容器中运行成熟的 pipeline 服务器,您只需要安装它即可。它包含您需要的客户端库。如果您的主机上已经运行了 Pipewire 服务器,我们只需从容器连接到它即可。
我需要的正是你想要的(在容器内运行软件,能够通过主机声卡播放声音),这就是我的做法 - /sf/answers/5304311281/
与您的设置有一些小差异:
docker,没有podmanalpinedocker 镜像,而不是fedora那个我用 docker image 尝试了一下fedora- 它工作得很好:
-v /run/user/1000/pipewire-0:/tmp/pipewire-0-e XDG_RUNTIME_DIR=/tmp)docker run -it -v /run/user/1000/pipewire-0:/tmp/pipewire-0 -e XDG_RUNTIME_DIR=/tmp --rm fedora /bin/sh
yum install pipewire pipewire-alsa alsa-utils
speaker-test
# you should hear a sound here
Run Code Online (Sandbox Code Playgroud)
我唯一不喜欢的是,在 Fedora 中,该pipewire软件包带来了很多硬依赖项。Alpine 并没有发生这种情况。可能还有另一种方法存在,将 Pipewire 客户端仅安装到 Fedora,而不带来所有混乱,但仍然如此。
| 归档时间: |
|
| 查看次数: |
2359 次 |
| 最近记录: |