Rapid is able to fully manage live streams remotely from the vehicle including the ability to start and stop streams on a camera-by-camera basis. We utilize Wowza as a backend to stream our local camera streams from the device, once the service has received our live stream we’re able to display them anywhere an embed link will fit. Our devices are fitted with 4 to 8 cameras and Rapid allows granular streaming of any individual stream at a time or all of them simultaneously and through some clever technical changes, we are able to support that even with relatively low-level hardware and limited mobile bandwidth.
Event-based Video Management
Rapid constantly records video from all cameras on the system. The video is stored on the device until it reaches a specified % of available disk space then it begins replacing the oldest videos. Accessing those videos is easy via event-based architecture. Rapid is able to upload videos within a period around any selected time making it easy to get the important information needed for FNOL and insurance claims. Rapid lets the customer request videos from any time and if there are videos available they will be uploaded for later access and long term storage.
As always, when dealing with devices that live in rugged and mobile environments, there can be a lot of technical hurdles. For example, we use the open-source video and image management software FFmpeg to handle our live streams and local video recording. Our setup uses IP cameras with at least 2 channels, one for 1080p HD video and one for 480p SD video. Live streams are available using 480p 10fps and local video is recorded at 1080p 15fps. These technical requirements emerged after a lot of headaches and testing of how to provide a level of service which matches what our customers expect without pushing the hardware so hard that it is no longer viable to survive for long periods of time in vehicles.
During the process of developing Rapid, we ran into many technical problems with handling multiple live streams simultaneously and recording HD video from multiple cameras. The CPUs we utilize just couldn’t handle it. Fortunately, we found a few ways around the issues we faced. Initially, we were having the device’s CPU handle transcoding the video as well as downscaling video to a lower resolution in order to keep the latency low and reduce the bandwidth needed to support all streams simultaneously as well as the other connected features Rapid provides. Downscaling live video streams takes a huge amount of processing power, sometimes one stream would take over 100% of the CPUs available resources. To keep this down we switched to utilizing Wowza’s transcoding as well as utilizing cameras that offer two channels for a lower resolution that we don’t need to create ourselves from an HD stream. On Top of this, there are further optimizations we could make, we could splice all of the video streams together into one split stream video that could be uploaded, meaning we could use only one thread on the CPU instead of one thread for each live stream, thus reducing overall CPU usage.