I've done some Googling on this subject, and looked around on Stack Exchange, but I haven't yet found a question canonically similar to mine. If this is the wrong section of Stack Exchange to ask this question, please let me know and I'll happily move it.
I have a desktop machine which serves up remote VNC displays in addition to its local X11 display.
Applications displayed via VNC (and the VNC server itself) execute with a different user ID to processes running locally.
I'm trying to achieve the following:
All processes running under the non-local account are presented with completely synthetic mic and speaker devices, backed by a PulseAudio loopback that feeds the speaker output into the mic input
Chrome is successfully fooled by PulseAudio and believes the loopback is a real microphone ;)
Remote processes cannot control the physical audio hardware (to prevent accidents)
The PA server doesn't interfere with the other accounts on the system, or touch the physical hardware (also to prevent accidents)
The configuration/settings/state that makes this possible needs to be automatically reinitialized when the system reboots (very important)
(noncritical/optional) A low-latency realtime broadcasting solution allows me to connect to PulseAudio (or some app listening to the loopback) and listen in
I've found that PA can be run under a specific user account, more or less isolating its services to that account, and I've used this with some success, although I'm not sure if there's any specific configuration I should be applying other than firing up
pulseaudio from my own account.
The main points I'm stuck on are a) convincing Chrome that PA is a real mic, b) ensuring I don't touch the system audio hardware, and c) where to store the configuration so it'll be heeded upon restart.
This is on FreeBSD, if that changes anything.