Pacat
pacat(1) 是一个简单的工具,用于在 PulseAudio 声音服务器上播放或捕获原始或编码的音频文件。它理解 libsndfile 支持的所有音频文件格式。
它也以别名 paplay
、parecord
、parec
和 pamon
存在。
安装
pacat
默认随 PulseAudio 一起安装,作为 libpulse 软件包的一部分。
用法
请参阅 pacat(1) man 手册页,以获取有关 pacat
标志的信息。
paplay
等同于pacat --file-format
parecord
等同于pacat -r --file-format
parec
等同于pacat -r --raw
pamon
等同于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