All Projects → trackit → aws-workflow-video-on-demand

trackit / aws-workflow-video-on-demand

Licence: Apache-2.0 License
AWS Workflow for video-on-demand with automated API

Programming Languages

HCL
1544 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to aws-workflow-video-on-demand

nebula
Media asset management and broadcast automation system
Stars: ✭ 103 (+139.53%)
Mutual labels:  vod
video-nginx
Docker image with nginx optimized for video delivery.
Stars: ✭ 39 (-9.3%)
Mutual labels:  vod
p2p-cdn-sdk-android
Free p2p cdn android github sdk to reduce video streaming costs of live and on demand video using webrtc by upto 90% and improve scalability by 6x - 🚀 Vadootv 🚀
Stars: ✭ 39 (-9.3%)
Mutual labels:  vod
Shaka Player
JavaScript player library / DASH & HLS client / MSE-EME player
Stars: ✭ 5,386 (+12425.58%)
Mutual labels:  vod
polyv-ios-vod-sdk
保利威 iOS 点播 SDK Demo
Stars: ✭ 37 (-13.95%)
Mutual labels:  vod
streaming-android
This repository contains a simple project with a number of Android examples that can be used for testing and reference.
Stars: ✭ 83 (+93.02%)
Mutual labels:  vod
plugin.video.vrt.nu
Kodi add-on to watch content from the VRT NU website
Stars: ✭ 88 (+104.65%)
Mutual labels:  vod
vod metadata
CableLabs VOD Metadata 1.1 Generator
Stars: ✭ 31 (-27.91%)
Mutual labels:  vod
bigscreen-player
Simplified media playback for bigscreen devices
Stars: ✭ 62 (+44.19%)
Mutual labels:  vod
twitch-chatlog
Fetch the chatlog to a twitch VOD from your command line.
Stars: ✭ 78 (+81.4%)
Mutual labels:  vod
Radium
Synced stream and video playback with VOD capabilities utilizing HLS. Developed for movie nights but has many use cases.
Stars: ✭ 172 (+300%)
Mutual labels:  vod
mock-hls-server
Fake a live/event HLS stream from a VOD one. Useful for testing. Supports looping.
Stars: ✭ 61 (+41.86%)
Mutual labels:  vod
media-delivery
This collection of samples demonstrates best practices to achieve optimal video quality and performance on Intel GPUs for content delivery networks. Check out our demo, recommended command lines and quality and performance measuring tools.
Stars: ✭ 26 (-39.53%)
Mutual labels:  vod
Red5 Server
Red5 Server core
Stars: ✭ 3,008 (+6895.35%)
Mutual labels:  vod
cordova-plugin-tencent-liteav
A cordova plugin for video playing with Tencent's LiteAV SDK. Support RTMP/HLS/FLV/MP4.
Stars: ✭ 24 (-44.19%)
Mutual labels:  vod
twitch-downloader
Download Twitch VODs and Clips
Stars: ✭ 37 (-13.95%)
Mutual labels:  vod
flutter-p2p-engine
Let your viewers become your unlimitedly scalable CDN.
Stars: ✭ 93 (+116.28%)
Mutual labels:  vod
rest-ftp-daemon
A pretty simple but configurable and efficient FTP-client daemon, driven through a RESTful API, used by France Télévisions in production
Stars: ✭ 23 (-46.51%)
Mutual labels:  vod
zombi-addons
No description or website provided.
Stars: ✭ 15 (-65.12%)
Mutual labels:  vod
twitch-vod-chat
No description or website provided.
Stars: ✭ 20 (-53.49%)
Mutual labels:  vod

AWS Workflow VOD Terraform module

AWS Elemental MediaConvert is a file-based video transcoding service that allows you to easily create video-on-demand (VOD) content for broadcast and multiscreen delivery at scale without having to worry about the complexity of building and operating your own video processing infrastructure. This terraform module is used to set an automated workflow in order to transcode videos with your configuration.

Infrastructure schema

Terraform versions

Terraform 0.12 and newer.

Requirements

Name Version
terraform >= 0.12
aws >= 2.11

Providers

AWS

Prerequisites

  • You must retrieve your AWS Elemental MediaConvert API endpoint (account specific). For that use aws-cli and keep the given endpoint:
$ aws mediaconvert describe-endpoints

{
    "Endpoints": [
        {
            "Url": "https://abcd1234.mediaconvert.us-west-2.amazonaws.com"
        }
    ]
}
  • You also must have an input S3 bucket and an output S3 bucket (those S3 buckets must be in the same AWS Region that region you'll set to terraform module).

Usage

Clone our repository where you plan to use this module.

Before using the module, change directory to mediaconvert_lambda.

$ cd mediaconvert_lambda && ls
job.json    mediaconvert.py

job.json is a MediaConvert Job configuration example, you may want to modify job.json file in order to change MediaConvert Job settings. Some values are populated from Lambda function, ( "[Populated by Lambda function]" values ).

Default outputs :

Apple HLS :

Resolution Bitrate (bits/s)
1280x720 192000
1920x1080 192000

MP4 :

Resolution Bitrate (bits/s)
1920x1080 192000

Once your MediaConvert Job configuration is done, zip mediaconvert_lambda's content :

mediaconvert_lambda$ zip -r ../mediaconvert_lambda.zip .

You're now ready to use this module.

Usage Example

module "workflow_vod" {
  source = "./aws-workflow-video-on-demand"

  region                = "us-west-2"
  input_bucket_name     = "my_input_bucket_name"
  output_bucket_name    = "my_output_bucket_name"
  lambda_zip_path       = "./aws-workflow-video-on-demand/mediaconvert_lambda.zip"
  project_base_name     = "my_workflow_vod_name"
  bucket_event_prefix   = "input/"
  bucket_event_suffix   = ".mov"
  mediaconvert_endpoint = "https://abcd1234.mediaconvert.us-west-2.amazonaws.com"
}

What does it do ?

  • I upload a file my_video.mov to the input/ folder in my_input_bucket_name bucket.
  • The video file match with bucket_event_prefix and bucket_event_suffix.
  • The lambda function is triggered and start MediaConvert job.
  • Output video(s) are generated in the my_output_bucket_name bucket.

Alternative example using vars.tf

# vars.tf
/*
// module configuration variables
//  - By overriding default values provided by the module
*/

variable "region" {
    description = "AWS region"
    default = "us-west-2"
}

variable "input_bucket_name" {
    description = "Input bucket name which contains videos to be transcoded."
    default = "my_input_bucket_name"
    type = string
}

variable "output_bucket_name" {
    description = "Output bucket name which contains videos after transcoding."
    default = "my_output_bucket_name"
    type = string
}

variable "bucket_event_prefix" {
    description = "Element prefix to trigger lambda function."
    default = "input/"
}

variable "bucket_event_suffix" {
    description = "Element suffix to trigger lambda function."
    default = ".mov"
}

variable "project_base_name" {
    description = "Project name."
    default = "my_workflow_vod_name"
}

variable "lambda_zip_path" {
    description = "Path to lambda function and configuration zip."
    default = "./aws-workflow-video-on-demand/mediaconvert_lambda.zip"
}

variable "speke_server_url" {
    description = "For future versions."
    default = ""
}

variable "speke_system_id" {
    description = "For future versions."
    default = ""
}

variable "mediaconvert_endpoint" {
    description = "AWS Element MediaConvert API endpoint."
    default = "https://abcd1234.mediaconvert.us-west-2.amazonaws.com"
}
# in file using module
module "workflow_vod" {
  source = "./aws-workflow-video-on-demand"
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].