Kinesis Video Streams Overview
Amazon Kinesis Video Streams is a specialized offering within the Kinesis family for handling streaming media and time-series data.
Kinesis Video Streams is an AWS service for streaming live video from devices to the AWS cloud. It also supports streaming non-video time-serialized data, enabling further processing like analytics, machine learning, and playback.
Kinesis video streams are fundamentally made up of fragments. Each fragment is a self-contained sequence of video frames.
As a Kinesis service, Kinesis Video Streams involves producers continually pushing data to the stream and consumers processing data in real time. A stream consists of shards, with each shard being a uniquely identified continuous sequence of data records. Data records have a sequence number, a partition key, and a data blob, which can be up to 1MB.
Technical Specs: Data blob up to 1MB
Kinesis Video Streams Key Features and Technical Details
Kinesis Video Streams provides robust capabilities for data ingestion, storage, retrieval, and ensures data security and scalability.
Details on how data is managed within Kinesis Video Streams, from writing to storage and security.
Data Ingestion (Writing Fragments)
Fragments are written to the video stream using the `PutMedia` command. The Kinesis service automatically assigns a fragment number and timestamps to these fragments for sequential organization within the video stream.
write_command
PutMedia
metadata_assignment
Fragment Number, Timestamps
Use Cases:
- Streaming live video from devices
- Streaming non-video time-serialized data
Data Retrieval (Reading Fragments)
Fragments can be read from the stream using a `GetMedia` command, specifying a `StartSelector` location. The command returns the requested fragments along with their associated timing information.
read_command
GetMedia
input_parameter
StartSelector location
output_data
fragments and timing information
Use Cases:
- Playback
- Analytics processing
- Machine learning inference
Data Storage and Security
Kinesis Video Streams stores, encrypts, and indexes the video data within your streams. Data encryption is enabled at rest.
data_state
encrypted at rest
data_management
stores, encrypts, indexes
Supported Video Format
Kinesis Video Streams has a limitation: it only supports the MKV (Matroska Video) video format.
supported_format
MKV video format only
Scalability
The service is designed to scale elastically to handle data from millions of devices, accommodating large-scale video streaming needs.
scaling_capability
elastically to millions of devices
Kinesis Video Streams Use Cases and Examples
Kinesis Video Streams is applied in various scenarios requiring real-time video and time-series data ingestion and processing.
A perfect example is smart home devices like Amazon Ring, where internal and external cameras stream video content. This content can then be used with machine learning and analytics to detect people or objects.
In smart city initiatives, CCTV cameras can leverage Kinesis Video Streams to monitor traffic at intersections and other public spaces.
For industrial automation, Kinesis Video Streams can ingest time-encoded data from sensors like LIDAR and RADAR signals, as well as temperature sensors, for real-time monitoring and analysis.
It enables streaming live video from a wide range of devices including smartphones, security cameras, webcams, and cameras embedded in cars and drones, to the AWS Cloud.
Kinesis Video Streams Development Tools and Libraries
AWS provides various client libraries and SDK components to facilitate interaction with Kinesis Video Streams for both producers and consumers.
Tools available for building applications that integrate with Kinesis Video Streams.
Kinesis Video Streams Producer Client (Java & Android)
A producer client specifically for Java and Android applications. The Kinesis Video Streams Producer Library is included within this client.
supported_platforms
Java, Android
Use Cases:
- Developing producer applications for mobile and Java environments
Kinesis Video Streams C++ Producer Library
A dedicated producer library for applications developed in C++.
Use Cases:
- Developing high-performance producer applications in C++
Kinesis Video Stream Parser Library
A library designed for reading MKV data specifically from Kinesis Video Streams.
functionality
reading MKV data
Use Cases:
- Parsing MKV video streams
AWS SDKs KinesisVideoMedia Class
The AWS Software Development Kits include a KinesisVideoMedia class. This class can be used for reading MKV data from a Kinesis video stream (specifically for `GetMedia` operations), but it cannot be used for putting media into a stream.
functionality
reading MKV data
operations_supported
GetMedia only
limitation
cannot be used for putting media
Use Cases:
- Consuming MKV video streams via SDKs