Amazon Kinesis Video Streams service enable you to securely capture media stream from connected devices to AWS for storage, processing, and analytics.
What is Video Stream?
A video stream is a continuous flow of video data – a video-type of time-encoded data.
In time-encoded data, each record has special relation to its previous and next record – to create a time-series.
Following diagram shows how Kinesis Video Streams service works:
Image courtesy of AWS
Key Components of Kinesis Video Streams
Producer
- Any source that generates or puts data into a Kinesis Video Stream.
- Examples – security or dashboard camera, smartphone camera, RADAR
- Kinesis Video Streams Producer Libraries enable your connected devices to stream videos
Kinesis Video Stream
- A resource that enables transporting video data, optionally store it, and make it available for consumption in real-time and on batch / ad-hoc basis
- The stream can carry audio, video, and similar time-encoded data streams.
Consumer
- Any application that receives data from a Kinesis Video Stream – to view, process, or analyze it.
- Kinesis Video Stream Parser Library enables consumers to get media from Kinesis Video Streams in a low-latency manner.
Following diagram shows a simplified view of Producers, Media Streams, and Consumers
Image courtesy of AWS
The media stream is transported in chunks, with each chunk consisting of:
- A copy of the media metadata
- A fragment – a self-contained sequence of media frames. Each fragment is independent of the other fragments.
- Kinesis Video Streams-specific metadata (such as fragment number, producer-side and server-side time stamps)
Following diagram shows flow of chunks:
Image courtesy of AWS
Key Points
- Kinesis Video Streams is a fully managed service. It automatically provisions and elastically scales all the infrastructure needed to ingest streaming video data.
- The service encrypts, stores, and indexes the video data.
- You can playback video for live or on-demand viewing.
- You can integrate other services like Amazon Rekognition Video, and other Machine Learning libraries (such as MxNet, TensorFlow, and OpenCV) for video analytics.
- Kinesis Video Streams also support WebRTC – an open-source project.
- The service supports SDKs (in C++ and Java) to securely stream data from devices.
- You can view a Kinesis Video Stream using any of the following methods:
- GetMedia API – to get real-time data in low-latency
- HTTP Live Streaming (HLS) – an industry standard media streaming communication protocol
- MPEG-DASH (Dynamic Adaptive Streaming over HTTP) – an adaptive bitrate streaming protocol
- GetClip API – to download a clip
- Security – Server-side encryption feature allows encryption of data before it’s at rest by using KMS CMK.
- Data is encrypted before it is written to Kinesis Video Streams storage layer, and is decrypted after it is retrieved from storage.
- WebRTC – an open source technology for enabling real-time communication (RTC) across browsers and mobile applications via simple APIs.
- Signaling Channel allows applications to establish peer-to-peer connectivity by exchanging metadata in signaling messages
- TURN streaming allows relaying media via the cloud when applications are unable to connect to each other directly for peer-to-peer streaming
Pricing
Kinesis Video Streams is billed for following components:
- Data ingested into Kinesis Video Streams – per GB
- Data consumed from Kinesis Video Streams – per GB
- Data consumed from Kinesis Video Streams using HLS – per GB
- Data stored in Kinesis Video Streams – per GB per Month
Optional:
- WebRTC – if you use WebRTC capabilities it’s charged based on what all features you turn on:
- Active signaling channels – per channel per month
- Signaling messages – per million messages
- TURN Streaming minutes – per thousand minutes
External Resources