使用 SoX 播放声音时如何指定 PuseAudio "application name"?

How do I specify the PuseAudio "application name" when playing a sound with SoX?

我想 运行 来自脚本的命令,例如 play mysound.mp3,并让 PulseAudio 记住此类调用的音量。

我确实希望该卷应用于我在我的系统上进行的每次 play 调用,只是这些特殊调用。

在 PulseAudio 中,您可以为每个应用程序设置声音(又名 "sink input")。但是我如何 运行 play 使用自定义 application/sink-input 名称,以便与其他调用区分开来?

我正在想象 play --appname foo mysound.mp3,但我在 SoX 中没有找到这样做的选项。

现在,他们在pactl list sink-inpuits中都是这样显示的:

Sink Input #4023
        Driver: protocol-native.c
        Owner Module: 8
        Client: 2943
        Sink: 2
        Sample Specification: s32le 2ch 44100Hz
        Channel Map: front-left,front-right
        Format: pcm, format.sample_format = "\"s32le\""  format.rate = "44100"  format.channels = "2"  format.channel_map = "\"fr
ont-left,front-right\""
        Corked: no
        Mute: no
        Volume: front-left: 42325 /  65% / -11.39 dB,   front-right: 42325 /  65% / -11.39 dB
                balance 0.00
        Buffer Latency: 130521 usec
        Sink Latency: 100817 usec
        Resample method: copy
        Properties:
                media.name = "playback"
                application.name = "SoX"
                native-protocol.peer = "UNIX socket client"
                native-protocol.version = "32"
                application.process.id = "4707"
                application.process.user = "myname"
                application.process.host = "myhost"
                application.process.binary = "sox"
                application.language = "C"
                window.x11.display = ":0.0"
                application.process.machine_id = "fa117ee892c54109a928f2c38093b473"
                application.process.session_id = "1"
                module-stream-restore.id = "sink-input-by-application-name:SoX"

所以我想象能够设置 application.name 字段或类似字段。

有人知道怎么做吗?

看来答案是"no, you can't do that, currently"。

来自 sox 用户列表中的电子邮件:

There is currently no way to set the name. It is hard-coded here: https://sourceforge.net/p/sox/code/ci/master/tree/src/pulseaudio.c#l65