我在 Fedora-21 工作站上使用 ffmpeg 版本 2.4.7。我想同时从麦克风和扬声器录制音频作为单独的流。我为此使用了以下命令。
ffmpeg -f alsa -i pulse -f alsa -i default -acodec libmp3lame -map 0:0 -map 1:0 outfile.mkv
但是在终端中执行此命令后,我必须转到 GUI 中的“音量控制”设置,然后转到“录音”选项卡,将一个通道的“捕获自”更改为“内置音频模拟立体声”(即麦克风)并将另一个通道的“捕获自”更改为“内置音频模拟立体声监视器”(即扬声器)。
但是,如何才能完全从命令行完成此操作,以便自动化并在脚本中使用。
答案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"
现在,运行以下命令同时从麦克风和扬声器录制音频。
$ 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
认为0是你的显示器。模拟(PC)和1是您的模拟(麦克风)流。为了获得一个输出文件,您可以在其中听到来自麦克风和 PC 的音频,请运行以下命令:
ffmpeg -f pulse -i 0 -f pulse -i 1 -filter_complex amix=inputs=2 both_streams.m4a