lxc折腾之路 篇五:东方不亮西方亮

2024-04-01 22:18:13 0点赞 1收藏 1评论

到了本长篇最重要的环节了。我们要故技重施,像wayland那样,使用宿主机的unix socket,直接通过宿主机声卡播放声音。不过得让我先水水。我当初以为pipewire就和wayland compositor一样,只要宿主机装上,容器也装上,然后用上同一个unix socket就行了。这没错,但也不完全对。

当初我在笔记本上装了sway和pipewire和wireplumber,在sway上直接用mpv播放视频,笔记本的音响就出声音了。然后我又把pipewire的unix socket给容器用,同样的像wayland socket一样丢到XDG_RUNTIME_DIR里,容器也装了pipewire和wireplumber,我可以直接用wpctl控制宿主机音响声音的大小,也同样用mpv播放了视频,笔记本的音响也同理播放了声音。非常好,试验成功了,然后我就把小主机重装了。一切都如我之前的教程一般顺利,但是让我放弃proxmox的问题又来了,容器通过HDMI播放不了声音。这是什么情况,为什么在笔记本上可以成功,小主机却失败了呢。这就奇怪了,那在宿主机上直接播放视频,会不会有声音,没有。我知道问题所在了,是pipewire。然后卸载了pipewire,装上了老相识pulseaudio。测试下,怎么又没声音,到底是哪里出错了,又搜索了一番,搜到了之前在proxmox直通时没有声音所看到的网站。嗯,装pavucontrol,然后打开,去最后的配置那选择HDMI output,哈,有声音了。为了不再搞砸起见,我又发动了搜索引擎,找到了这个:https://discuss.linuxcontainers.org/t/audio-via-pulseaudio-inside-container/8768 ,跟着做,在容器装了pulseaudio和pavucontrol,然后打开pavucontrol,哈哈,可以控制宿主机的声音,在容器用mpv播个视频也有声音,成功了。成功个头,打开第二个视频就没声音了。这肯定又和dbus扯上关系了,用dbus-launch开pulseaudio,成功开到了3个视频,没有开到第4个视频还有声音的情况。尼玛,到底哪里出了问题,pipewire不行,pulseaudio也不行,回到笔记本上重新研究。在笔记本上,装的是pipewire,容器使用宿主机的pipewire socket和音响,mpv播放几个视频的声音都没问题,嗯,肯定是臭名昭著的pulseaudio远程播放的问题。装上pipewire,笔记本直接HDMI插到电视上,用pavucontrol设置下,宿主机有声音了,容器也有声音了,mpv播放几个视频都有声音,哈哈哈哈,我终于成功了。成功个头,打开firefox,去什么网站都播不出声音,换strawberry播放音乐也没有声音,到底哪里出错了啊。我想是不是错在我在容器中只安装了pipewire,但是却没有启动过。听起来是不是很奇怪,为什么装了却不启动,原因很简单,在容器里使用宿主机的显示和声音现在还在探索阶段,大家都在黑夜里摸石头过河,成功过河的人留下来的指导就和上面的链接里的内容一样,犹抱琵琶半遮面,需要猜他们没写出来的到底是什么,他们惜字如命,多给点提示都不行,不像我废话多的是,没关系,只要你们乖乖跟我做,肯定会有声音的。回到之前启动pipewire的话题,在没有启动pipewire前,使用wpctl status可以宿主机的声音设备,说明这个unix socket是有效的,但是启动pipewire后,wpctl status却显示dummy output,说明启动pipewire后的unix socket是无效的。pipewire并不像wayland compositor,可以通过环境WAYLAND_DISPLAY使用wayland-1的unix socket,同时它也不像pulseaudio,可以通过环境PULSE_SERVER来设置unix socket。所以就出现了个问题,我要是想让firefox之类不会自动使用声音的unix socket的应用,我必须启动声音管理器pipewire,但是启动pipewire后,pipewire就会创建个新的unix socket,然后与宿主机失联。然后我就动了歪脑筋,我先启动pipewire,再把unix socket换成宿主机的会怎么样,顶多出bug干掉容器,甚至宿主机的系统,甚至宿主机的硬件。事实证明我多虑了,替换成宿主机的unix socket后,所有容器内的应用都能通过宿主机的unix socket播放出声音,没有任何问题。要是出问题就是那程序不支持pipewire。东方不亮西方亮

所以我们开干吧。

我敢肯定这wiki只写了一半,装完pipewire后,aplay和pactl都不能用:https://wiki.debian.org/PipeWire

  • sudo apt install pipewire-audio pavucontrol -y

注意,下面的命令不是以root身份运行。如果你有跟着我写的做,肯定创建了个没有sudo权限的用户,登录那用户运行下面的命令,没有创建的话也行。

  • systemctl --user --now enable pipewire pipewire-pulse

  • systemctl --user --now enable wireplumber.service

然后在宿主机开pavucontrol,我知道你们肯定不习惯这么barebone的桌面环境,没事的,按win+enter就会弹出foot,在里面输入pavucontrol然后回车就行。然后去最后一项,点击那个框,现在后面写着已插入的HDMI就行了。在pavucontrol设置下音量,注意不要不小心静音了。win+shift+q就能关闭窗口。

东方不亮西方亮东方不亮西方亮

模拟立体音就是dummy input,不选也行。

我相信各位已经知道怎么改 profile了。

  • incus profile copy default pipewire

  • incus profile edit pipewire

config: {}

description: Let containers use host sound

devices:

pipewireSocket:

type: proxy

bind: container

connect: unix:/run/user/1100/pipewire-0

listen: unix:/mnt/pipewire-0

mode: '0770'

security.gid: '1100'

security.uid: '1100'

gid: '1000'

uid: '1000'

name: pipewire

把profile加进容器。

  • incus profile add htpc pipewire

进入容器。

  • incus exec htpc -- su -l lxc

安装pipewire,没错不装pavucontrol。

https://wiki.alpinelinux.org/wiki/PipeWire

  • doas apk add pipewire pipewire-zeroconf wireplumber

然后运行pipewire。开foot,然后运行这命令,然后不要关闭这个窗口,关掉的话pipewire也会关掉。

  • /usr/libexec/pipewire-launcher

再开个foot,运行这些命令。运行完这窗口就没用了,可以关了。

  • rm $XDG_RUNTIME_DIR/pipewire-0

  • ln -s /mnt/pipewire-0 $XDG_RUNTIME_DIR/pipewire-0

然后你随便开个东西,播放个声音试试。

该长篇完结。特别福利,送上mpv硬解4k h265的方法,前提是你的gpu得支持。

  • nano ~/.config/mpv/mpv.conf

vo=dmabuf-wayland

hwdec=auto-safe

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

268元起

Microsoft 微软 OFFICE 365 家庭版 会员

Microsoft 微软 OFFICE 365 家庭版 会员

106元起

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

159元起

WPS 金山软件 WPS 超级会员 3年卡

WPS 金山软件 WPS 超级会员 3年卡

308元起

Microsoft 微软 Office 365 个人版

Microsoft 微软 Office 365 个人版

106元起

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

279元起

Microsoft 微软 到手18.2元/月 微软office365家庭版microsoft365增强版15个月

Microsoft 微软 到手18.2元/月 微软office365家庭版microsoft365增强版15个月

279元起

Microsoft 微软 OFFICE 365 个人版 办公软件

Microsoft 微软 OFFICE 365 个人版 办公软件

185元起

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

676.4元起

Microsoft 微软 office专业版永久激活码office2019增强版终身版outlook密钥

Microsoft 微软 office专业版永久激活码office2019增强版终身版outlook密钥

249元起

WPS超级会员4年套餐pdf转word排版PPT润色模板素材店铺

WPS超级会员4年套餐pdf转word排版PPT润色模板素材店铺

暂无报价

国行版 Switch体感游戏套装 《健身环大冒险》

国行版 Switch体感游戏套装 《健身环大冒险》

265元起

WPS 金山软件 会员季卡

WPS 金山软件 会员季卡

59.85元起

微软(Microsoft))win10win11专业版批量式授权企业版嵌入式正版化解决方案win11家庭版

微软(Microsoft))win10win11专业版批量式授权企业版嵌入式正版化解决方案win11家庭版

1288元起

Microsoft 微软 活动6天 office365家庭版microsoft365订阅密钥

Microsoft 微软 活动6天 office365家庭版microsoft365订阅密钥

239元起

Microsoft 微软 办公软件 优惠商品

Microsoft 微软 办公软件 优惠商品

239元起
1评论

  • 精彩
  • 最新
  • 要是mpv有声音,但是Firefox没声音的话,在Alpine里装pipewire-pulse,重启容器,再干一次。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1
扫一下,分享更方便,购买更轻松