Umm olhando para a documentação do pulseaudio.
man pulseaudio
Temos as seguintes variáveis de ambiente
$PULSE_SERVER: the server string specifying the server to connect to when a client asks for a sound server connection and doesn't explicitly ask for a specific
server. The server string is a list of server addresses separated by whitespace which are tried in turn. A server address consists of an optional address type speci‐
fier (unix:, tcp:, tcp4:, tcp6:), followed by a path or host address. A host address may include an optional port number. A server address may be prefixed by a string
enclosed in {}. In this case the following server address is ignored unless the prefix string equals the local hostname or the machine id (/etc/machine-id).
$PULSE_SINK: the symbolic name of the sink to connect to when a client creates a playback stream and doesn't explicitly ask for a specific sink.
Isso deve permitir que você complete a substituição do coletor pulseaudio, e se isso não for suficiente, execute nosso próprio servidor pulseaudio de uso único.
Referindo-se a esta página ( link ), nós descobrimos sobre o parec
/ pacat
comando (são aliases) que podem gravar e gravar em coletores e fluxos.
Juntando isso, temos o seguinte wrapper (que eu não executei de verdade - embora eu tenha conseguido esse método funcionar em uma base ad-hoc)
sink_name="sink-$(date +%s)"
pacat $sink_name.monitor
parec -d steam.monitor | oggenc -b 192 -o /tmp/steam.ogg --raw - &
pid=$!
PULSE_SINK=$sink_name "$@"
kill $pid