我无法在计算机屏幕上同时录制系统声音和麦克风音频。我使用命令
ffmpeg -video_size 2880x1800 -framerate 30 -f x11grab -i :0.0 -f pulse -ac 2 -i 0 -f pulse -ac 2 -i 1 output.mkv
答案1
以下是这些帖子对您问题的回答:
使用 PulseAudio 实用程序“pacmd”。
$ pacmd list-sources|awk '/index:/ {print $0}; /name:/ {print $0}; /device\.description/ {print $0}'
运行上述命令以获取所有系统记录接口的名称。示例输出如下所示。
index: 0
name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
device.description = "Monitor of Built-in Audio Analog Stereo"
* index: 1
name: <alsa_input.pci-0000_00_1b.0.analog-stereo>
device.description = "Built-in Audio Analog Stereo"
找到您的输入源运行pacmd list-source-outputs | grep source
现在,运行以下命令同时从麦克风和扬声器录制音频。
ffmpeg -f pulse -i [Your input source 1] -map '0' 0.mp3 -f pulse -i [Your input source 2] -map '1' 1.mp3
例如:
$ ffmpeg -f pulse -i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -f pulse -i alsa_input.pci-0000_00_1b.0.analog-stereo -acodec libmp3lame -map 0:0 -map 1:0 outfile.mkv
答案2
您的命令几乎完美,但要录制所有声音,您需要录制“监视器”。显然pulse -ac 2 -i 0
指的是您的麦克风,而不是监视器。
执行pacmd 列表源可能会显示正确的索引。例如,我的索引是:(仅显示重要部分)
* index: 0
name: <alsa_output.pci-0000_1c_00.1.hdmi-stereo-extra3.monitor>
driver: <module-alsa-card.c>
...
index: 1
name: <alsa_output.pci-0000_1e_00.3.analog-stereo.monitor>
driver: <module-alsa-card.c>
...
index: 2
name: <alsa_input.pci-0000_1e_00.3.analog-stereo>
driver: <module-alsa-card.c>
因此,您需要决定哪个索引适合您。使用音量控制可能有助于选择正确的显示器(如果您有多个选项)
顺便说一句,你的命令无法工作,因为这部分:-i: 0.0 + 0.0
ffmpeg 无法识别。它应该是“-i :0.0”
答案3
注意:好吧,这个答案完全是逃避责任,因为它完全忽略了使用 ffmpeg 的要求,但它确实有效,它是一个很棒的软件,它可能会帮助一些人。
不管怎样,我一直在谷歌上苦苦寻找一个简单易用并且可以提供我需要的一切的答案。
安装并使用 Open Broadcaster Software (OBS)。说真的,就是这样。谷歌搜索应该会显示针对您的机器定制的安装说明。
只需使用 OBS 录制,它就会制作一个包含视频源(使用屏幕捕获)和音频(系统声音和麦克风)的视频。如果您只想录制音频,只需录制而不录制视频源,它就会制作一个包含您录制内容的空白视频。如果您只想录制扬声器输出而不录制麦克风,只需按一下按钮即可将麦克风静音。直观。
(请注意,这会为您提供一个视频文件。这并不困扰我,但如果您需要像 mp3 这样的音频文件,您将必须弄清楚如何将您制作的视频文件转换为音频文件(我不知道如何做到这一点,但有很多资源可以告诉您)。)