GithubHelp home page GithubHelp logo

xc70203 / minivideoencoder Goto Github PK

View Code? Open in Web Editor NEW

This project forked from patrickkalkman/minivideoencoder

0.0 0.0 0.0 3.37 MB

A modern video encoding platform for encoding videos optimized for streaming supporting modern encodings such as x264, x265, VP9 and AV1

Shell 0.17% JavaScript 97.13% Dockerfile 2.70%

minivideoencoder's Introduction

MiniVideoEncoder

WorkflowEngine Build and Publish to Docker WorkflowEncoder Build and Publish to Docker WorkflowPackager Build and Publish to Docker

Mini Video Encoder (MVE) is a modern video encoding platform based on open-source tools and frameworks.

MVE is

  • Scalable and portable
  • Open-source
  • Optimized for streaming, support multiple authoring specifications
  • Support modern video and audio encodings (x264, x265, VP9, AV1)
  • Support delivery via MPEG-DASH, HLS and Smooth Streaming)
  • Support major DRMs (Google Widevine, Apple Fairplay, Microsoft PlayReady)

Installation instructions

//TODO

Development instructions

MVE consists of the following 4 required services and are stored in a separate folder:

  • WorkflowDatabase
  • WorkflowEngine
  • WorkflowEncoder
  • WorkflowPackager

WorkflowDatabase

The workflow database stores the state of the encoding jobs. MVE uses a MongoDB database.

For local development, the database can be started by executing docker-compose up in a terminal window in the WorkflowDatabase folder.

Screenshot starting workflow database

WorkflowEngine

The workflow engine is responsible for handling the incoming encoding jobs. It implements a REST api for receiving new jobs and requesting the status of encoding jobs.

For local development, the workflow engine can be installed and started by first executing npm install to install all dependencies and npm start to start the engine.

Screenshot starting workflow engine

WorkflowEncoder

The workflow encoder is responsible for actually encoding the input video to the requested formats. Currently the encoder supports x264, x265 and VP9. The workflow encoder uses ffmpeg for encoding.

For local development, the workflow encoder can be installed and started by first executing npm install to install all dependencies and npm start to start the encoder.

Screenshot starting workflow encoder

WorkflowPackager

The workflow packager is responsible for packaging the encoded content. It can converts the multiple encoded output streams into an HLS or Dash package. The packager is also responsible for adding the optional DRM to the package.

For local development, the workflow packager can be installed and started by first executing npm install to install all dependencies and npm start to start the packager.

Screenshot starting workflow packager

Additional tools I use for development

I use two additional tools for local development, Postman and MongoDb Compass Community.

I use Postman to use and test the REST API of the workflow enging. To be able to query the database, I use MongoDB Compass. Both are available for free.

minivideoencoder's People

Contributors

patrickkalkman avatar dependabot-preview[bot] avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.