Monday, August 8, 2022
HomeIoTConstructing machine studying pipelines with Amazon Kinesis Video Streams

Constructing machine studying pipelines with Amazon Kinesis Video Streams


Amazon Kinesis Video Streams (KVS) makes it simple to securely stream video from related gadgets to AWS for analytics, machine studying (ML), playback, and different processing. KVS mechanically provisions and elastically scales all of the infrastructure wanted to ingest streaming video information from hundreds of thousands of gadgets. It durably shops, encrypts, and indexes video information in your streams, and permits you to entry your information by way of easy-to-use APIs. KVS lets you play again video for stay and on-demand viewing, and rapidly construct functions that benefit from pc imaginative and prescient and video analytics. On Could 4th, 2022, KVS introduced new options that makes it simpler to construct scalable machine studying pipelines to research video information and ship actionable insights to your clients. This weblog publish will stroll you thru the steps of establishing the required parts that may allow you to transform your video information saved in KVS into picture codecs appropriate for ML processing.


As we speak, clients need to add ML capabilities to their video streams to resolve their enterprise challenges. These challenges vary from detecting individuals or pets, to area particular challenges equivalent to figuring out defects in manufacturing. A typical requirement on this course of is changing video into picture codecs that may be delivered to ML pipelines. Previous to the launch of the picture era function, clients who needed to research their video saved in KVS wanted to construct, function, and scale compute assets to transcode video into picture codecs equivalent to JPEG and PNG. AWS provides many providers to allow clients to construct this resolution on their very own, nevertheless, constructing it from scratch would require many weeks of effort that finally wouldn’t add any differentiation to your product.

KVS now solves this drawback by providing three key options:

  1. Managed supply of pictures to Amazon S3
  2. On Demand Picture Era API
  3. Supply of stream occasions to an Amazon Easy Notification Service queue

This weblog publish will deal with the Managed supply of pictures to Amazon S3. Please discuss with the API documentation web page for extra details about the opposite options accessible.

Answer Overview

Notice: Implementing this resolution will incur expenses to your AWS invoice. Please seek the advice of the pricing web page for detailed info on pricing.

There are 3 parts concerned in constructing this resolution:

The Amazon S3 Service

The Amazon S3 service shops the generated pictures together with metadata together with timestamps and the related KVS fragment ID. The fragment ID can be utilized to acquire the unique video information used to generate the picture.

KVS C++ Producer SDK

The KVS C++ Producer SDK is an open-source SDK accessible on Github. At a high-level, the aim of the SDK is to phase video information into fragments and ship the fragments to the KVS service the place they’re time listed and saved. The Producer SDK gives a way named putEventMetadata that provides a tag to fragments. This tag is used to tell the KVS service to mechanically generate pictures.  The pattern utility offered by the SDK will invoke this methodology mechanically to check the picture era options of the service. Notice: KVS provides Producer SDKs in Java and C; these SDKs additionally provide this tagging methodology.

The KVS service

The KVS service time indexes, and shops the video for a customer-defined retention interval. Every digicam in KVS is represented as a singular “stream.” The picture era function of the KVS service should be configured on a per-stream foundation. This configuration consists of the picture output format (JPEG, PNG), sampling interval, picture high quality, and the vacation spot Amazon S3 bucket.

The next steps will information you thru the setup of every element. Let’s get began!

Constructing the Answer

Create an Amazon S3 Bucket

The KVS picture era function requires an Amazon S3 bucket to be specified as a part of the picture era configuration. The Amazon S3 bucket should be created in the identical AWS area that you’ll use the KVS service. The instance under specifies a bucket in us-east-1

aws s3 mb s3://sample-bucket-name --region us-east-1

Checkout and compile the KVS C++ Producer SDK

Notice: This weblog publish makes use of the Kinesis Video Streams C++ Producer SDK together with a Raspberry Pi to reveal picture era with an actual machine. It’s potential to compile the pattern functions included with the KVS C++ Producer SDK on Mac, Home windows, and Linux. Please discuss with the FAQ part of the readme on Github for directions on constructing for these platforms.

This course of was examined on a Raspberry Pi 3 Mannequin B Plus Rev 1.3 utilizing the Raspberry Pi Digital camera V2.1. The Pi was imaged with Raspberry Pi OS “bullseye” utilizing the picture 2022-01-28-raspios-bullseye-arhmf-lite.img. On the time of writing, it’s required to allow Legacy Digital camera help in raspi-config to ensure that the pattern functions to entry the digicam module.

1.   Set up the required dependencies

sudo apt-get set up pkg-config cmake m4 git
sudo apt-get set up libssl-dev libcurl4-openssl-dev liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools

2.    Clone the KVS C++ Producer SDK model 3.3.0

git clone —department v3.3.0

3.    Create the construct listing

mkdir -p amazon-kinesis-video-streams-producer-sdk-cpp/construct
cd amazon-kinesis-video-streams-producer-sdk-cpp/construct

4.    Construct the SDK and pattern functions


Get hold of IAM credentials for the pattern utility

After constructing the SDK, the binary kvs_gstreamer_sample must be within the construct listing.  This utility requires IAM credentials with a purpose to entry the KVS APIs. The permissions for the credentials ought to enable the next actions:








After acquiring the permissions, you should export them previous to executing the kvs_gstreamer_sample.  An instance is offered within the following part:

export AWS_ACCESS_KEY_ID=<your entry key id> 
export AWS_SECRET_ACCESS_KEY=<your secret entry key> 
export AWS_DEFAULT_REGION=<your area>

Configuring the KVS Service

Configuring the KVS service to allow the picture era function requires 3 steps.

1.    Create a KVS stream within the desired AWS area.

aws kinesisvideo create-stream --stream-name <stream identify> 
--data-retention-in-hours 12 --region us-east-1

This instance command creates a stream with an information retention of 12 hours.  Information will mechanically be deleted after 12 hours. The picture era function requires information retention to be better than 0. Presently, 1 hour is the minimal configurable retention interval.

2.    Edit the next JSON with the StreamName, DestinationRegion, and Amazon S3 Bucket identify. For extra info on the opposite configuration gadgets, please seek the advice of the KVS documentation web page. Save this configuration utilizing the filename update-image-generation-input.json.

	"StreamName": "<stream identify>",
	"ImageGenerationConfiguration": {
		"Standing": "ENABLED",
		"DestinationConfig": {
			"DestinationRegion": "<area identify>",
			"Uri": "s3://<bucket identify>"
		"SamplingInterval": 3000,
		"ImageSelectorType": "PRODUCER_TIMESTAMP",
		"Format": "JPEG",
		"FormatConfig": {
			"JPEGQuality": "80"
		"WidthPixels": 320,
		"HeightPixels": 240

3.    Use the AWS CLI to configure the picture era function within the KVS service. If you happen to change the previous json file, merely name this AWS CLI command once more.

aws kinesisvideo update-image-generation-configuration 
--cli-input-json file://update-image-generation-input.json

Producing Photos

At this level you need to have created an Amazon S3 bucket, compiled the KVS C++ Producer SDK pattern utility, obtained the suitable credentials, exported them in your setting, and configured the KVS service to allow picture era.

Execute the pattern and move the identify of the stream created in a previous part as the primary argument.

./kvs_gstreamer_sample <stream identify>

Open the Amazon S3 console and you need to see pictures being generated in your required S3 bucket.

A screenshot of the AWS S3 Console displaying a list of images that are stored in an S3 bucket.


On this weblog publish, I demonstrated how you can use the picture era function of Kinesis Video Streams to construct a pipeline you need to use for machine studying. Now that Amazon S3 is storing your pictures, you need to use Amazon S3 Occasion Notifications to set off your personal ML pipeline or set off evaluation by Amazon Rekognition. I encourage you to check out this new function, and keep in mind to delete the assets if you end up completed. Joyful constructing!



Please enter your comment!
Please enter your name here

Most Popular