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
Advanced and powerful Userbot written with telethon. ♥

Daisy-X-UB ☣️ The Most Super Powerfull UserBot ☣️ ⚡ †hê ∂αιѕу χ ⚡ Legendary AF Ꭰαιѕу χ This is a userbot made for telegram. I made this userbot with h

TeamDaisyX 31 Jul 30, 2021
Jupyter notebooks and AWS CloudFormation template to show how Hudi, Iceberg, and Delta Lake work

Modern Data Lake Storage Layers This repository contains supporting assets for my research in modern Data Lake storage layers like Apache Hudi, Apache

Damon P. Cortesi 25 Oct 31, 2022
a simple python script that monitors the binance hotwallet and refunds the withdrawal fee to encourage people to withdraw their Nano and help decentralisation

Nano_Binance_Refund_Bot a simple python script that monitors the binance hotwallet and refunds the withdrawal fee to encourage people to withdraw thei

James Coxon 5 Apr 07, 2022
Code to help me strengthen my bot army

discord-bot-manager an api to help you manage your other bots auth lazy: using the browser dev tools, capture a post call and view the Authorization h

Riley Snyder 2 Mar 18, 2022
Materials for the AMS 2022 Student Conference Python Workshop.

AMS 2022 Student Conference Python Workshop Let's talk MetPy! Here you will find a collection of notebooks we will be demonstrating and working throug

Unidata 4 Dec 13, 2022
The official Magenta Voice Skill SDK used to develop skills for the Magenta Voice Assistant using Voice Platform!

Magenta Voice Skill SDK Development • Support • Contribute • Contributors • Licensing Magenta Voice Skill SDK for Python is a package that assists in

Telekom Open Source Software 18 Nov 19, 2022
Senexia - A powerful telegram bot to manage your groups as effectively as possible

⚡ Kenechi bot ⚡ A Powerful, Smart And Simple Group Manager ... Written with AioG

Akhi 2 Jan 11, 2022
Yandex OSINT tool

YaSeeker Description YaSeeker - an OSINT tool to get info about any Yandex account using email or login. It can find: Fullname Photo Gender Yandex UID

HowToFind 110 Jan 03, 2023
A Telegram bot that searches for the original source of anime, manga, and art

A Telegram bot that searches for the original source of anime, manga, and art How to use the bot Just send a screenshot of the anime, manga or art or

Kira Kormak 9 Dec 28, 2022
Discord Bot for bugbounty Web

BugbountyBot Discord Bot for Bug Bounty Web The purpose of this bot is to automa

Beek Labs 6 May 03, 2022
Bot for mirroring one or multiple Twitter accounts in Pleroma/Mastodon.

Stork (pleroma-bot) Mirror one or multiple Twitter accounts in Pleroma/Mastodon. Introduction After using the pretty cool mastodon-bot for a while, I

73 Jan 08, 2023
A simple Python wrapper for the archive.is capturing service

archiveis A simple Python wrapper for the archive.is capturing service. Installation pipenv install archiveis Python Usage Import it. import archi

Ben Welsh 157 Dec 28, 2022
Telegram bot to download tiktok video/audio

TikTokDL (Bot) Telegram RoBot to Download Tiktok video/audio. Features: 👉 Download TikTok Video without Watermark 👉 Download TikTok Video with Water

X-Noid 23 Nov 21, 2022
Data and a Twitter bot for the EPA's DOCUMERICA (1972-1977) program.

documerica This repository holds JSON(L) artifacts and a few scripts related to managing archival data from the EPA's DOCUMERICA program. Contents: Ma

William Woodruff 2 Oct 27, 2021
Python wrapper for the GitLab API

Python GitLab python-gitlab is a Python package providing access to the GitLab server API. It supports the v4 API of GitLab, and provides a CLI tool (

1.9k Dec 31, 2022
A Telegram bot to extracting text from images. All languages supported.

OCR Bot A Telegram bot to extracting text from images. All languages supported. Deploy to Heroku Local Deploying Clone the repo git clone https://gith

6 Oct 21, 2022
Command-line program to download videos from YouTube.com and other video sites

youtube-dl - download videos from youtube.com or other video platforms INSTALLATION DESCRIPTION OPTIONS CONFIGURATION OUTPUT TEMPLATE FORMAT SELECTION

youtube-dl 116.4k Jan 07, 2023
Easy and simple, Telegram Bot to Show alert when some edits a message in Group

Edit-Message-Alert Just a simple bot to show alert when someone edits a message sent by them, Just 17 Lines of Code These codes are for those who incu

Nuhman Pk 6 Dec 15, 2021
The official Python client library for the Kite Connect trading APIs

The Kite Connect API Python client - v3 The official Python client for communicating with the Kite Connect API. Kite Connect is a set of REST-like API

Zerodha Technology 756 Jan 06, 2023
Play Video & Music on Telegram Group Video Chat

Video Stream is an Advanced Telegram Bot that's allow you to play Video & Music on Telegram Group Video Chat 🧪 Get SESSION_NAME from below: Pyrogram

Sehath Perera 1 Jan 17, 2022