Media Replay Engine (MRE) is a framework to build automated video clipping and replay (highlight) generation pipelines for live and video-on-demand content.

Overview

MRE Logo

Media Replay Engine (MRE) is a framework for building automated video clipping and replay (highlight) generation pipelines using AWS services for live and video-on-demand (VOD) content. With MRE, you can focus on building the business logic around video clipping without worrying about pipeline orchestration, data movement and persistence.

MRE supports the following features:

  • Catchup Replay generation
  • After event Replay generation
  • Integration with MediaLive for processing live or VOD content
  • Event and Replay video export in MP4 and HLS formats
  • Event and Replay data export in EDL and JSON formats

This repository contains the core MRE Framework which is a set of secure REST APIs that you can interact with directly. It also contains the MRE Frontend application built using React if you are someone who prefers the ease-of-use of a graphical user interface (GUI) to interact with the APIs.

Install

Prerequisites

  • python >= 3.8
  • aws-cli
  • aws-cdk < 2.0
  • docker
  • node >= 8.1
  • npm >= 5.6
  • git

Build from scratch and deploy using AWS CDK

Run the following commands to build and deploy MRE from scratch. Be sure to define values for REGION and VERSION first.

REGION=[specify a region in a format like us-east-1]
VERSION=1.0.0
git clone https://github.com/awslabs/aws-media-replay-engine
cd aws-media-replay-engine
cd deployment
./build-and-deploy.sh --version $VERSION --region $REGION [--profile <aws-profile>]

Outputs

If you choose to interact with the MRE framework using the REST APIs directly, you will need the below information from the Outputs tab of the Controlplane CloudFormation stack:

  • EndpointURL is the endpoint for accessing the APIs to create, read, update, delete (CRUD) Plugins, Models, Profiles, and schedule Events, Replays for processing.

Architecture Overview

MRE_Architecture

Architecture Components

Control plane

The control plane is an API Gateway endpoint that includes APIs to create and manage different components of the video clipping and highlights generation process. These include:

  • Segmentation and Detection Pipeline - An AWS Step Functions state machine generated dynamically with one or more user-defined Plugins (Lambda functions) to identify the mark-in (start) and mark-out (end) timestamp of the segments (clips) as well as detect interesting actions happening within those segments. To help decide the outcome of its analysis, a Plugin can optionally depend on a user-defined AI/ML model hosted either in AWS using services such as Rekognition, SageMaker, etc. or outside AWS. The pipeline is also configured to automatically publish different segmentation event notifications to an EventBridge event bus monitored by MRE for event-based downstream processing.
  • Clip Generation - A pre-defined AWS Step Functions state machine that is invoked as a part of the Segmentation and Detection pipeline to generate MP4 preview clips (for the GUI) and HLS manifest using the mark-in and mark-out timestamps of the identified segments. Clip generation, like the Segmentation and Detection pipeline, sends clip related event notifications to the MRE EventBridge event bus.
  • Replay Generation - Another pre-defined AWS Step Functions state machine which automatically selects segments containing key events to create Replay (Highlight) in various resolutions in popular video formats such as HLS and MP4. Replays can be chosen to be created in Catchup mode or after an Event is fully streamed and is completely event driven via Amazon EventBridge rules.
  • Data Export - Exports Event and Replay data into popular formats such as EDL and JSON via clip generation events triggered through Amazon EventBridge. This data can be optionally enriched (via a custom process) and ingested into video editing systems to create engaging fan user experience by overlaying video and other key event data on a timeline.

Data plane

The data plane is an API Gateway endpoint that includes APIs using which the Plugins within the Segmentation and Detection pipeline can store and retrieve media assets as well as the processing metadata. There are also quite a few helper APIs available in the data plane that the Plugins can use for performing complex data queries and manipulations.

Code Layout

Path Description
deployment/ shell scripts and Dockerfile
deployment/build-and-deploy.sh shell script to build and deploy the solution using AWS CDK
deployment/lambda_layer_factory/Dockerfile install dependencies and create a container image
deployment/lambda_layer_factory/docker-entrypoint.sh shell script to build and package the Lambda layers as zip files within the container
deployment/lambda_layer_factory/build-lambda-layer.sh shell script to run docker for building and packaging the Lambda layers
docs/ shell scripts and code to build and deploy the API docs from source
source/ source code folder
source/frontend/ source code folder for the Frontend application
source/controlplaneapi/ source code folder for the control plane
source/controlplaneapi/infrastructure/ control plane CDK application
source/controlplaneapi/runtime/ control plane Chalice application
source/dataplaneapi/ source code folder for the data plane
source/dataplaneapi/infrastructure/ data plane CDK application
source/dataplaneapi/runtime/ data plane Chalice application
source/lib/ source code folder for the custom Lambda layers
source/lib/MediaReplayEnginePluginHelper/ source code for the MediaReplayEnginePluginHelper library
source/lib/MediaReplayEngineWorkflowHelper/ source code for the MediaReplayEngineWorkflowHelper library

Demo

Check out Create automated intelligent highlights and replays in AWS M&E Demo Landing Page to watch a demo of an automated Football (Soccer) video clipping pipeline built using MRE.

Developers

To know more about how MRE works and for instructions on how to build a video clipping application with MRE, refer to the Developer Guide.

Security

MRE uses AWS_IAM to authorize REST API requests for both the Control and Data planes. The following screenshot shows how to test authentication to the MRE Control plane API using Postman. Be sure to specify the AccessKey and SecretKey for your own AWS environment.

Postman_Sample

Run the MRE Frontend application locally

  1. Navigate to source/frontend folder.
  2. Duplicate env.template and rename the duplicated file to .env.
  3. Update the keys in .env with values from the Outputs tab of mre-frontend stack in AWS CloudFormation console.
  4. Once the values are updated, run the below commands:
npm install

npm start

Cost

You are responsible for the cost of the AWS services used while running this solution.

Approximate cost (excluding free tiers):

AWS Service Quantity Cost
Amazon API Gateway 150000 requests $0.16
Amazon DynamoDB 750000 writes, 146250 reads, 0.30 GB storage $1.18
AWS Lambda 12000 invocations, 2-minute avg. duration, 256 MB memory $6
AWS Step Functions 92400 state transitions $2.21
Amazon S3 10 GB storage, 4000 PUT requests, 4000 GET requests $0.26
AWS Elemental MediaConvert 240 minutes $4.08
Amazon Rekognition 9000 Image analysis, 3 Custom Label inference units $22.32
Amazon SageMaker 2 inference endpoints $5.13

These cost estimates are for a video clipping and replay (highlight) generation pipeline built using MRE to segment a Tennis game with a duration of 3 hours. This specific pipeline had a total of 4 plugins included in the profile (with 2 of those plugins using Machine Learning models hosted in Rekognition and SageMaker). At the end of the game, the pipeline outputted a total of 282 Tennis clips.

NOTE: For tips on how to reduce the processing cost of a pipeline built using MRE, please refer to the Developer Guide.

Limitations

While MRE deploys all the relevant AWS resources to facilitate automated video clipping and replay generation pipelines, you are still responsible for managing the service limits of those AWS resources via either AWS Service Quotas or AWS Support Center.

Uninstall

Option 1: Uninstall using AWS CDK

# Delete the Frontend stack
cd aws-media-replay-engine/source/frontend/cdk
cdk destroy [--profile <aws-profile>]

# Delete the Dataplane stack
cd aws-media-replay-engine/source/dataplaneapi/infrastructure
cdk destroy [--profile <aws-profile>]

# Delete the Controlplane stack
cd aws-media-replay-engine/source/controlplaneapi/infrastructure
cdk destroy [--profile <aws-profile>]

Option 2: Uninstall using the AWS Management Console

  1. Sign in to the AWS CloudFormation console.
  2. Select the MRE Frontend stack.
  3. Choose Delete.
  4. Select the MRE Dataplane stack.
  5. Choose Delete.
  6. Select the MRE Controlplane stack.
  7. Choose Delete.

Option 3: Uninstall using AWS Command Line Interface

aws cloudformation delete-stack --stack-name <frontend-stack-name> --region <aws-region>

aws cloudformation delete-stack --stack-name <dataplane-stack-name> --region <aws-region>

aws cloudformation delete-stack --stack-name <controlplane-stack-name> --region <aws-region>

Deleting S3 buckets created by MRE

MRE creates 5 S3 buckets that are not automatically deleted. To delete these buckets, follow the steps below:

  1. Sign in to the Amazon S3 console.
  2. Select the LambdaLayerBucket bucket.
  3. Choose Empty.
  4. Choose Delete.
  5. Select the MediaLiveDestinationBucket bucket.
  6. Choose Empty.
  7. Choose Delete.
  8. Select the MreMediaOutputBucket bucket.
  9. Choose Empty.
  10. Choose Delete.
  11. Select the MreDataExportBucket bucket.
  12. Choose Empty.
  13. Choose Delete.
  14. Select the MreAccessLogsBucket bucket.
  15. Choose Empty.
  16. Choose Delete.

To delete the S3 bucket using AWS CLI, run the following command:

aws s3 rb s3://<bucket-name> --force

Contributing

See the CONTRIBUTING file for how to contribute.

License

See the LICENSE file for our project's licensing.

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

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

You might also like...
A Telegram Bot to Play Audio in Voice Chats With Youtube and Deezer support. Supports Live streaming from youtube Supports Mega Radio Fm Streamings

Bot To Stream Musics on PyTGcalls with Channel Support. A Telegram Bot to Play Audio in Voice Chats With Supports Live streaming from youtube and Mega

Acid's Utilities is a bot for my Discord server that alerts when I go live, welcomes new users, has some awesome games and so much more!

Acid's Utilities Acid's Utilities is a bot for my Discord server that alerts when I go live, welcomes new users, has some awesome games and so much mo

Live Weather Updates using Flask and OpenWeather

AuraX Live Weather Updates using Flask and OpenWeather Installation To setup this project on your local machine, first clone this repository and insta

Utilizing the freqtrade high-frequency cryptocurrency trading framework to build and optimize trading strategies. The bot runs nonstop on a Rasberry Pi.
Utilizing the freqtrade high-frequency cryptocurrency trading framework to build and optimize trading strategies. The bot runs nonstop on a Rasberry Pi.

Freqtrade Strategy Repository Please test all scripts and dry run them before using them in live mode Contact me on discord if you have any questions!

An open source development framework to help you build data workflows and modern data architecture on AWS.
An open source development framework to help you build data workflows and modern data architecture on AWS.

AWS DataOps Development Kit (DDK) The AWS DataOps Development Kit is an open source development framework for customers that build data workflows and

This is telegram bot to generate string session for using user bots. You can see live bot in https://telegram.dog/string_session_Nsbot

TG String Session Generate Pyrogram String Session Using this bot. Demo Bot: Configs: API_HASH Get from Here. API_ID Get from Here. BOT_TOKEN Telegram

Telegram Userbot to steram youtube live or Youtube vido in telegram vc by help of pytgcalls

TGVCVidioPlayerUB Telegram Userbot to steram youtube live or youtube vidio in telegram vc by help of pytgcalls Commands = Vidio Playing 🎧 stream :

Discord bot built using Python. through this you can get information about the upcoming matches, scoreboard, live score
Discord bot built using Python. through this you can get information about the upcoming matches, scoreboard, live score

IPL-bot This is a Discord bot built using Python. through this you can get information about the upcoming matches, scoreboard, live score, and many mo

Live Coding - Mensageria na AWS com Amazon SNS e Amazon SQS

Live Coding - Mensageria na AWS com Amazon SNS e Amazon SQS Repositório para o Live Coding do dia 08/12/2021 Serviços utilizados Amazon SNS Amazon SQS

Comments
  • Dataplane get_segment_state() Api call fails when gap between segments is too large

    Dataplane get_segment_state() Api call fails when gap between segments is too large

    In this example I was running chunk sizes of 60s with 25fps. Meaning every chunk had 1500 featurer results to return. The segment state api call returns all the data back to the last labelled segment. So when this amount of data becomes to large the API returns a 413 error.

    Running MRE v2.0.0

    Logs from Segmenter plugin lambda

    image

    Logs from dataplane-APIHandler

    image

    Doesn't seem to be a problem at the start of the video as when State = None the api only returns featurer data from the current chunk?

    bug 
    opened by BenvanNoorden 2
  • Bump pyjwt from 2.1.0 to 2.4.0 in /source/backend/clipgeneration/runtime

    Bump pyjwt from 2.1.0 to 2.4.0 in /source/backend/clipgeneration/runtime

    Bumps pyjwt from 2.1.0 to 2.4.0.

    Release notes

    Sourced from pyjwt's releases.

    2.4.0

    Security

    What's Changed

    New Contributors

    Full Changelog: https://github.com/jpadilla/pyjwt/compare/2.3.0...2.4.0

    2.3.0

    What's Changed

    ... (truncated)

    Changelog

    Sourced from pyjwt's changelog.

    v2.4.0 <https://github.com/jpadilla/pyjwt/compare/2.3.0...2.4.0>__

    Security

    
    - [CVE-2022-29217] Prevent key confusion through non-blocklisted public key formats. https://github.com/jpadilla/pyjwt/security/advisories/GHSA-ffqj-6fqr-9h24
    

    Changed

    
    - Explicit check the key for ECAlgorithm by @estin in https://github.com/jpadilla/pyjwt/pull/713
    - Raise DeprecationWarning for jwt.decode(verify=...) by @akx in https://github.com/jpadilla/pyjwt/pull/742
    

    Fixed

    
    - Don't use implicit optionals by @rekyungmin in https://github.com/jpadilla/pyjwt/pull/705
    - documentation fix: show correct scope for decode_complete() by @sseering in https://github.com/jpadilla/pyjwt/pull/661
    - fix: Update copyright information by @kkirsche in https://github.com/jpadilla/pyjwt/pull/729
    - Don't mutate options dictionary in .decode_complete() by @akx in https://github.com/jpadilla/pyjwt/pull/743
    
    Added
    
    • Add support for Python 3.10 by @hugovk in https://github.com/jpadilla/pyjwt/pull/699
    • api_jwk: Add PyJWKSet.getitem by @woodruffw in https://github.com/jpadilla/pyjwt/pull/725
    • Update usage.rst by @guneybilen in https://github.com/jpadilla/pyjwt/pull/727
    • Docs: mention performance reasons for reusing RSAPrivateKey when encoding by @dmahr1 in https://github.com/jpadilla/pyjwt/pull/734
    • Fixed typo in usage.rst by @israelabraham in https://github.com/jpadilla/pyjwt/pull/738
    • Add detached payload support for JWS encoding and decoding by @fviard in https://github.com/jpadilla/pyjwt/pull/723
    • Replace various string interpolations with f-strings by @akx in https://github.com/jpadilla/pyjwt/pull/744
    • Update CHANGELOG.rst by @hipertracker in https://github.com/jpadilla/pyjwt/pull/751

    v2.3.0 &amp;lt;https://github.com/jpadilla/pyjwt/compare/2.2.0...2.3.0&amp;gt;__

    Fixed

    
    - Revert &amp;quot;Remove arbitrary kwargs.&amp;quot; `[#701](https://github.com/jpadilla/pyjwt/issues/701) &amp;lt;https://github.com/jpadilla/pyjwt/pull/701&amp;gt;`__
    
    Added
    
    • Add exception chaining [#702](https://github.com/jpadilla/pyjwt/issues/702) &amp;lt;https://github.com/jpadilla/pyjwt/pull/702&amp;gt;__

    v2.2.0 &amp;lt;https://github.com/jpadilla/pyjwt/compare/2.1.0...2.2.0&amp;gt;__

    &lt;/tr&gt;&lt;/table&gt; </code></pre> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary>

    <ul> <li><a href="https://github.com/jpadilla/pyjwt/commit/83ff831a4d11190e3a0bed781da43f8d84352653"><code>83ff831</code></a> chore: update changelog</li> <li><a href="https://github.com/jpadilla/pyjwt/commit/4c1ce8fd9019dd312ff257b5141cdb6d897379d9"><code>4c1ce8f</code></a> chore: update changelog</li> <li><a href="https://github.com/jpadilla/pyjwt/commit/96f3f0275745c5a455c019a0d3476a054980e8ea"><code>96f3f02</code></a> fix: failing advisory test</li> <li><a href="https://github.com/jpadilla/pyjwt/commit/9c528670c455b8d948aff95ed50e22940d1ad3fc"><code>9c52867</code></a> Merge pull request from GHSA-ffqj-6fqr-9h24</li> <li><a href="https://github.com/jpadilla/pyjwt/commit/24b29adfebcb4f057a3cef5aaf35653bc0c1c8cc"><code>24b29ad</code></a> Update CHANGELOG.rst (<a href="https://github-redirect.dependabot.com/jpadilla/pyjwt/issues/751">#751</a>)</li> <li><a href="https://github.com/jpadilla/pyjwt/commit/31f5acb8fb3ec6cdfe2b1b0a4a8f329b5f3ca67f"><code>31f5acb</code></a> Replace various string interpolations with f-strings (<a href="https://github-redirect.dependabot.com/jpadilla/pyjwt/issues/744">#744</a>)</li> <li><a href="https://github.com/jpadilla/pyjwt/commit/5581a31c21de70444c1162bcfa29f7e0fc86edda"><code>5581a31</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github-redirect.dependabot.com/jpadilla/pyjwt/issues/748">#748</a>)</li> <li><a href="https://github.com/jpadilla/pyjwt/commit/3d4d82248f1120c87f1f4e0e8793eaa1d54843a6"><code>3d4d822</code></a> Don't mutate options dictionary in .decode_complete() (<a href="https://github-redirect.dependabot.com/jpadilla/pyjwt/issues/743">#743</a>)</li> <li><a href="https://github.com/jpadilla/pyjwt/commit/1f1fe15bb41846c602b3e106176b2c692b93a613"><code>1f1fe15</code></a> Add a deprecation warning when jwt.decode() is called with the legacy verify=...</li> <li><a href="https://github.com/jpadilla/pyjwt/commit/35fa28e59d99b99c6a780d2a029a74d6bbba8b1e"><code>35fa28e</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github-redirect.dependabot.com/jpadilla/pyjwt/issues/740">#740</a>)</li> <li>Additional commits viewable in <a href="https://github.com/jpadilla/pyjwt/compare/2.1.0...2.4.0">compare view</a></li> </ul> </details>

    <br />

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies python 
    opened by dependabot[bot] 1
Releases(v2.5.1)
  • v2.5.1(Nov 15, 2022)

    • Feature: Support for Replay duration tolerance - With the tolerance value set, you can set a maximum Replay duration when the segments duration exceed the replay duration.

    • Fixed:

      • Increased the total timeout of the CDK CustomResource Provider from the default 30 minutes to 2 hours to avoid stack timeouts during DynamoDB GSI creation.
      • Improved BYOB (Bring Your Own Bucket) S3 event notification - The new implementation configures one event notification trigger per bucket to avoid hard limit of 100 event notifications per S3 bucket (https://docs.aws.amazon.com/general/latest/gr/s3.html#limits_s3).
    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(Nov 8, 2022)

    • Feature: Support for pagination in the dataplane workflow APIs:

      • /workflow/segment/state
      • /workflow/labeling/segment/state
      • /workflow/optimization/segment/state
      • /plugin/dependentplugins/output

      Pagination on the client-side is currently handled by the MediaReplayEnginePluginHelper Lambda layer such that this change is abstracted from the plugin developer.

      ⚠️ This is a breaking feature release for MRE plugins where the plugin Lambda needs to use the latest MediaReplayEnginePluginHelper layer created as a part of building and deploying MRE v2.5.0.

    • Feature: Support for clip transition effects during replay creation. By default, the Fade in/out transition option is provided with the ability to onboard new custom transition effects as MP4 videos.

    • Feature: Ability to skip low quality segments when creating replays with the help of clip review feedback.

    • Feature: Support for choosing one or more Feature detector plugins as priority for Replay when creating a Profile. This ensures that the Feature detector plugin completes its execution before the Segmentation plugin does in order to avoid missing clips in replay.

    • Fixed:

      • Support for updating and deleting BYOB (Bring Your Own Bucket) based MRE Events.
      • Creating an Event via API does not automatically add the passed program value to Program DynamoDB table.
      • Creating a Model/Plugin/Profile via API does not automatically add the passed ContentGroup value to ContentGroup Dynamodb table.
      • Inaccurate frame timecode calculation by ProbeVideo when a live event starts exactly at 00:00 UTC.
    • Rewrote BYOB (Bring Your Own Bucket) logic to create a unique S3 notfication per MRE Event.

    • Optimized Amazon DynamoDB queries in the dataplane to mitigate throttling and reduce latency by:

      • Adding multiple Global Secondary Index (GSI) to the PluginResult table.
      • Using a new configuration parameter in the dataplane API Handler Lambda function called MAX_DETECTOR_QUERY_WINDOW_SECS. More information on this parameter can be found in the Optimizer Developer Guide.
    • Support for allowing Users to change their password in the MRE Frontend.

    • Support for Replay duration to be configured in seconds in lieu of minutes during Replay creation.

    Source code(tar.gz)
    Source code(zip)
  • v2.4.0(Oct 3, 2022)

    • Feature: A new caching layer has been introduced. A Segment Caching Lambda Caches Segment and Feature data into S3. This Cache gets used when Creating Replays and there by decrease the overall latency in Replay creation.

    • Fixed:

      • Removed dependency on AWS Cloud Map to reduce latency and avoid throttling issues when discovering Micro services.
      • Pagination when viewing replay clips within Clip Preview
      • Timeout errors occurring during Event Data export
      • Several network calls to DDB, MediaConvert have been eliminated to improve end to end Latency
      • Implemented exponential back-off retry mechanism to fix intermittent API Connection errors.
    Source code(tar.gz)
    Source code(zip)
  • v2.3.0(Aug 23, 2022)

    • Feature: Support for Optional clip generation for original and optimized segments. When creating MRE Events, it is now possible to mark clip generation as optional for either original or optimized (or both) segments in an effort to save cost and processing latency.
    • Feature: Support for embedded timecode in the source video to handle multi-day events and reliable metadata synchronization. The timecode can either be ZERO_BASED or UTC_BASED.
    • Fixed:
      • Default plugin configuration is not used if no configuration object is included in the Profile creation request.
      • Handle optional HLS clip format in replay data export.
      • Ignore 'In Progress' replays when getting eligible non-catchup replays in the replay engine.
      • Some of the features not associated correctly with the segments during replay and export creation.
    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Jul 25, 2022)

    • Feature: Bring Your Own Bucket (BYOB) as the source for MRE Events. With this feature, you can stream video chunks to an existing S3 bucket in your AWS account and have them automatically processed by the MRE workflow provided an associated Event exists in MRE.
    • Fixed:
      • Increased the Dataplane API Handler Lambda memory limit to 512 MB to avoid occasional processing timeouts and retries.
      • Profile SummaryView page breaks if a profile is created in MRE versions prior to v2.1.0.
      • Handle segments that don't have the optional Label attribute.
      • Timeout issues during Event and Replay metadata export.
    • Improvements to the Replay engine query performance in order to avoid DDB throttling.
    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Jun 15, 2022)

    • Feature: Plugins can now have multiple levels of dependency (i.e., DependentPlugins) compared to just one level in the prior MRE versions. These multiple level plugin dependencies are handled during profile creation.

      ⚠️ This is a breaking feature release for MRE plugins where the plugin Lambda functions need to use the latest MediaReplayEnginePluginHelper layer created as a part of building and deploying MRE v2.1.0.

    • Migrated all the stacks in the framework to CDK v2.
    • Fixed:
      • get_segment_state API not differentiating between multiple dependent plugin results.

        ⚠️ Due to this change, the third item in the get_segment_state API response list is now of type dictionary instead of list. Refer to the sample code in the Segmenter Plugin Dev Guide.

      • Profile DynamoDB table no longer stores the state_machine definition to keep the item size within the DynamoDB limit.
      • Not all the plugin OutputAttributes are displayed under priorities selection list during replay creation.
      • Clip generation engine selecting incorrect chunks to generate clips for optimized segments.
      • Gateway API not relaying ConflictError to clients.
      • Clip preview page not displaying all the clips in the thumbnail list.
    • Minor change to the layout of the OutputAttributes in the view plugin page.
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Apr 8, 2022)

    ⚠️ We have made a number of changes to improve the overall MRE Developer experience and fixed a number of defects. Some of these changes are breaking in nature. Upgrading from v1.0.1 to v2.0.0 involves a new deployment of MRE. This release does not provide any data migration options from v1.0.1 to v2.0.0. For instructions on migrating data and changes to API consumers refer to the MRE migration document.

    • Added: Multiple micro services that are a part of the ControlPlane
    • Added: Gateway API for ControlPlane micro services
    • Added: Service discovery using Cloud Map
    • Fixed: Support for large feature sets found in Clips when creating replay requests
    • Fixed: Cloudfront Distribution domain name stored as a SSM param for MRE Fan Experience Frontend
    • Fixed: Forcing MRE API to handle persistence of MediaLive payload as decimals.
    • Fixed: Several frontend bug fixes
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Jan 14, 2022)

    Bug Fixes:

    Control plane

    • Fixed an issue in the Profile API where it would not create a Map state for audio-based DependentPlugins of Featurer.

    Data plane

    • Fixed an issue in the get_dependent_plugins_output API where it would return empty results if the DependentPlugin is audio-based.
    • Removed minItems requirement from the schema of both the get_segment_state and get_segment_state_for_labeling APIs to support Classifier and Labeler plugins with no DependentPlugins.

    Frontend

    • Updated aws-amplify and react-scripts to a newer version.
    • Fixed an issue in the Frontend UI that displayed number 0 when viewing an Event based on MediaLive channel.
    • Handled index exceeded condition from the ColorPalette library when too many Plugins exist.
    • Fixed an issue where the Labels would not get displayed correctly even though they exist in the segment.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Nov 24, 2021)

Owner
Amazon Web Services - Labs
AWS Labs
Amazon Web Services - Labs
Debugging with Stack Overflow: Web Search Behavior in Novice and Expert Programmers

Debugging with Stack Overflow: ICSE SEET, 2022 This is the GitHub repository associated with the 2022 ICSE SEET paper, Debugging with Stack Overflow:

Madeline Endres 1 Jan 31, 2022
Activate exitlag trial accounts

Exitlag Account Activator Activate exitlag trial accounts (unlimited trial accounts) ⭐ If you want to support me, follow me on github and star the pro

Benjamin 173 Nov 10, 2022
Balanced API library in python.

Balanced Online Marketplace Payments v1.x requires Balanced API 1.1. Use v0.x for Balanced API 1.0. Installation pip install balanced Usage View Bala

Balanced 70 Oct 04, 2022
DSAIL repos - DSAIL Repository Template

DSAIL Repository Template DSAIL @ KAIST . ├── configs ('--F', help='for configur

yunhak 2 Feb 14, 2022
Automate HoYoLAB Genshin Daily Check-In Using Github Actions

Genshin Daily Check-In 🤖 Automate HoYoLAB Daily Check-In Using Github Actions KOR, ENG Instructions Fork the repository Go to Settings - Secrets Cli

Leo Kim 41 Jun 24, 2022
Configure your linux server and check for vulnerabilities with serverlla

serverlla Configure your linux server and check for vulnerabilities with serverlla. Serverlla has a menu with options and allows you to configure your

Dylan Meca 10 Feb 01, 2022
Facebook open graph api implementation using the Django web framework in python

Django Facebook by Thierry Schellenbach (mellowmorning.com) Status Django and Facebook are both rapidly changing at the moment. Meanwhile, I'm caught

Thierry Schellenbach 1.4k Dec 29, 2022
If you are in allot of groups or channel and you would like to leave them at once use this

Telegram-auto-leave-groups If you are in allot of groups or channel and you would like to leave them at once use this USER GUIDE 👣 Insert your telegr

Julius Njoroge 4 Jan 03, 2023
Ap lokit lokit

🎵 FANDA PROJECT 🎵 HAI AKU FANDA! Requirements 📝 FFmpeg NodeJS nodesource.com Python 3.8 or higher PyTgCalls MongoDB Get STRING_SESSION from below:

Fatur 2 Nov 18, 2021
This is a scalable system that reads messages from public Telegram channels using Telethon and stores the data in a PostgreSQL database.

This is a scalable system that reads messages from public Telegram channels using Telethon and stores the data in a PostgreSQL database. Its original intention is to monitor cryptocurrency related ch

Greg 3 Jun 07, 2022
:cloud: Python API for ThePirateBay.

Unofficial Python API for ThePirateBay. Build Status Test Coverage Version Downloads (30 days) Installation $ pip install ThePirateBay Note that ThePi

Karan Goel 334 Oct 21, 2022
Real-time cryptocurrencies prices.

New update added more cryptocurrencies and GBP If you like it give it a star Crypto-watcher is simple program showing price of cryptocurrency in USD a

Adrijan 25 Dec 13, 2022
A Sublime Text plugin that displays inline images for single-line comments formatted like `// ![](example.png)`.

Inline Images Sometimes ASCII art is not enough. Sometimes an image says more than a thousand words. This Sublime Text plugin can display images inlin

Andreas Haferburg 8 Jul 01, 2022
Telegram PHub Bot using ARQ Api and Pyrogram. This Bot can Download and Send PHub HQ videos in Telegram using ARQ API.

Tg_PHub_Bot Telegram PHub Bot using ARQ Api and Pyrogram. This Bot can Download and Send PHub HQ videos in Telegram using ARQ API. OS Support All linu

TheProgrammerCat 13 Oct 21, 2022
Asynchronous and also synchronous non-official QvaPay client for asyncio and Python language.

Asynchronous and also synchronous non-official QvaPay client for asyncio and Python language. This library is still under development, the interface could be changed.

Leynier Gutiérrez González 8 Sep 18, 2021
Instrument asyncio Python for distributed tracing with AWS X-Ray.

xraysink (aka xray-asyncio) Extra AWS X-Ray instrumentation to use distributed tracing with asyncio Python libraries that are not (yet) supported by t

Gary Donovan 12 Nov 10, 2022
Ghost-toolbox - Ghost's official Discord raid tool

Ghost Toolbox Ghost's official Discord raid tool. How to use Clone this repo int

G H Ø S T 10 Oct 31, 2022
This is a script to forward forward large number of documents to another telegram channel.

ChannelForward 😇 This is a Script to Forward Large Number of Documents to Another Telegram Channel. If You Try to Forward Very Large Number of Files

Anjana Madushanka 10 Jun 08, 2021
Simple Bot With Python 3.8+ For Converstaion Your Media

Media-Conversation Simple Bot With Python 3.8+ For Converstaion Your Media

Farzin 2 Dec 06, 2021
Basic Discord python bot

#How to Create a Discord Bot Account In order to work with the Python library and the Discord API, we must first create a Discord Bot account. Here ar

Tustus 1 Oct 13, 2021