Skip to content

Commit

Permalink
v0.1.8 release (#216)
Browse files Browse the repository at this point in the history
* allow non-email usernames

* Cache the mediaconvert endpoint in order to avoid getting throttled on the DescribeEndpoints API.

* allow input text to be empty

* Add support for new languages in AWS Translate and Transcribe

* Add support for new languages in AWS Translate and Transcribe

* V0.1.6 bug fixes (#140)

* allow non-email usernames

* Cache the mediaconvert endpoint in order to avoid getting throttled on the DescribeEndpoints API.

* allow input text to be empty

* Add support for new languages in AWS Translate and Transcribe

* Add support for new languages in AWS Translate and Transcribe

* fix python 3.6 build errors and add support for python 3.8

* Fix markdown anchor for glossary

* add support to delete an asset from elasticsearch (#142)

* fix template validation error that happens when DeployAnalyticsPipeline=false but DeployDemoSite=true

* Mitigate XSS threats (#147)

* add subresource integrity (SRI) checksums so browsers can verify that the files they fetch are delivered without unexpected manipulation.

* move runtime configs from .env to /public/runtimeConfig.json

* webapp code cleanup

* webapp code cleanup

* Updated tests (#149)

This PR focuses on scoping IAM policies with least privalege. Along the way we have also improved the organization of build scripts and unit tests so they're easier to use.

Summary:
* Least privalege concerns were achieved by updating Cloud Formation templates to resolve issues reported by cfn_nag and viperlight

* We used to have many run_test.sh scripts to run unit tests. These have been consolidated into one script, tests/run_tests.sh, which you can run like this:
`echo "$REGION \n $MIE_STACK_NAME \n $MIE_USERNAME \n $MIE_PASSWORD" | ./tests/run_tests.sh`

Details:
* a pass at refactoring iam roles/policies

* refactor tests to use media in dataplane bucket, big test overhaul, small IAM changes for dataplane

* do not assume the user has put the region at the end of the bucket name

* Remove sam_translate from dataplaneapi and workflowapi.
Organize the code and output so it's easier to follow.
Access MIE Helper package from source/lib/ instead of /lib.

* Apply bash syntax optimizations

* Access MIE Helper package from source/lib/ instead of /lib.

* update lib path to mie helper

* remove redundant doc

* add stream encryption to fix cfn_nag warning

* remove sam-translate.py files

* remove old /webapp and /lib

* remove old /webapp and /lib

* rename license file per AWS guidelines

* rename notice file per AWS guidelines

* output misc debug info

* move tests/ into source/

Co-authored-by: Ian Downard <[email protected]>

* Add mediainfo and transcode operators (#150)

Resolved Issues:

#32
#138
#152
#151
#128
#153
#154
#156
#157

Summary of changes:

1. added proxy encode to mediaconvert job that generates thumbnails
2. added MediaInfo libraries to MIE lambda layer. Also published these layers in the Technical 
3. Marketing public S3 buckets.
4. added MediaInfo operator to MIE Complete Workflow and show mediainfo data in webui
5. major organization improvements in the build script
6. fixed minor webpack warnings
7. Added support for videos without spoken words
8. Added support for videos without any audio tracks
9. Added security measures to prevent users from uploading invalid media files

Details:
* Add mediainfo operator
* Add MediaInfo library to MIE lambda layer
* avoid webpack warnings about package size
* fix compile-time jquery warning
* remove unused requirements file
* minor code cleanup
* add log statement so we're consistent with other components
* show mediainfo data in analysis page
* explain how to enable hot-reload in dev mode
* Explain how to validate data in elasticsearch.
* Explain how to read/write metadata from one operator to another via workflow output objects.
* skip comprehend operators when transcript is empty
* skip comprehend operators when transcript is empty
* skip transcribe if video is silent
* use proxy encoded video for Rekognition operators
* recognize more image file types when determining what to use for thumbnail
* use a consistent print statement for logging the incoming lambda event object
* Now that we're supporting media formats besides mp4 and jpg, use a generic image or video media type. We can't assume "video/mp4" or "image/jpg" anymore.
* Remind developers that workflow attributes must be non-empty strings.
* Add transcode to mediaconvert job. Use that for the proxy encode input to downstream operators.
* Move transcribe operation from mediaconvert operator to thumbnail operator. The thumbnail operator now superseeds the old mediaconvert operator. We've disable old mediaconvert operator. After testing, we can remove the old mediaconvert operator.
* Avoid drawing boxes outside the dimensions of the video player.
* Thumbnail operator needs a check-status function now that it includes transcode. This commit adds that check-status function to the build script.
* minor edit, just to reorder packages to improve readability
* Move thumbnail operator to prelim stage so all mediaconvert outputs are ready before analysis operators begin.
* avoid showing undefined mediainfo attributes
* use free tier for elasticsearch domain
* change header title to AWS Content Analysis
* validate file types before upload
* build layer for python 3.8 runtime
* explain how to validate that the layer includes certain libraries
* add PointInTimeRecoveryEnabled and HTTP (non-ssl) Deny rule to dataplane bucket
* add versioning to S3 bucket
* validate file type before upload and enable Mediainfo for image workflow
* consolidate the code for checking image types
* use webpack's default devServer https option
* support all caps filenames
* remove input media from upload/ after copying it to private/assets/[asset_id]/input/
* if input file is not a valid media file then remove it from S3
* Get mediaconvert endpoint from cache if available
* Specify thumbnail as the first mediaconvert job so the thumbnail images become available as soon as possible. This lessens the likelihood of seeing broken thumbnail images in the webui.
* Add Mediainfo to Image workflow and allow Mediainfo to delete files from S3.
* minor edit to remove unnecessary whitespace
* minor edit to fix a 'key not found' exception that occurred when testing an empty workflow execution request (e.g. POST {} payload to /api/workflow/execution)
* Add Mediainfo to image workflow
* minor remove errand comma
* add CloudFormation string functions so we can use (lower case) stack name for mie website bucket
* fix bug in error messages for invalid file types
* fix yaml syntax errors
* fix invalid table query when invoking a GET on $WORKFLOW_API_ENDPOINT/workflow/execution/status/Error
* fix "key not found" error that occurs running workflows that include transcribe but not mediainfo
* 1) Update workflow configs and 2) upload media prior to every workflow execution because dataplane now deletes the uploaded media after copying it to private/assets/.
* upload media prior to workflow execution because dataplane now deletes the uploaded media after copying it to private/assets/.
* 1) Update workflow configs and 2) upload media prior to every workflow execution because dataplane now deletes the uploaded media after copying it to private/assets/.
* cleanup comments
* Use app.current_request.raw_body.decode instead of app.current_request.json_body in order to work around a bug in Chalice whereby it returns None for json_body. Reference: https://stackoverflow.com/questions/52789943/cannot-access-the-request-json-body-when-using-chalice
* append a unique id to image files uploaded to s3 so there are no conflicts between multiple threads running this concurrency test
* Handle the HTTP 409 and 500 errors that happen when tests don't clean up properly.

* add cost information

* minor edits

* minor edits

* minor edits

* minor edits

* fix bug detection silent videos

* bump up the python version

* bump up the python version

* Rek detect text in video support (#158)

* rek text detection functionality

* bug fixes for player markers and readdition of accidentally deleted code for text detection

* fix string operation to determine file type

* get input video from ProxyEncode (#168)

* get input video from ProxyEncode

* add new region support for Rekognition (#163)

* allow users to upload videos with formats supported by mediaconvert (#169)

* get input video from ProxyEncode

* add new region support for Rekognition

* allow users to upload videos with formats supported by mediaconvert (#164)

* allow users to upload videos with formats supported by mediaconvert

* Allow users to upload webm files.

* fix bug with determining key to proxy encode mp4

* fix bug with determining key to proxy encode mp4 (#170)

* get input video from ProxyEncode

* add new region support for Rekognition

* allow users to upload videos with formats supported by mediaconvert

* Allow users to upload webm files.

* fix bug with determining key to proxy encode mp4

* Disable versioning on dataplane bucket (#171)

* Disable versioning on dataplane bucket because so that bucket can be removed more easily

* minor edit

* support for rerunning analysis on an existing asset (#175)

* support for rerunning analysis on an existing asset

* bug fix in webapp code

* fix formatting issues after merge and update status to be polled by wf id

* Add gitter chat info (#182)

* Bumps [jquery](https://github.com/jquery/jquery) from 1.12.4 to 3.4.1.
- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](jquery/[email protected])

* add gitter channel info

* Bumps [jquery](https://github.com/jquery/jquery) from 1.12.4 to 3.4.1. (#181)

- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](jquery/[email protected])

* Fix mediainfo (#180)

* remove VersioningConfiguration on S3 bucket since that makes it much harder for AWS account owners to delete
 the bucket.

* MediaInfo version 19.09 works but 20.03 does not. Use to 19.09 instead of latest.

* update one-click deploy links for release version 0.1.7

* testing buildspec

* version bump python version in buildspec

* remove unneeded quotes from build command

* Change distribution bucket instructions (#189)

Previously, the instruction was to created a distribution bucket named $DIST_OUTPUT_BUCKET-$REGION, but now in `deployment/build-s3-dist.sh` it's expected to be just $DIST_OUTPUT_BUCKET.

* Init of build pipeline (#193)

* working build pipeline

* fix testing spec filename

* persist build user

* Add logo (#194)

The clapperboard, representing *multimedia*, is centered inside a crosshair, representing *under extreme scrutiny*. This symbol is available from [nounproject](https://thenounproject.com/icon/1815092/). The font is Engineering Plot, https://www.dafont.com/engineering-plot.font which conveys the scaffolding nature of MIE.

* Update README.md (#197)

Improve instructions in the README:
* fix references to old MediaInsightsEngine repository name 
* use docker port forwarding to enable developers to see the result of npm run serve on their local machine

* Update media-insights-stack.yaml (#198)

fix PolicyName typo

* Prevent duplication of this.entities (#201)

If user switches from Entities to KeyPhrases tab and back, this.entities doubles in size. 
To prevent this, we can employ the same method of clearing memory that is used in ComprehendKeyPhrases

* Avoid linking to step functions for queued workflows because that link will break since the step function doesn't exist yet. (#210)

* Added Cognito Identity Pool ID to the output of CF (#211)

Add IDENTITY_POOL_ID to stack outputs in order to make it easier for users to find the values they will need for the `webapp/public/runtimeConfig.json` file when trying to run the webapp locally on their laptop.

* change logo. The MIE team agreed to use the 3d black and white logo w… (#200)

* change logo. The MIE team agreed to use the 3d black and white logo without a slogan.

* move logo files to doc/images

* Update gui readme (#202)

* add instructions for creating new accounts for the GUI and remove out-of-date instructions for running the webapp.

* Add quantitative cost info

* fix type-o

* add cursor usage info

* document limitations

* update 3rd party licenses to include every package listed in package.json

* remove local dist and package files after build

* remove license file form MIE lambda helper. This was left over from when the lambda helper used to be in its own repo

* Remove reference to old MediaInsightsEngineLambdaHelper repo. It used to be managed in a different repo but now it's part of this repo.

* Video segment detection / v0.1.8 one click links (#215)

* working segment detection v1

* working segment detection w/ api changes

* added end scene pause functionality and pagination to scene detection tables

* fix webapp deploy bug

* reformat readme for simpler installation

* updated readme with instructions for installtion

* remove values from runtimeConfig and set sriplugin to true

Co-authored-by: ianwow <[email protected]>
Co-authored-by: Ian Downard <[email protected]>
Co-authored-by: brand161 <[email protected]>
Co-authored-by: Tulio Casagrande <[email protected]>
Co-authored-by: Anton <[email protected]>
  • Loading branch information
6 people authored Jun 22, 2020
1 parent 3baf7d7 commit a663d95
Show file tree
Hide file tree
Showing 39 changed files with 8,182 additions and 492 deletions.
8 changes: 6 additions & 2 deletions IMPLEMENTATION_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,9 @@ Use the following shell commands to configure the build environment parameters:
VERSION=[enter an arbitrary version name here]
REGION=[enter the name of the region in which you would like to build MIE]

Create an S3 bucket for the MIE build files named `$DIST_OUTPUT_BUCKET-$REGION` using the input you gave above.
Create an S3 bucket for the MIE build files named `$DIST_OUTPUT_BUCKET`, for instance using AWS CLI:

aws s3 mb s3://$DIST_OUTPUT_BUCKET

Run the following build command in your terminal from the `deployment` directory:

Expand Down Expand Up @@ -515,7 +517,9 @@ Now you can use Kibana to validate that your operator's data is present in Elast
`GET /metadata/{asset_id}`
Returns: All asset metadata
Returns: All asset metadata. If the result provides a cursor then you can get the next page by specifying the cursor like this:
`GET /metadata/{asset_id}?cursor={cursor}`
* Add operation metadata for an asset:
Expand Down
28 changes: 23 additions & 5 deletions NOTICE.txt
Original file line number Diff line number Diff line change
@@ -1,20 +1,38 @@
Media Insights Engine

Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.

**********************
THIRD PARTY COMPONENTS
**********************
This software includes third party software subject to the following copyrights:

aws-amplify under the Apache License Version 2.0
aws-amplify-vue under the Apache License Version 2.0
axios under the Massachusetts Institute of Technology (MIT) license
bad-words under the Massachusetts Institute of Technology (MIT) license
chart.js under the Massachusetts Institute of Technology (MIT) license
core.js under the Massachusetts Institute of Technology (MIT) license
dropzone.js under the Massachusetts Institute of Technology (MIT) license
jquery under the Massachusetts Institute of Technology (MIT) license
jwt-decode under the Massachusetts Institute of Technology (MIT) license
lodash under the Massachusetts Institute of Technology (MIT) license
register-service-worker under the Massachusetts Institute of Technology (MIT) license
video.js under the Apache License Version 2.0
videojs-flash under the Apache License Version 2.0
videojs-hotkeys under the Apache License Version 2.0
videojs-markers under the Apache License Version 2.0
vue.js under the Massachusetts Institute of Technology (MIT) license
vuex under the Massachusetts Institute of Technology (MIT) license
vue-video-player under the Massachusetts Institute of Technology (MIT) license
vue-highlightjs under the Massachusetts Institute of Technology (MIT) license
vue-router under the Massachusetts Institute of Technology (MIT) license
vue-video-player under the Massachusetts Institute of Technology (MIT) license
vuex under the Massachusetts Institute of Technology (MIT) license
vuex-persistedstate under the Massachusetts Institute of Technology (MIT) license
chalice under the Apache License Version 2.0
docker under the Apache License Version 2.0
bootstrap-vue under the Massachusetts Institute of Technology (MIT) license
bootstrap under the Massachusetts Institute of Technology (MIT) license
urllib3 under the Massachusetts Institute of Technology (MIT) license
boto3 under the Apache License Version 2.0
Elasticsearch under the Apache License Version 2.0
video.js under the Apache License Version 2.0
chalice under the Apache License Version 2.0
docker under the Apache License Version 2.0
146 changes: 69 additions & 77 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,69 +1,96 @@
# Media Insights Engine
![MIE logo](doc/images/MIE_logo.png)

Welcome to the Media Insights Engine (MIE) project!

MIE is a framework to accelerate the development of serverless applications that process video, images, audio, and text with artificial intelligence services and multimedia services on AWS. MIE is most often used to:
Media Insights Engine (MIE) is a framework to accelerate the development of serverless applications that process video, images, audio, and text with artificial intelligence services and multimedia services on AWS. MIE is most often used to:

1. Create media analysis workflows using [Amazon Rekognition](https://aws.amazon.com/rekognition/), [Amazon Transcribe](https://aws.amazon.com/transcribe/), [Amazon Translate](https://aws.amazon.com/translate/), [Amazon Cognito](https://aws.amazon.com/cognito/), [Amazon Polly](https://aws.amazon.com/polly/), and [AWS Elemental MediaConvert](https://aws.amazon.com/mediaconvert/).
2. Build analytical applications on top of data extracted by workflows and saved in the [Amazon Elasticsearch Service](https://aws.amazon.com/elasticsearch-service/)

MIE includes a demo GUI for video content analysis and search. The [Implementation Guide](https://github.com/awslabs/aws-media-insights-engine/blob/master/IMPLEMENTATION_GUIDE.md) explains how to build other applications with MIE.

![](doc/images/MIEDemo.gif)

# Installation
You can deploy MIE and the demo GUI in your AWS account with the following one-click deploy buttons:
The Media Insights sample application lets you upload videos, images, audio and text files for content analysis and add the results to a collection that can be searched to find media that has attributes you are looking for. It runs an MIE workflow that extracts insights using many of the ML content analysis services available on AWS and stores them in a search engine for easy exploration. A web based GUI is used to search and visualize the resulting data along-side the input media. The analysis and transformations included in MIE workflow for this application include:

Region| Launch
------|-----
US East (N. Virginia) | [![Launch in us-east-1](doc/images/launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=mie&templateURL=https://rodeolabz-us-east-1.s3.amazonaws.com/media-insights-solution/v0.1.7/cf/media-insights-stack.template)
US West (Oregon) | [![Launch in us-west-2](doc/images/launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks/new?stackName=mie&templateURL=https://rodeolabz-us-west-2.s3.amazonaws.com/media-insights-solution/v0.1.7/cf/media-insights-stack.template)
* Proxy encode of videos and separation of video and audio tracks using **AWS Elemental MediaConvert**.
* Object, scene, and activity detection in images and video using **Amazon Rekognition**.
* Celebrity detection in images and video using **Amazon Rekognition**
* Face search from a collection of known faces in images and video using **Amazon Rekognition**
* Facial analysis to detect facial features and faces in images and videos to determine things like happiness, age range, eyes open, glasses, facial hair, etc. In video, you can also measure how these things change over time, such as constructing a timeline of the emotions expressed by an actor. From **Amazon Rekognition**.
* Unsafe content detection using **Amazon Rekognition**. Identify potentially unsafe or inappropriate content across both image and video assets.
* Convert speech to text from audio and video assets using **Amazon Transcribe**.
* Convert text from one language to another using **Amazon Translate**.
* Identify entities in text using **Amazon Comprehend**.
* Identify key phrases in text using **Amazon Comprehend**
* Locate technical cues such as black frames, end credits, and color bars in your videos using Amazon Rekognition.
* Identify start, end, and duration of each unique shot in your videos using Amazon Rekognition.

Data are stored in Amazon Elasticsearch Service and can be retrieved using _Lucene_ queries in the Collection view search page.

The default settings for the template will deploy MIE and the demo GUI. You must set the parameters for `Stack name` and `AdminEmail`.
# Installation
You can deploy MIE and the demo GUI in your AWS account with the following instructions:

#### *Step 1. Launch the Stack*
Region| Launch
------|-----
US East (N. Virginia) | [![Launch in us-east-1](doc/images/launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=mie&templateURL=https://rodeolabz-us-east-1.s3.amazonaws.com/media-insights-solution/v0.1.8/cf/media-insights-stack.template)
US West (Oregon) | [![Launch in us-west-2](doc/images/launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks/new?stackName=mie&templateURL=https://rodeolabz-us-west-2.s3.amazonaws.com/media-insights-solution/v0.1.8/cf/media-insights-stack.template)

1. Sign in to the AWS Management Console in either the US-East-1 or US-West-2 regions.
2. Select a template to launch from the table above based on the region you are signed into. This will take you to the
Cloudformation deployment menu.
3. On the Create stack page, verify that the correct template URL shows in the Amazon
S3 URL text box and choose Next.
4. On the Specify stack details page, assign a name to your MIE stack.
5. Under Parameters, review the parameters for the template and modify them as
necessary. The default settings for the template will deploy MIE and the demo GUI. You must set the parameters for `Stack name` and `AdminEmail`.
6. Choose Next.
7. On the Configure stack options page, choose Next.
8. On the Review page, review and confirm the settings. Check the box acknowledging that
the template will create AWS Identity and Access Management (IAM) resources.
9. Choose Create stack to deploy the stack

You can view the status of the stack in the AWS CloudFormation Console in the Status
column. You should see a status of CREATE_COMPLETE in approximately 15-30 minutes.

For more information about stack deployment, see the section on [installation parameters](#installation-parameters).

#### *Step 2. Access the Web Application*

# Cost
To access the web application, you will need the email address you provided in the AWS
CloudFormation template, a temporary password, which is emailed to your specified
address, and the URL of your deployed MIE sample application.

In the same email that includes your temp password, there is a link to the MIE stack overview.

Most AWS accounts include a free tier for the services used in MIE. However, if your usage exceeds the free tier allotments then you will be responsible for the cost of the AWS services used while running MIE.
1. Click that link to access the stack overview page.
2. Navigate to the `Outputs` tab of the MIE stack.
3. Copy the value of the `MediaInsightsWebAppUrl` output. This is the URL you will use to access the sample application.
4. In a new browser tab, paste the `MediaInsightsWebAppUrl` value into the navigation bar and access the app.
5. Sign in with the email address you provided and the temp password from the automated email. You will be prompted to set a new password.
6. Upload some content from the `Upload` link in the navigation header and explore the application.

The cost depends on the number of and length of uploaded videos, and data transfer fees, which will vary depending on the number of users and frequency of viewing. Cost also depends on video content. For example, videos with lots of speech will incur higher costs for text operations. You will also be charged for storing media files in S3.
## Outputs

As of the date of publication, the costs for running this solution in the us-east-1 (N. Virginia) region are estimated below. Prices for services are tiered to distinguish between heavy and lite users. The estimates below are based on prices for lite users.
After the stack successfully deploys, you can find important interface resources in the **Outputs** tab of the MIE CloudFormation stack.

## Video Operators
See [https://aws.amazon.com/rekognition/pricing/](https://aws.amazon.com/rekognition/pricing/).
**MediaInsightsWebAppUrl** is the Url to access sample Media Insights web application

Object Detection ($0.10 per min)
Celebrity Recognition ($0.10 per min)
Content Moderation ($0.10 per min)
Face Detection ($0.10 per min)
Face Search ($0.10 per min)
**DataplaneApiEndpoint** is the endpoint for accessing dataplane APIs to create, update, delete and retrieve media assets

## Audio Operators
See [https://aws.amazon.com/transcribe/pricing/](https://aws.amazon.com/rekognition/pricing/).
**DataplaneBucket** is the S3 bucket used to store derived media (_derived assets_) and raw analysis metadata created by MIE workflows.

Transcribe ($.024 per min)
**ElasticsearchEndpoint** is the endpoint of the Elasticsearch cluster used to store analysis metadata for search

## Text Operators
Comprehend Key Phrases ($0.000001 per character)
Comprehend Entities ($0.000001 per character)
Polly ($0.000004 per character)
Translate ($0.000015 per character)
**MediaInsightsEnginePython37Layer** is a lambda layer required to build new operator lambdas

## Data Plane and Control Plane
[Elasticsearch](https://aws.amazon.com/elasticsearch-service/pricing/)(r4.large.elasticsearch) $0.196 per Hour
[S3](https://aws.amazon.com/s3/pricing/) $0.023 per GB
**WorkflowApiEndpoint** is the endpoint for accessing the Workflow APIs to create, update, delete and execute MIE workflows.

## Lambda, API Gateway, DynamoDB, and DynamoDB Streams
The free-tier for Lambda, API Gateway, DynamoDB, and DynamoDB Streams should cover most common MIE use cases.
**WorkflowCustomResourceArn** is the custom resource that can be used to create MIE workflows in CloudFormation scripts

## Pricing Example:

The cost to analyzing 4 hours of video with 64 pages (~165k characters) of speech through every operator is $128.
# Cost

This scenario is loosely based on "A Christmas Carol" by Charles Dickens, which includes ~165k characters and ~3 hours 50 min speech duration ([reference](https://aws.amazon.com/polly/pricing/)).
MIE itself does not have a significant cost footprint. The MIE control plane and data plane generally cost less than $1 per month. However, when people talk about the cost of MIE they're generally talking about the cost of running some specific application that was built on top of MIE. Because those costs can vary widely you will need to get pricing information from the documentation for those applications. As a point of reference, see the README for the Content Analysis application that is included under the webapp directory.

# Limits

Expand Down Expand Up @@ -130,45 +157,6 @@ You can deploy MIE and the demo GUI in your AWS account with the [one-click depl
**Other parameters**
* **DeployAnalyticsPipeline**: If set to true, deploys a metadata streaming pipeline that can be consumed by downstream analytics plaforms. Defaults to `true`.

## Outputs

After the stack successfully deploys, you can find important interface resources in the **Outputs** tab of the CloudFormation stack.

**DataplaneApiEndpoint** is the endpoint for accessing dataplane APIs to create, update, delete and retrieve media assets

**DataplaneBucket** is the S3 bucket used to store derived media (_derived assets_) and raw analysis metadata created by MIE workflows.

**ElasticsearchEndpoint** is the endpoint of the Elasticsearch cluster used to store analysis metadata for search

**MediaInsightsEnginePython37Layer** is a lambda layer required to build new operator lambdas

**MediaInsightsWebAppUrl** is the Url for the sample Media Insights web application

**WorkflowApiEndpoint** is the endpoint for accessing the Workflow APIs to create, update, delete and execute MIE workflows.

**WorkflowCustomResourceArn** is the custom resource that can be used to create MIE workflows in CloudFormation scripts

# Usage

### Sample application

![](doc/images/MIEDemo.gif)

The Media Insights sample application lets you upload videos, images, audio and text files for content analysis and add the results to a collection that can be searched to find media that has attributes you are looking for. It runs an MIE workflow that extracts insights using many of the ML content analysis services available on AWS and stores them in a search engine for easy exploration. A web based GUI is used to search and visualize the resulting data along-side the input media. The analysis and transformations included in MIE workflow for this application include:

* Proxy encode of videos and separation of video and audio tracks using **AWS Elemental MediaConvert**.
* Object, scene, and activity detection in images and video using **Amazon Rekognition**.
* Celebrity detection in images and video using **Amazon Rekognition**
* Face search from a collection of known faces in images and video using **Amazon Rekognition**
* Facial analysis to detect facial features and faces in images and videos to determine things like happiness, age range, eyes open, glasses, facial hair, etc. In video, you can also measure how these things change over time, such as constructing a timeline of the emotions expressed by an actor. From **Amazon Rekognition**.
* Unsafe content detection using **Amazon Rekognition**. Identify potentially unsafe or inappropriate content across both image and video assets.
* Convert speech to text from audio and video assets using **Amazon Transcribe**.
* Convert text from one language to another using **Amazon Translate**.
* Identify entities in text using **Amazon Comprehend**.
* Identify key phrases in text using **Amazon Comprehend**

Data are stored in Amazon Elasticsearch Service and can be retrieved using _Lucene_ queries in the Collection view search page.

### Example use cases for Media Insights Engine

MIE is a reusable architecture that can support many different applications. Examples:
Expand Down Expand Up @@ -200,6 +188,10 @@ Visit the Issue page in this repository for known issues and feature requests.

See the [CONTRIBUTING](CONTRIBUTING.md) file for how to contribute.

# Logo

The [MIE logo](doc/images/MIE_logo.png) features a clapperboard representing *multimedia*, centered inside a crosshair representing *under scrutiny*.

# License

See the [LICENSE](LICENSE.txt) file for our project's licensing.
Expand Down
Loading

0 comments on commit a663d95

Please sign in to comment.