【在 WSL2 GUI 中使用 pulseaudio 播放声音】

news2024/11/23 12:09:40

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、pulseaudio 是什么?
  • 二、部署步骤
    • 1.下载PulseAudio
    • 2.前提条件
    • 3.开始配置
      • 1.配置pulseaudio
      • 2.配置麦克风权限
      • 3.配置WSL2外放
      • 4.配置WSL2麦克风
  • 总结


前言

最近在搞一个Linux项目,由于WSL2中需要用到声音外放,无奈只能潜心研究。后来就使用了一种折中的方式替代,那就是pulseaudio。目前来讲WSL2对硬件外设的支持还是不太友好,关于USB的支持我之前在其他文章中已经论述过了,这里不讨论。


一、pulseaudio 是什么?

PulseAudio(以前叫Polypaudio)是一个跨平台的、可通过网络工作的声音服务,其一般使用于Linux和FreeBSD操作系统。它可以用来作为一种简易改进的开放声音后台(ESD)替换。

PulseAudio运行于Microsoft Windows和POSIX兼容系统(如Linux和FreeBSD)。PulseAudio是自由软件,基于GNU宽通用公共许可证 (LGPL)2.1协议。

一言以蔽之:一种跨平台,通过网络传输声音的工具。我们今天不讨论实现原理,就单讲怎么部署。

二、部署步骤

1.下载PulseAudio

PulseAudio.zip
为了尽可能减少配置,我上传了一个无需配置的压缩包。

2.前提条件

这里由于测试使用的是ffplay,而ffplay需要打开一个图形界面,如果你的WSL2不带GUI,会出现一个段错误。所以前提是你的WSL2需要支持GUI。

理论上,只要你能调用播放命令即可,哪怕没有GUI也是可以的,但是前提是你需要通过代码实现或者其它命令实现。只不过ffplay是我能想到的最简单的方法了,要不然你就要装一个播放器了。

怎么配置GUI,请看我的其它文章Windows11 配置GUI

3.开始配置

1.配置pulseaudio

解压pulseaudio.zip到桌面或者任何一个可以访问的目录,这里我选择解压到桌面。需要特别说明的是最好使用我的pulseaudio.zip,这个软件本身版本很多,不能保证所有的版本都是可以的。而且,我的zip解压就可以用,不需要额外配置,至少我是一次跑通。

解压完之后进入pulseaudio\bin,然后在这个目录开一个powershell或terminal,之后执行bin下面的pulseaudio.exe

./pulseaudio.exe
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on Win32.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on Win32.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on Win32.
W: [(null)] pulsecore/core.c: failed to allocate shared memory pool. Falling back to a normal memory pool.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on Win32.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on Win32.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on Win32.
E: [(null)] daemon/main.c: Failed to load directory.

出现上面的报错提示不用惊慌,不会影响声音输出,至少我的环境没有影响。

注:这个页面不要关掉,它是个服务,需要一直挂在那里,最小化就行了。

2.配置麦克风权限

windows10或11上外放是不需要特殊权限的,但是使用麦克风需要赋予麦克风权限,具体方法请往下看。
Windows11:
首先,Win+i进入设置页面
其次,在左边的侧边栏找到隐私和安全性
最后,一直往下划,找到麦克风点进去
在这里插入图片描述
在这里插入图片描述
Windows 10:
首先,Win+i打开设置
其次,在面板里找到隐私并进入
最后,在左侧边栏找到麦克风
在这里插入图片描述

在这里插入图片描述

注意:一定要在测试前先打开Windows上的pulseaudio

3.配置WSL2外放

这里,我用的是Ubuntu-18.04版本,Ubuntu-20.04应该也是可以的(没有实测)。
打开一个powershell

#powershell输入wsl进入环境
wsl
#安装多个wsl分发版
wsl -d <分发版>

进入wsl环境之后,如果没有安装ffmpeg的先安装ffmpeg。

sudo apt update
sudo apt install ffmpeg

接下来配置一个环境变量

vim .bashrc
#添加环境变量
export PULSE_SERVER=tcp:$(cat /etc/resolv.conf | grep nameserver | cut -c 12-23)
#保存
wq
#生效
source .bashrc

检查下变量:

echo $PULSE_SERVER
#我的
tcp:172.20.144.1

每个人可能都不一样,这个就是/etc/resolv.conf里面的nameserver
在这里插入图片描述

最后一步,随便找一个wav文件或MP3复制到用户目录

ffplay -i "1.wav|1.mp3"

注意:如果你的文件包含空格的话,一定要用双引号括住,不然文件会被解析成多个参数。

这个时候你应该就可以听到音乐了,一定要先把右下角的声音打开。

4.配置WSL2麦克风

这里我用到了一个snap应用audio-recoder,如果你恰好和我一样打开了systemd并安装了snap,你可以很轻松安装一个录音软件。

sudo snap install --edge audio-recorder

安装好之后打开应用:

audio-recorder

在这里插入图片描述
按照我的配置就行了,点击Start recording开始录音,点击Stop recording停止录音。播放的话很简单,用上面的ffplay就可以了。

虽然是tcp,我的电脑没有感觉到太明显的延迟,可能性能越强的电脑体验越好吧。


总结

1、Windows11别忘记打开声音,麦克风别忘了给权限
2、可能有一定延迟,因为是通过网络传输的。
3、效果的话只能见仁见智了,如果不能满足要求就安装一个实实在在的Ubuntu吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hbase之引入Phoenix

Phoenix简介 Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表&#xff0c;插入数据和查询HBase数据。 1&#xff09;容易集成&#xff1a;如Spark&#xff0c;Hive&#xff0c;Pig&#xff0c;Flume和Map Reduce&#xff1b; 2&#xf…

RocketMQ5.0消息存储<四>_刷盘机制

RocketMQ5.0消息存储<四>_刷盘机制 一、刷盘概览 RocketMQ存储与读写是基于JDK NIO的内存映射机制(MappedByteBuffer),消息存储时首先将消息追加到文件内存映射(commit操作),再根据配置的刷盘策略在不同时间进行刷写到磁盘(flush操作)。同步刷盘,消息提交到文件内…

计算机实习学习总结报告10篇

计算机实习学习总结报告篇1 一、实习单位&#xff1a; 来到实习单位后主要是在门市从事产品的销售和商家间渠道工作。在工作的过程中了解计算机相关行业的发展现状及趋势;熟悉计算机硬件组装、计算机系统及软件安装、局域网搭建;掌握典型计算机网络工程的安装与维护;了解网站…

Linux之Shell进阶(变量和条件判定语句)

文章目录 变量变量的含义变量的定义与使用&#xff08;重点&#xff09;只读变量接收用户输入删除变量 条件判断语句 变量 变量的含义 什么是量&#xff1f; 量就是数据. 什么是变量&#xff1f; 数据可以发生改变就是变量。 在一个脚本周期内,其值可以发生改变的量就是变…

python调用钉钉发送告警消息

zabbix和prometheus都能做监控告警调用企业微信和钉钉。那么问题来了做为一名合格的运维和开发人员&#xff0c;脚本发现故障告警&#xff0c;自动调用发送详细告警内容&#xff0c;这点儿东西得会。 效果图如下&#xff1a; 普通发送方式 import requestsdef dingding_info(…

AR 技术应用与管理解决方案:施工建造、机柜扫描、办公室导航

建筑行业作为人类历史上最重要的产业之一&#xff0c;在数字化转型方面同样也在不断推进。图扑软件结合 AR 技术的应用&#xff0c;为建筑行业带来了更加便捷高效的建筑施工过程管理。 传统的建筑施工管理过程中&#xff0c;由于缺乏信息化手段&#xff0c;往往存在资料不全、…

解决microsoft windows 恶意软件删除工具 占用内存高

1、winR快捷键&#xff0c;输入regedit&#xff0c;按回车键进入注册表编辑器 2、定位到 \HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ 并创建新项MRT 3、 新建DWORD(32)值&#xff0c;命名为DontOffer ThroughWUAU,数值数据为1; 4、以管理员身份运行命令提示符&#x…

vue3的customRef

文章来源:我的博客,欢迎访问,不欢迎攻击,谁攻击谁儿子 customRef 作用:实现一个自定义的ref,并对其依赖项跟踪和更新触发进行显示控制 像是下面的代码一样: <template><div class"lim"><div class"btns"><el-input type"text…

web期末作业(html+css)-中华美食介绍(附带文档)

作品展示 web期末作业-中华美食介绍 首页包含功能&#xff1a; 轮播图&#xff1a;在首页顶部设置一个可自动轮播的图片展示区域&#xff0c;展示多张宣传图片或产品图片&#xff0c;提升页面的视觉效果和吸引力。 鼠标滑过文字变色&#xff1a;为首页的一些关键文字或链接添…

python安装opencv出错 PEP 517

我的 python 版本是 3.6 的&#xff0c;当需要安装 opencv 时&#xff0c;使用pip install opencv-python 命令进行安装时&#xff0c;出现错误&#xff0c;如下所示&#xff1a; Building Custom Rule C:/Users/liqian/AppData/Local/Temp/pip-install-6jpavinn/opencv-pytho…

element 树形表格每次刷新列表保存展开关闭状态

树形表格保存展开关闭状态 编辑数据后&#xff0c;记录用户操作行的展开和关闭 注意&#xff0c;以下列子是默认展开&#xff0c;记录合上的状态 注意 row-key 需要给每行一个key expand-change 点击行的操作 <el-tableref"tableItem"slot"table":data…

Matrix Breakout:2 Morpheus(靶机详细渗透测试过程记录)

nmap -sS -p 80 -oG - 192.168.192.0/24 | grep open 探测网段下开放80端口的主机。 扫描目录 发现该界面 存储型xss 发现file参数貌似可以控制读取文件目标。 尝试利用伪协议读取&#xff0c;文件内容。 解码&#xff0c;分析源代码&#xff1a; <?php$file"graff…

如何制作EDM电子邮件营销模板

敲黑板&#xff01;宝子们&#xff0c;关于如何制作EDM邮件营销模板的重点介绍来啦~EDM邮件营销模板是现代社会中非常重要的一种电子邮件营销方式。通过精美的EDM邮件营销模板&#xff0c;可以吸引更多的用户注意和关注&#xff0c;进而提高销售量和用户体验。那么&#xff0c;…

以赛兴产 曙光支持首届全国先进计算技术创新大赛

7月11日&#xff0c;首届全国先进计算技术创新大赛启动会在四川达州成功召开。中科曙光作为大赛支持单位应邀出席&#xff0c;并就以赛兴产、加速算力走向普适普惠的深耕实践做专题分享。 本次大赛由中国信息通信研究院、四川省经济和信息化厅、达州市人民政府共同主办&#xf…

【优选算法题练习】day5

文章目录 一、904. 水果成篮1.题目简介2.解题思路3.代码4.运行结果 二、438. 找到字符串中所有字母异位词1.题目简介2.解题思路3.代码4.运行结果 三、30. 串联所有单词的子串1.题目简介2.解题思路3.代码4.运行结果 总结 一、904. 水果成篮 1.题目简介 904. 水果成篮 你正在探…

夏日酷暑高温,设备陆续罢工,为什么这款DTU却能久经“烤”验

炎炎夏日&#xff0c;终于迎来周末的东东&#xff0c;想要出门却发现所在地区不断弹出高温预警&#xff0c;刚买来的雪糕因为在桌子上放了1分钟&#xff0c;再打开包装时才发现其已经开始消融&#xff0c;那小雪人精致的面容也如同被太阳炙烤般扭曲变形&#xff0c;并时不时滴下…

CUnit在ARM平台上的离线搭建(让CUnit编译安装成功之后的可执行文件.so变成ARM下的—ARM aarch64)(实用篇)

前言&#xff1a;1 CUint-2.1-3.tar.bz2压缩安装包下载并解压2 进入CUint-2.1-3目录并且通过指令./bootstrap*产生configure *执行文件3 执行./configure*命令4 make编译5 make install 安装 前言&#xff1a; 在X86架构上的Linux操作系统上面进行cmake编译&#xff08;Cyclon…

为你解密免费音频格式转换器软件有哪些

音频格式转换技术是一种将音频文件从一种格式转换为另一种格式的技术。这项技术非常有用&#xff0c;可以帮助我们在不同设备和平台上播放和共享音频文件。现在市场上有许多免费的音频格式转换器软件可供选择&#xff0c;它们提供了方便、快捷的方式来进行音频格式转换。如果你…

MFC 将工具栏的两项中加入空白按钮

先视为普通按钮赋ID ImageList中Add的图为资源视图新建的CBitmap 是个空图 SetButtonText对应的按钮文本也为空格 然后m_toolbar.GetToolBarCtrl().EnableButton(ID_BUTTONS, FALSE);将对应的按钮禁用即可 ID_BUTTONS是第一个按钮的ID值 UINT nArray[21]; for (int i 0; i &l…

burpSuitPro破解安装教程

1、在解压后&#xff0c;如第一次使用BP请先运行 激活脚本 2、启动激活程序后点击 Run &#xff0c;运行Burp 然后将 License 里面的值复制到 Burp的 key 输入框里&#xff0c;点击 Next &#xff1a; 3、接下来我们要选择使用手动激活 点击 Manual activation 4、将如下输入…