Pacat
pacat(1) 是一个简单的工具,用于在 PulseAudio 声音服务器上播放或捕获原始或编码的音频文件。它理解 libsndfile 支持的所有音频文件格式。
它也以别名 paplay、parecord、parec 和 pamon 存在。
安装
pacat 默认随 PulseAudio 一起安装,作为 libpulse 软件包的一部分。
用法
请参阅 pacat(1) man 手册页,以获取有关 pacat 标志的信息。
paplay等同于pacat --file-formatparecord等同于pacat -r --file-formatparec等同于pacat -r --rawpamon等同于pacat --raw- 当直接调用
pacat时,默认值等同于pacat -p --raw。
总结一下,parecord 和 parec 默认都录制,而 pacat 和 paplay 默认都播放。parecord 和 paplay 都处理编码音频,而 parec 和 pacat 处理原始 PCM(因此可以用于管道)。
请注意,pacat 的单个实例不能同时录制和播放;为此,请参阅 #播放音频输入。
选择一个接收器或源
配置要播放到哪个接收器或要录制哪个源,可以使用 PulseAudio 前端 完成,或者使用 -d 选项以编程方式完成。
列出可用的接收器
$ pactl list sinks short
列出可用的源
$ pactl list sources short
删除 short 关键字会产生关于每个接收器/源的详细输出。
有两种方法可以引用给定的接收器/源:按名称或按 ID。以以下源列表为例
$ pactl list sources short
0 alsa_output.pci-0000_00_1f.3.analog-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING 1 alsa_input.pci-0000_00_1f.3.analog-stereo module-alsa-card.c s16le 2ch 44100Hz RUNNING 2 alsa_output.hw_0_7.monitor module-alsa-sink.c s16le 2ch 48000Hz RUNNING 3 rtp.monitor module-null-sink.c s16le 2ch 44100Hz RUNNING
那么以下两行产生相同的结果。
$ parecord -d alsa_input.pci-0000_00_1f.3.analog-stereo speech.flac $ parecord -d 1 speech.flac
技巧和窍门
低延迟播放
默认情况下,pacat 让 PulseAudio 服务器选择延迟,“通常相对较高,以节省电力”。如果这是不可取的,例如对于 #播放音频输入,可以向 pacat 传递 latency(以字节为单位)或 latency-msec 选项。例如
$ pacat -d 0 --latency-msec 1
请注意,这通常只需要在播放时完成,而不是在录制时完成。
播放音频输入
如果您正在录制外部音频源(例如通过 jack 公对公 电缆),您可能希望对您正在录制的内容进行反馈。这可以通过使用 parec 捕获输入,并将其通过管道传输到 pacat 以播放它来实现。
$ parec | pacat
直接 #选择一个接收器或源 可能很实用,例如
$ parec -d 0 | pacat -d 1
可以通过在管道中添加 tee 来同时录制声音
$ parec | tee speech.raw | pacat
尽管您可能希望改为启动 parec 或 parecord 的单独实例。
从多个源录制
可以通过多次使用 -d 参数,在单个命令中从接收器和源录制。例如,录制包括您的客人的讲话(接收器)和你自己的声音(源)的视频会议可能看起来像
$ parec -d alsa_input.pci-0000_00_1f.3.analog-stereo -d alsa_output.pci-0000_00_1f.3.analog-stereo --file-format=wav (date +%F).wav