Case Study - BiTEA Radio Streamer Service

Requirement
To create an audio streaming solution to take up to 8 channels per location across multiple locations and stream the audio to hundreds or thousands of users using minimum bandwidth with only a standard internet browser. Must work on desktop, tablet and mobile devices.
Solution
A .Net project to process the audio arriving via an 8 channel audio digitiser using USB connectivity. The audio is processed to look for silent passages between radio transmissions to conserve bandwidth and storage. The resultant audio is compressed and passed to a Shared Memory circular buffer where it is accessed from a .Net core backend application. Signal R is used to communicate the front end requests to the back end hub.
Access to the channels can be customised from an admin dashboard and integrated with Active Directory to ensure only authorised usage on the internal network.
I worked in conjunction with a local company, BiTEA, to provide the complete solution to Dorset police. I liaised directly with the Dorset Police team including site visits and remote video calls to ensure timely delivery and user acceptance.

Technologies
The solution was hosted using an onprem Dell server with Windows 2016 per location processing audio from a custom audio digitiser. All projects were built with Visual Studio 2019, C#. Parameters, logging, configuration and usage stored in SQL Server for the main location. Additional locations could be added to boost the number of channels and coverage. Communication between the servers was accomplished using a restful api interface so they all report in and access a single database.
Authorised users could access the front end interface via a simple webpage with a play button per channel.
Front end user screen

Admin channel setup

Admin user setup

Challenges
There were several challenges:
- 1Access to the client Public Safety network can only be done locally or via secure citrix session with monitoring and restricted access. This required that the solution worked straight out of the box and could integrate with exisiting systems and security requirements without causing the local IT ops guys issues or sleepless nights.
- 2Managing access for hundreds or thousands of users is a challenge for any IT department. We had to ensure that we could use the AD groups in a variety of novel ways to keep maintenance to a minimum and flexibility to a maximum. This resulted in a few post release tweaks to keep it simple from the admin perspective.
- 3Load testing. How do you successfuly and meaningfully test several hundred users all wanting to listen to the same audio at the same time? Well we used a load test tool to load test and monitor memory, connections, response times and performance to ensure as best we could that is was stable, no memory leaks and responsive. That had to be done in the workshop before delivery. The client has just upgraded their client licence so they are adding more and more clients as it's popularity grows - a good sign I think.
Skills Required
Skills & Tools
C#
All projects in the solution used C#. Mixture of .Net 4.7 and .Net Core 2 project types. Visual Studio 2019 integrated with Git
SQL Server
Simple 9 table design in SQL server 2016. Accessed via Dapper db layer with custom wrappers.
HTML & JScript
Basic HTML used for layout. Responsive and mobile friendly. JScript used in the front end to access audio streaming data, maintain Q and interface with Signal R hubs in backend