Remote Video Streaming and Management

Video Streaming

RAPID can 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’s video streaming service to stream our local camera feeds from the device to each user interface. Once the Wowza 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 configurable percentage of available disk space. Once this percentage is exceeded the platform begins replacing the oldest videos using a first in first out approach. 
Accessing the recorded videos is easy via RAPID’s event-based architecture. RAPID is able to upload videos of a given duration from any selected time, making it easy to get important information needed for use cases such as 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.

Optimizing Video Configuration & Architecture

As always, when dealing with devices that live in rugged and mobile environments, there can be a lot of technical hurdles. Generally, low CPU power and network bandwidth are a few examples. For instance, one of our deployments uses IP cameras with 2 channels, one for 1080p HD video and one for 480p SD video. We use the 480p at 10 frames per second (fps) for on-demand live streams while recording the 1080p x 15fps stream locally for historic video access. Both of these streams need to be managed using FFmpeg or some other stream manager. 

During the process of developing your application, you may run into some issues while handling local video recording as well as remote video streaming. These problems are only exacerbated by the less powerful hardware these systems normally need to run on. It is possible that the hardware you’re using cannot handle 4-8 60fps HD video streams running at once. Luckily there are a few optimizations you can easily make to solve this problem.
Consider what the CPU has to do to run the streams you want; for a single stream if you are recording data at 1080p 60fps then every second your CPU has to handle reading the frame, transcoding it and uploading 60 of those frames, it’s a lot for the small CPUs used in fleet monitoring installations. This will become a headache very quickly as you attempt to run multiple streams at once. Your CPU has to not only manage to collect video data as well as all the other sensor data being produced but also manage incoming and outgoing network connections, this puts even more strain on your CPU. Below are a few tables with a rough breakdown of our benchmarking on different CPUs with a few different stream configurations including using raw video from the cameras and examples of downscaling the resolution before streaming.

480p 10fps downscaling from 1080p

CPU# of concurrent streams supportedAvg. CPU Usage per thread (depending on load from other applications)
i7-8700T 2.4GHz 6 Core4~25%
i5-4200U Dual Core 1.6GHz150-80%
Celeron J3160 Quad Core 1.6GHz~170-110%


480p 10fps no downscaling

CPU# of concurrent streams supportedAvg. CPU Usage per thread (depending on load from other applications)
i7-8700T 2.4GHz 6 Core8~5%
i5-4200U Dual Core 1.6GHz410-15%
Celeron J3160 Quad Core 1.6GHz415-20%


1080p 10fps raw 1008p quality direct from camera

CPU# of concurrent streams supportedAvg. CPU Usage per thread (depending on load from other applications)
i7-8700T 2.4GHz 6 Core4~20%
i5-4200U Dual Core 1.6GHz~2~40-60%
Celeron J3160 Quad Core 1.6GHz1~50-70%


You also need to consider what it takes to support all of these data-rich environments via a 4G network that can be spotty. This is another opportunity to utilize the low-resolution camera feed provided by dual-channel IP cameras. This allowed us to stop the CPU from having to manage multiple 1080p 60fps streams. Now we could use the lower resolution and fps stream and submit it directly to our third-party streaming service without doing any operations such as downscaling on it, this reduced CPU load by about 60% per stream, freeing up a lot of power for multiple simultaneous live streams.

Fleet Management Framework

Rapidly build better fleet & asset apps, with less code.

Blog Author:

  • Tyler Wiersing
  • Software Engineer
  • tyler.wiersing@esg-usa.com

Subscribe

Sign up for our Newsletter and stay up to date on the latest at ESG USA.  New blog posts, newsletters, case studies, and more.