我有多个正在运行的 Linux 程序实例,这些实例会输出声音(作为 Web 应用程序的一部分),因此我需要记录每个独立程序进程的声音输出。(或 PID)显然,简单地记录我电脑的声音输出是行不通的,因为这会记录每个进程产生的所有重叠。此解决方案虽然前景看好,但依赖于使用程序的屏幕名称录制正确程序的声音输出——由于我正在运行同一程序的多个实例,因此这对我来说不起作用。有什么建议可以解决这个问题吗?
答案1
假设您正在使用 Pulseaudio(所有现代发行版都默认使用):
根据需要创建尽可能多的空接收器(虚拟声音输出),如下所述这里。如果您需要监控每个的声音输出,也可以使用环回到您的物理声音输出,如链接中所述。
然后使用pavucontrol
将所有程序实例的输出移动到不同的零接收器。使用您喜欢的任何记录程序,并从.monitor
零接收器的相关输出中进行记录。
当您的 Linux 程序(无论它是什么)连接到 Pulseaudio 时,您还可以选择设置各种信息位来识别程序或输出流。如果您可以这样做(例如使用命令行选项),将输出移动到空接收器将更容易。同样,如果您的程序允许,您可以在启动程序时指示程序连接到正确的空接收器。
答案2
使用Snapcast,每个实例 1 个 fifo。然后,您可以将一个用于播放的客户端和一个用于录制的客户端连接到要播放/录制的每个服务器。