Hello!
We have a project that requires reliable broadcast of live event audio to multiple locations that are some distance from the event location, but still on the same physical campus. It isn't practical to run audio cables to the remote locations, but there are fiber cable runs in place that can be leveraged. Latency isn't a concern. However, the reliability and fidelity of the audio feed is a grave concern.
We have set up two Raspberry Pi with Wolfson audio cards.
Both have the Wolfson image installed. We did an apt-get update to enable us to install other packages. However, we haven't done an upgrade (and thus haven't had to recompile the kernel with the Wolfson audio drivers).
The Broadcast Station (BS) takes audio from Line In via arecord, and pipes it to avconv and broadcasts RTP to a multicast IP.
The Player uses ffplay to read that RTP stream and sends it out Line out.
We should be able to introduce additional Players onto the network.
The BS and Player processes start via a shell script that will restart them if they crash. Player will keep trying to find a stream if BS isn't streaming or if BS stream goes away.
These Raspberry Pi aren't going to do anything else - their only objective is to provide an audio feed. In fact, they are going to reside on an isolated network.
We have just started testing. But so far, we are able to take away and reintroduce the audio source, BS and Player, and everything hums along.
In intent is to not have a component failure require us to touch any other component in order to recover. We want redundancy at each function - more on that below.
To do:
* Mount all but a filesystem that will be used for logs read only.
* Write init script so that BS and Player start at boot.
* Add monitoring and alerts. Need a way to validate that audio is actually streaming - a physical Red / Yellow / Green light to indicate health.
* Identify an enclosure for the Raspberry Pi + Wolfson setup.
* Explore active/standby or active/active pair scenarios for BS and each Player location.
* Disable any unneeded services. I've already disabled X.
* Explore central logging server so that problems can be analyzed and correlated more easily after the fact.
* Disable any unneeded processes with the intended result that audio performance be maximized.
We would appreciate any feedback you have on this project. If you've used a similar or altogether different approach to solve this problem, we would love to hear that too!
Thanks!




