I need to stream live video from a moving vehical with a connected camera and a possibly connected wifi.
Live High Resolution Video
Video will stream from the vehicle to be picked up by video consumers and processed as required. Examples of consumers are Live Video Display on our (Webapp), OpenCV for vision algoritms.
High Demand For Low Resolution
It turns out that computer vision alogrithms typically run quite a bit faster on lower resolution images, the additional information from these hi-res images can slow down the type of algorithms we are interested in by many factors.
Snapshots Anyone?
Snapshots, as it turns out have a role in some important use cases, for now, we will assume that snapshots are a requirement. Snapshots are available from a number of options: High resolution Photog quality images, there are quick images that are extracted from video as milestones, or artifacts.
As it turns out, our Raspberry Pi Camera can help us with this quite bit.
Video Consumers
Video Consumers are what I am calling the software modules that recieve the video for further processing of some kind. In some use cases we will have more than one consumer for a given Video group.
IP Multicast Video
My end goal is to multicast the different video streams to different IP multicast video streams. In this case each consumer simply joins that multicast video stream, and uses it as needed.
For example:
- Hires snap group 225.1.1.4 hires snapshot
- Hidef video group 225.1.1.1 streaming at 1024, 768
- Lodef video group 225.1.1.2 streaming at 640, 480
- lores snap group 225.1.1.3 lores snapshot
This allows both our Webapp with the live display and the Storage module to consume the live video stream and play it in real time for human consumption. The Storage module will, on the other hand store the video stream for future access.
Live Video and OpenCV
The lores video, will be consumed by the OpenCV module to run through one or more computer vision algoritms. The specific use case in play will determine which computer vision algorithms will be run.
Examples that may run at a given time:
- Object Dection for real time navigation
- Perception for navigation
- Facial recognition for security and survelience
- Scene change detection for property management and theft
Raspberry PiCamera and Video Ports
The Raspberry Pi camera, price wise is very cheap ($25 usd) is a cheap camera, yet is capable of producing high quality images. Even better, it is very programmable and is capable of producing filtered versions of the video it is producing.