Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/realeyes-media/demo-encoder

A nodejs encoding system based on ffmpeg and configured to write HLS streaming files to S3
https://github.com/realeyes-media/demo-encoder

Last synced: about 12 hours ago
JSON representation

A nodejs encoding system based on ffmpeg and configured to write HLS streaming files to S3

Awesome Lists containing this project

README

        

# README #

* demo-encoder can take an input video from the client's file system, transcode it in the cloud, and upload to cloud storage.
* Version 1.0

## TL;DR Docker Quick Build and Start
Requirements:
* Docker installed (docker --version)
* Docker-compose installed (docker-compose --version)
* x86_64 Processor architecture

Modify "hotconfig.js" with your settings:
* BUCKET_NAME is your AWS Bucket name (i.e. demo-encoder)
* AWS_ACCESS_KEY and AWS_SECRET_KEY are AWS keys that have write access to the bucket above
* AWS_REGION is your region, like 'us-east-1';

Build and Run:
* docker-compose build
* docker-compose run

## How do I get set up? ##

* Install node.js, and npm.js: [Node](https://nodejs.org/en/) or from homebrew on mac: [Homebrew](http://brew.sh/)
* Install bower and run yarn or npm install
* $ npm install -g bower
* $ npm install
* $ bower install
* Update **/src/config/config.ts with your aws access key and secret key for S3 uploading. Along with your bento4/bin path and path to your local media file**
* Update the *bucketName* value in **/src/config/config.ts** with your s3 bucket name
* Turn local cleanup on/off with the cleanup value in **/src/config/config.ts**
* To get signed URLs from bucket storage, use the signedUrls value in **/src/config/config.ts**
* $ npm run clean
* $ npm run compile
* You can watch for changes in your code with $ npm run watch

## How do I run the app? ##

### On mac ###
* Run with $ npm run nodemon
* Or with $ npm start

### On windows ###
* Same as mac, or...
* Run the app with node .dist/bin/www.js

### Go to http://localhost:3000 in a browser. ###

*You can encode a video with the default setting by only selecting a video and not changing any of the options on the web form*

## App Overview ##
* Entry point of the encoder is in **src/control/workflow.ts** in the **initWorkflow** function.
* The workflow is constructed with an array of functions in **setWorkflow** in **workflow.ts**
* Encoding processes, file system processes, and storage upload processes are designated to their own respective files in the **src/processes** directory
* All client code is in the **client** directory, and is a very rough bootstrap design with a single ajax form.
* Workflow status is polled, and accesses the javascript object in **src/control/status.ts**
* All workflow specific values are stored in the **options,** which are passed through the application until completion.

## Contact ##

* realeyes.com
* https://github.com/realeyes-media/demo-encoder