Skip to content

Commit

Permalink
Update to version v5.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
eggoynes committed Nov 17, 2021
1 parent 36680a4 commit 874aef0
Show file tree
Hide file tree
Showing 86 changed files with 759 additions and 6,187 deletions.
11 changes: 1 addition & 10 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
**/regional-s3-assets
**/open-source
**/.zip
**/tmp
**/out-tsc

# python output
**/__pycache__
Expand All @@ -16,18 +14,11 @@

# dependencies
**/node_modules

# e2e
**/e2e/*.js
**/e2e/*.map
package-lock.json

# misc
**/npm-debug.log
**/testem.log
# **/package-lock.json
**/.vscode/settings.json
*~
~*

# System Files
**/.DS_Store
Expand Down
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,30 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).



## [5.3.0] - 2021-11-17
### Added
- Added new input file types wmv, mkv, m3u8, mpeg, webm, and h264.
- Now allowing uppercase input file types to run the end to end video encoding workflow.
- Added the MXF and mxf file types. Closes this request (https://github.com/aws-solutions/video-on-demand-on-aws/issues/124)
- Additional headers added to Amazon CloudFront distribution attached to destination bucket for the out/* prefix. This will allow easier playback of content on modern browsers. Additional headers whitelisted are Origin, Access-Control-Allow-Origin, Access-Control-Request-Method, and Access-Control-Request-Headers.
- Additional methods added to Amazon CloudFront distribution for destination bucket. Head and options added.

### Changed
- Added steps in Readme to make building the project more clear.
- Added Readme build step to ensure bucket ownership when uploading build files.
- Removed deinterlacer preprocessor from templates to reduce costs. This causes MediaConvert jobs to run in Basic Tier mode instead of Pro Tier.
- Modified job templates that force output frame rate to 30, 24, or 15 fps to instead follow the source fps of your video file. This allows 60fps content, as well as PAL 25/50 fps video files to have their frame rate preserved.
- Removed Dash and MP4 outputs, leaving just the HLS output. This saves costs running this solution.
- Removed SelectorType and Tracks from job profiles, we will auto pick the first track. This allows audio only videos to encode without having an error.
- Changed AWS MediaConvert templates codecLevel to auto to allow for more supported input file types.
- Changed AWS MediaConvert audio track to auto to allow for video only workflows. This allows video files without audio track to work with the included AWS MediaConvert profiles.

### Fixed
- Fixed naming in the MediaConvert custom resource. Closes this PR (https://github.com/aws-solutions/video-on-demand-on-aws/pull/84)
- Update Axios package to 0.21.1

## [5.2.0] - 2020-12-10
### Added
- Support for S3 Signature Version4 for pre-signed URLs (https://github.com/awslabs/video-on-demand-on-aws/pull/111)
Expand Down
2 changes: 1 addition & 1 deletion LICENSE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

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

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion NOTICE.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Video on Demand on AWS

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

**********************
THIRD PARTY COMPONENTS
Expand Down
59 changes: 40 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,31 @@ How to implement a video-on-demand workflow on AWS leveraging AWS Step Functions
Source code for [Video on Demand on AWS](https://aws.amazon.com/solutions/video-on-demand-on-aws/) solution.

## On this Page
- [Architecture Overview](#architecture-overview)
- [Deployment](#deployment)
- [Workflow Configuration](#workflow-configuration)
- [Source Metadata Option](#source-metadata-option)
- [Encoding Templates](#encoding-templates)
- [QVBR Mode](#qvbr-mode)
- [Accelerated Transcoding](#accelerated-transcoding)
- [Source Code](#source-code)
- [Creating a custom Build](#creating-a-custom-build)
- [Additional Resources](#additional-resources)
- [Video on Demand on AWS](#video-on-demand-on-aws)
- [On this Page](#on-this-page)
- [Architecture Overview](#architecture-overview)
- [Deployment](#deployment)
- [Workflow Configuration](#workflow-configuration)
- [Environment Variables:](#environment-variables)
- [WorkFlow Triggers](#workflow-triggers)
- [Source Video Option](#source-video-option)
- [Source Metadata Option](#source-metadata-option)
- [Encoding Templates](#encoding-templates)
- [QVBR Mode](#qvbr-mode)
- [Accelerated Transcoding](#accelerated-transcoding)
- [Source code](#source-code)
- [Node.js 12](#nodejs-12)
- [Python 3.7](#python-37)
- [Creating a custom build](#creating-a-custom-build)
- [Prerequisites:](#prerequisites)
- [1. Running unit tests for customization](#1-running-unit-tests-for-customization)
- [2. Create an Amazon S3 Bucket](#2-create-an-amazon-s3-bucket)
- [3. Build MediaInfo](#3-build-mediainfo)
- [4. Create the deployment packages](#4-create-the-deployment-packages)
- [5. Launch the CloudFormation template.](#5-launch-the-cloudformation-template)
- [Additional Resources](#additional-resources)
- [Services](#services)
- [Other Solutions and Demos](#other-solutions-and-demos)

## Architecture Overview
![Architecture](architecture.png)
Expand Down Expand Up @@ -195,14 +210,20 @@ For more information, check out the [MediaInfo site](https://mediaarea.net/en/Me


### 4. Create the deployment packages
Build the distributable:
First change directory into the deployment directory.
Run the following commands to build the distribution.
```
chmod +x ./build-s3-dist.sh
./build-s3-dist.sh my-bucket video-on-demand-on-aws version
```

> **Notes**: The _build-s3-dist_ script expects the bucket name as one of its parameters, and this value should not include the region suffix.
Run this command to ensure that you are an owner of the AWS S3 bucket you are uploading files to.
```
aws s3api head-bucket --bucket my-bucket-us-east-1 --expected-bucket-owner <YOUR-AWS-ACCOUNT-ID>
```

Deploy the distributable to the Amazon S3 bucket in your account:
```
aws s3 cp ./regional-s3-assets/ s3://my-bucket-us-east-1/video-on-demand-on-aws/version/ --recursive --acl bucket-owner-full-control
Expand Down Expand Up @@ -230,16 +251,9 @@ aws s3 cp ./regional-s3-assets/ s3://my-bucket-us-east-1/video-on-demand-on-aws/
- [Live to VOD with Machine Learning](https://github.com/aws-samples/aws-elemental-instant-video-highlights)
- [Demo SPEKE Reference Server](https://github.com/awslabs/speke-reference-server)



This solution collects anonymous operational metrics to help AWS improve the
quality of features of the solution. For more information, including how to disable
this capability, please see the [implementation guide](https://docs.aws.amazon.com/solutions/latest/video-on-demand/appendix-h.html).


***

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

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand All @@ -252,3 +266,10 @@ distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

***

This solution collects anonymous operational metrics to help AWS improve the
quality of features of the solution. For more information, including how to disable
this capability, please see the [implementation guide](https://docs.aws.amazon.com/solutions/latest/video-on-demand/appendix-h.html).

105 changes: 105 additions & 0 deletions deployment/video-on-demand-on-aws.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -611,6 +611,14 @@ Resources:
Environment:
Variables:
AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1"
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

StepFunctionsRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -672,6 +680,14 @@ Resources:
ProcessWorkflow: !Sub "arn:${AWS::Partition}:states:${AWS::Region}:${AWS::AccountId}:stateMachine:${AWS::StackName}-process"
PublishWorkflow: !Sub "arn:${AWS::Partition}:states:${AWS::Region}:${AWS::AccountId}:stateMachine:${AWS::StackName}-publish"
ErrorHandler: !GetAtt ErrorHandler.Arn
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

InputValidateRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -754,6 +770,14 @@ Resources:
EnableSns: !Ref EnableSns
EnableSqs: !Ref EnableSqs
AcceleratedTranscoding: !Ref AcceleratedTranscoding
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

MediainfoRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -810,6 +834,14 @@ Resources:
Environment:
Variables:
ErrorHandler: !GetAtt ErrorHandler.Arn
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

DynamoUpdateRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -867,6 +899,14 @@ Resources:
AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1"
DynamoDBTable: !Ref DynamoDBTable
ErrorHandler: !GetAtt ErrorHandler.Arn
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

ProfilerRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -924,6 +964,14 @@ Resources:
AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1"
DynamoDBTable: !Ref DynamoDBTable
ErrorHandler: !GetAtt ErrorHandler.Arn
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

EncodeRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -988,6 +1036,14 @@ Resources:
ErrorHandler: !GetAtt ErrorHandler.Arn
MediaConvertRole: !GetAtt MediaConvertRole.Arn
EndPoint: !GetAtt MediaConvertEndPoint.EndpointUrl
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

OutputValidateRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -1051,6 +1107,14 @@ Resources:
DynamoDBTable: !Ref DynamoDBTable
ErrorHandler: !GetAtt ErrorHandler.Arn
EndPoint: !GetAtt MediaConvertEndPoint.EndpointUrl
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

ArchiveSourceRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -1107,6 +1171,14 @@ Resources:
Variables:
AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1"
ErrorHandler: !GetAtt ErrorHandler.Arn
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

SqsSendMessageRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -1172,6 +1244,15 @@ Resources:
AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1"
ErrorHandler: !GetAtt ErrorHandler.Arn
SqsQueue: !Ref SqsQueue
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

SnsNotificationRole:
Type: AWS::IAM::Role
Properties:
Expand Down Expand Up @@ -1232,6 +1313,14 @@ Resources:
AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1"
ErrorHandler: !GetAtt ErrorHandler.Arn
SnsTopic: !Ref SnsTopic
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

MediaPackageAssetsRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -1295,6 +1384,14 @@ Resources:
GroupId: !GetAtt MediaPackageVod.GroupId
GroupDomainName: !GetAtt MediaPackageVod.GroupDomainName
MediaPackageVodRole: !GetAtt MediaPackageVodRole.Arn
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

ErrorHandlerRole:
Type: AWS::IAM::Role
Expand Down Expand Up @@ -1355,6 +1452,14 @@ Resources:
AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1"
DynamoDBTable: !Ref DynamoDBTable
SnsTopic: !Ref SnsTopic
SOLUTION_IDENTIFIER: "AwsSolution/SO0021/%%VERSION%%"
Metadata:
cfn_nag:
rules_to_suppress:
- id: W89
reason: "Lambda functions do not need a VPC"
- id: W92
reason: "Lambda do not need ReservedConcurrentExecutions in this case"

IngestWorkflow:
Type: AWS::StepFunctions::StateMachine
Expand Down
2 changes: 1 addition & 1 deletion source/archive-source/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*********************************************************************************************************************
* Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. *
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. *
* *
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance *
* with the License. A copy of the License is located at *
Expand Down
2 changes: 1 addition & 1 deletion source/archive-source/lib/error.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*********************************************************************************************************************
* Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. *
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. *
* *
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance *
* with the License. A copy of the License is located at *
Expand Down
2 changes: 1 addition & 1 deletion source/archive-source/lib/index.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*********************************************************************************************************************
* Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. *
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. *
* *
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance *
* with the License. A copy of the License is located at *
Expand Down
2 changes: 1 addition & 1 deletion source/custom-resource/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*********************************************************************************************************************
* Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. *
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. *
* *
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance *
* with the License. A copy of the License is located at *
Expand Down
Loading

0 comments on commit 874aef0

Please sign in to comment.