如何录制输出到扬声器?

有没有适用于Ubuntu的程序可以仅录制扬声器的输出声音,而不包括来自电脑外部的任何声音?

2有一个虚拟钢琴网站,我想在听耳机的同时弹奏钢琴并录制下来,而不是大声播放出去。 - AmirRazoR
5所以你只是想录制一个网站的输出声音? 我觉得这里几乎每个人都以为你在说你电脑组件的声音 :D - jplatte
我的回答可能会对这个类似的问题有所帮助:http://askubuntu.com/questions/167061 - user76204
2请参阅如何使用Ubuntu和Audacity录制任何内部声音。在这里,这个回答适用于我,而其他所有答案都无效。 - Ruslan
相关链接:https://askubuntu.com/questions/682144/capturing-only-desktop-audio-with-ffmpeg | https://superuser.com/questions/597227/linux-arecord-capture-sound-card-output-rather-than-microphone-input | https://superuser.com/questions/1570333/how-can-i-record-audio-output-from-command-line-in-linux - Ciro Santilli OurBigBook.com
7个回答

如果我没记错的话,我猜你在谈论录制“立体声混音”或回环输出。
简单来说,录制立体声混音意味着从扬声器输出录制声音。
以下是操作步骤:
1. 从Ubuntu软件中心安装pavucontrol。 2. 从Ubuntu软件中心安装audacity。 3. 在Audacity中选择pulse*作为录音设备。 4. 点击录制按钮。 5. 打开PulseAudio音量控制(在Dash中搜索PulseAudio音量控制)。 6. 选择录音选项卡。 7. 现在你应该看到ALSA插件[audacity]。如果你没有看到ALSA插件[audacity],请确保你已经在audacity中点击了录制按钮。在执行下一步时,你应该正在audacity中进行录制。 8. 选择“Monitor from *”。参见屏幕截图。 9. 现在你应该能够录制从扬声器或耳机听到的声音。
注意:在Ubuntu 12.10中进行测试 参考PulseAudio - Ubuntu Wiki

4我确实找到了“pulse”,但是我找不到“pulse:Mix:0”或者任何类似于mix 0的东西。我只是进入了首选项,然后设备,点击了录音,那里只有pulse,我在哪里可以找到pulse:mix:0? - AmirRazoR
@AmirRazoR 更新以反映当前版本的Ubuntu。 - user110837
在pavucontrol中的录音选项卡为空,我也找不到如何在Audacity中切换到pulse。 - kroiz
它在Ubuntu 13.04 (amd64)上也非常好用。非常感谢! - conualfy
2每一步都按照你的描述进行,但最终在Audacity(Ubuntu 14.04)中没有录制到任何音频。pulse*后面的*代表什么意思? - Drew Noakes
1还没有在14.04版本中尝试过。pulse*在这里指的是任何以pulse开头的名称的内容。 - user110837
在Ubuntu 14.04下运行得非常好。 - SunLiWei
Ubuntu 14...运行得非常好。谢谢。 - beingalex
对我来说也非常好用。谢谢。在做完这个之后,我发现播放速度太快了,按照这个答案解决了我的问题:http://askubuntu.com/a/603616/488727 - the_new_mr
录制的声音在开始时会包含静音,因为您首先进行录制,然后开始播放声音。这是如何使用Audacity截取静音的链接:http://manual.audacityteam.org/index.php?title=Truncate_Silence - guettli
它在我的Ubuntu 16.04上运行良好!非常感谢。 - morhook
这似乎没有记录aplay /dev/urandom的任何内容。我只能听到静音。 - Ruslan
1适用于Linux Mint。 - possumkeys
适用于Lubuntu 17.10。 - KO the typo
在Audacity中,如果你首先开始监控录音级别(左键单击Recording Meter打开监控),它会填充PulseAudio音量控制窗口中的录音选项卡。然后,你可以避免在开始录音之前保持静音,直到你准备好了再开始录音(@guettli)。 - Xen2050
太疯狂了!而且它在最新的Ubuntu 20.04上运行得很好。谢谢! - aghArdeshir
适用于Linux Mint。在从声卡录制时,请确保在播放选项卡下将Audacity静音,否则会出现反馈循环。 - Eelco van Vliet

一个非常小巧、简洁的软件,能够完美地满足你的需求,它被称为“音频录制器”,安装方法如下:
sudo add-apt-repository ppa:audio-recorder/ppa
sudo apt-get update && sudo apt-get install audio-recorder

文件会自动保存到~/Audio目录中。

Ubuntu audio-recorder


6它也像魔法一样有效!:) - conualfy
8这太棒了,谢谢!非常整洁,虽然Audacity设置可以工作,但如果你只是需要录制音频(到ogg、wav、mp3等格式),这就是解决方案。 - karni
1非常简单而整洁的工具! - SunLiWei
6为什么你要费心使用Audacity这种东西,而这个只需要一次点击就完成你所需的工作呢……我真无法理解。 - poelinca
音频录制器在Ubuntu 14.04上目前无法正常工作:音频录制器:符号查找错误:音频录制器:未定义的符号:_gst_message_type - Aleksander Alekseev
有没有想法能否通过命令行(无图形界面)完成这个任务? - max pleaner
@macsplean 我弄明白了.. 希望能帮到你 :) - b-ak
3@poelinca 因为Audacity和Pulse Audio是两个非常强大和有用的软件,如果我已经安装了它们,因为我在其他方面使用它们,那么为什么要安装第三个工具来做我现有程序已经能够实现的事情呢?此外,Audacity更适合这个任务,因为你可以在所需录音部分之前和之后剪掉任何多余的音频。顺便说一下,这很麻烦。Hustle的意思是推动或偷窃。 - Abraham Murciano Benzadon
@AbrahamMurcianoBenzadon 感谢澄清,对于拼写问题我很抱歉。 - poelinca
这个工具可以录制Skype吗?如果我想同时录制其他人说的话和我自己说的话,怎么办?最好能够分别录制到不同的音轨中,以便之后可以调整音量混合。 - Albert Veli
不适用于内置的模拟立体声(音频输出),Kubuntu 18.04。可能是pa volcontrol的问题... - Duns
模拟立体声双工对于音频输出与音频录制器不起作用;只有当我在PAVolControl中选择模拟立体声输出时,输出录制才正常,但这样我就失去了麦克风,也就是说失去了模拟立体声输入。我必须选择:要么输入,要么输出;似乎无法同时获得输入和输出。 - Duns
它具有命令行功能。只需执行“audio-recorder --help”。我无法直接使用我键入的名称保存GUI版本文件,它总是默认为YYYY-MM-DD-HH-MM-SS.xyz。 - ndasusers
如何卸载它! - Rubel
我已经成功安装和录制了,但是没有任何回放,无论是设置为ogg还是mp3。找到了ogg文件,它可以“播放”,但没有声音。除此之外,我的声音都正常。Xubuntu 20.04,Dell Latitude E6530。 - Hulda
工作得很完美。简单、紧凑而有效,但是我不得不选择“Starship/Matisse HD音频控制器(音频输出)”。所以我的猜测是你可能需要选择你的“音频控制器”,而不仅仅是“内置音频”或“系统默认”。 - shrimpwagon
在Ubuntu 22.04上工作。 - user171780

命令行

  1. 安装 sudo apt-get install pulseaudio-utils lame mpg123

  2. 搜索您的扬声器并连接到您的扬声器的监视

    pacmd list-sinks | grep -e 'name:' -e 'index' -e 'Speakers'

    或者

    pacmd list-sources | grep -e 'name:' -e 'index' -e 'Speakers'

enter image description here

  1. 播放您想要录制的任何内容,并键入 parec -d alsa_output.pci-0000_00_1f.3.analog-stereo.monitor | lame -r -V0 - out.mp3

  2. 按下 ctrl+c 停止录音并播放记录的文件 mpg123 out.mp3

极简 GUI

一个非常简单的 GUI 来完成这个任务,从 这里 下载所有文件并运行 install.sh 在 Dash 中搜索 Record Speakers


7最佳解决方案... <3 - Peque
测试aplay /dev/urandom时记录了静音。 - Ruslan
@Ruslan aplay 是用于播放音频的命令,它的对应命令用于录制音频是 arecord - b-ak
1当然是用于回放的。它还可以用于测试回环录音软件,以便软件能够拦截回放的内容。在我在Ubuntu 14.04上的测试中,parec无法拦截aplay的回放。 - Ruslan
@Ruslan 对我来说有效。Ubuntu 16.04。 - b-ak
@Ruslan使用mpg123而不是aplay进行播放。不知道为什么,但这对我有效。 - max pleaner
@maxple 你建议修复错误的一面。aplay 只是一个纯 ALSA 播放器的简单示例。还有很多其他纯 ALSA 的源,parec 在我测试的系统上可能无法拦截到。 - Ruslan
@Ruslan 不太清楚你所说的“错误的一面”是什么意思。你是指我应该用arecord替换parec吗?这个页面上的所有命令行脚本都使用parec。 - max pleaner
@maxple 我的意思是原帖问的是“如何录制”,而你建议改变“播放器”。播放器并不是用来录制的东西。如果录音设备错过了一些播放器的输出,那就不太好了。 - Ruslan
@Ruslan 好的,我是在回应你的第一条评论,说aplay不起作用。也许我误解了你的意思。但就我个人而言,aplay不能播放我用parec录制的mp3文件 - 我不得不使用mpg123代替。就像我之前说的,我不知道为什么会这样,因为它们都应该能够播放mp3。但这是出乎意料的,所以我在这里添加了一条评论,让其他人知道这个情况。起初我以为它不起作用,因为我只用aplay测试了一下。 - max pleaner
12考虑移除 | lame [...] 管道,并使用 --file-format=wav output.wav(例如)。您可以使用 parec --list-file-formats 列出支持的格式。另外,请明确指定设备时需要在末尾加上 .monitor。^^ - Peque
@Peque 现在应该没问题了吧? - b-ak
我收到了“流错误:没有这样的实体” - ka3ak
@ka3ak,我可以在chat.stackexchange.com上帮助你。请访问该网站,以便我将您添加到聊天室中。 - b-ak
这对我有用(kubuntu 18),但由于我有多个输出设备,我不得不调整py脚本以找到正确的设备。 - Jay Marm
如果您能将改进提交到代码库中,那就太好了。 - b-ak
1很好,因为这可以进行立体声播放和录音。看起来audacity不能做到这一点。 - Peter Thomassen
5你不一定需要源的名称,也可以选择源的索引:parec -d 0 | lame -r -V0 - out.mp3 - and-bri

我刚刚创建了一个小的别名,用一个简单的命令记录PC的音频输出,并将其存储为opus格式而不是mp3。
  1. 安装所需的软件包:

    sudo apt-get install pulseaudio-utils opus-tools
    
  2. 编辑你的 .bashrc 文件:

    nano ~/.bashrc
    

    复制下面的行并将其追加到你的 ~.bashrc 的末尾:

    alias recaudio="parec --monitor-stream="$(pacmd list-sink-inputs | awk '$1 == "index:" {print $2}')" | opusenc --raw - $(xdg-user-dir MUSIC)/recording-$(date +"%F_%H-%M-%S").opus"
    

    按下 Ctrl+X(关闭 nano),然后按下 Y(表示“是”)和 Enter(确认文件名)保存文件。

  3. 现在加载新的 ~/.bashrc(或者简单地打开一个新终端):

    source $HOME/.bashrc
    
然后试一试,只需输入即可。
recaudio

它将在您的音乐主文件夹中创建一个名为recording-[日期].opus的文件。

享受吧。


2--monitor-stream=... 这部分是什么意思/作用?我的 list-sink-inputs 列表在没有任何声音播放时为零,只有当有声音播放时才会返回一个数字。所以这个命令必须在声音已经开始播放之后才能启动吗? - Xen2050

注意:好吧,这个答案可能看起来有点敷衍,但它确实有效,而且是一款很棒的软件,特别适合同时录制扬声器输出和麦克风输出。或者如果你还需要录制电脑屏幕的视频。
总之,我已经疯狂地搜索了很久,希望找到一个简单易用且提供我所需功能的答案。
安装并使用Open Broadcaster Software(OBS)。说真的,就是这样。在谷歌上搜索应该能找到适合你机器的安装说明。
只需使用OBS进行录制,它会生成包含音频的视频。如果你只想录制音频,可以不添加视频源进行录制,它会生成一个空白视频,并包含你的录音。如果你只想录制扬声器输出而不录制麦克风,只需按下一个按钮将麦克风静音。非常直观。
(注意,这将给你一个视频文件。这对我来说没问题,但如果你需要一个像mp3这样的音频文件,你需要弄清楚如何将你制作的视频文件转换为音频文件(我不知道如何做,但有很多资源可以告诉你)。)

这是现在的更好答案,音频录制器ppa不起作用,而扬声器录制器需要Python 2。Audacity只显示麦克风作为输入设备。 - Ferroao


我找到了更好的解决方案,因为Audacity和pulse在播放时无法录制Ubuntu音频,无论使用哪个麦克风输入。如果关闭电脑的麦克风,Audacity就不会录制任何内容。
我找到了更好的解决方案,使用音频录制器。
因此,请在shell中尝试以下命令并按Enter键:
$ sudo add-apt-repository ppa:audio-recorder
$ sudo add-apt-repository ppa:audio-recorder/ppa
$ sudo apt-get -y update
$ sudo apt-get install audio-recorder

点击这里获取逐步指南。 访问博客这里获取更多更新。