• Stars
    star
    110
  • Rank 315,598 (Top 7 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 6 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🎥 Cloud Encoding Platform for FFmpeg.

openencoder

Open Source Cloud Encoder for FFmpeg

A distributed and scalable video encoding pipeline to be used as an API or web interface using your own hosted or cloud infrastructure and FFmpeg encoding presets.

⚠️ Currently functional, but a work-in-progress! Check back for updates!

Build Status GoDoc Go Report Card Docker Automated build Docker Pulls

Features

  • HTTP API for submitting jobs to a redis-backed FFmpeg worker
  • FTP and S3 storage (AWS, Digital Ocean Spaces and Custom S3 Providers supported)
  • Web Dashboard UI for managing encode jobs, workers, users and settings
  • Machines UI/API for scaling cloud worker instances in a VPC
  • Database stored FFmpeg encoding presets
  • User accounts and roles

Preview

Screenshot

Development

Requirements

  • Docker
  • Go 1.11+
  • NodeJS 8+ (For web dashboard)
  • FFmpeg
  • Postgres
  • S3 API Credentials & Bucket (AWS or Digital Ocean)
  • Digital Ocean API Key (only required for Machines API)

Docker is optional, but highly recommended for this setup. This guide assumes you are using Docker.

Setup

  • Start Redis and Postgres in Docker:
docker-compose up -d redis
docker-compose up -d db

When the database container runs for the first time, it will create a persistent volume as /var/lib/postgresql/data. It will also run the scripts in scripts/ to create the database, schema, settings, presets, and an admin user.

  • Build & start API server:
go build -v && ./openencoder server
  • Start the worker:
./openencoder worker
  • Start Web Dashboard for development:
cd static && npm run serve
  • Open http://localhost:8081/dashboard in the browser and login with admin/password.

See Quick-Setup-Guide for full development setup guide.

API

See: API.md

Scaling

You can scale workers by adding more machines via the Web UI or API.

Currently only Digital Ocean is supported. More providers are planned.

See: API.md for Machines API documentation.

Documentation

See: wiki for more documentation.

Roadmap

See: Development Project for current development tasks and status.

License

MIT

More Repositories

1

docker-nginx-rtmp

🐋 A Dockerfile for nginx-rtmp-module + FFmpeg from source with basic settings for streaming HLS. Built on Alpine Linux.
XSLT
984
star
2

ffmpeg-commander

🛠️ FFmpeg Command Generator Web UI
Vue
554
star
3

ping.js

🔔 Ping the web with Javascript.
JavaScript
387
star
4

opendrinks

🍸 Open Source Drinks! Add your own recipe in a pull request! Inspired by 🎃Hacktoberfest!
JavaScript
342
star
5

mp4-rust

MP4 reader + writer library in Rust! 🎥🦀
Rust
217
star
6

overwatch-api

🌎 An Unofficial Overwatch HTTP API
JavaScript
140
star
7

ffprobe-wasm

A Web-based FFProbe. Powered by FFmpeg, Vue and Web Assembly!
Vue
116
star
8

mp4

🎥 Basic MP4 reader in Go! CLI + Golang Package for ISO/IEC 14496-12 - ISO Base Media File Format
Go
105
star
9

dropdot

☁️ Direct Upload to Amazon S3 With CORS demo. Built with Node/Express
JavaScript
86
star
10

docker-ffmpeg

A Dockerfile FFmpeg from source. Built on Alpine Linux.
Dockerfile
80
star
11

murmur-rest

🎧 A RESTful API for administering virtual Mumble servers. Built with Flask and Ice.
Slice
78
star
12

widevine

Golang Client for Widevine Cloud
Go
64
star
13

ffmpegd

FFmpeg websocket server for ffmpeg-commander.
Go
58
star
14

guildbit

🔉 Mumble Hosting Platform
HTML
53
star
15

blockchain

💰 Go (golang) Client for the Blockchain.info API
Go
45
star
16

docker-nginx-vod-module

A Dockerized NGINX build of the nginx-vod-module
Python
36
star
17

jot

📝 A server-less pastebin app for short messages. Data is stored within the URL.
JavaScript
36
star
18

chathub-client

:octocat: 💬 Chatrooms for your Github Projects
CSS
33
star
19

AdminCraft

🌲 Admin Web GUI Server Wrapper for Vanilla Minecraft Servers
Python
29
star
20

mp4-inspector

A Web-based MP4 File Inspector. Powered by Rust, Vue and Web Assembly! 🦀
Vue
26
star
21

hyperterm-retro

◼️ A retro HyperTerm theme inspired by the cool-retro-term terminal emulator.
JavaScript
25
star
22

quick-dive-into-mp4

🎥 A technical intro the MP4 container byte structure.
Go
25
star
23

somafm

📻 A SomaFM Desktop Player
JavaScript
23
star
24

mumble-widget

🔋 A web-based channel viewer widget to display active users on your Mumble server.
JavaScript
22
star
25

PlaylistParty

📺 Play Spotify Playlists on Youtube.
JavaScript
21
star
26

mediacast

📺 Google Cast - Chrome Sender & CAF Player for testing Media Playback
Vue
20
star
27

srv

▼ A modern, opinionated and simple microservices stack built on Express.
JavaScript
17
star
28

ffmpeg-webassembly-example

FFmpeg + WebAssembly
Dockerfile
17
star
29

abr-player

📼 Adaptive Streaming Test Player
Vue
15
star
30

filtergrapher

FFmpeg filtergraph editor in the browser. Powered by libavfilter, Vue and Web Assembly!
C++
15
star
31

awesome-discord

🎮 All Things Discord
15
star
32

peerfm

🎵 A Streaming Torrent Desktop Music Player
JavaScript
14
star
33

asciicat

😸 A Simple Image to ASCII Art Conversion Tool.
Go
13
star
34

docker-bento4

A dockerized Bento4 from source. Built on Alpine Linux.
Dockerfile
11
star
35

bithook

💰 A Bitcoin Webhook CLI
Go
9
star
36

flask-bootstrap

A Flask template with Flask-SQLAlchemy support and Twitter Bootstrap frontend.
JavaScript
8
star
37

screenchop

🎮 A screenshot sharing webapp for gamers
JavaScript
7
star
38

chathub-server

:octocat: 💬 Chatrooms for Github. Express/Socket.io/OAuth proxy server.
JavaScript
5
star
39

pbm-viewer

PBM, PGM, and PPM Web Viewer
JavaScript
5
star
40

shamebell-bot

🔔 Shame your friends in Discord for doing stupid things.
JavaScript
4
star
41

libav-examples

Collection of FFmpeg libav examples.
C
4
star
42

docker-murmur

A Dockerfile with Mumble Server (murmur) built from source with gRPC support enabled
CMake
4
star
43

now-playing

🎵 Display your current playing track for your stream!
Vue
3
star
44

bifextract

CLI utility for extracting images from a BIF file
Go
3
star
45

grunt-frontend-starter

A frontend starter template built with Grunt.js and Foundation.
CSS
3
star
46

docker-php-apache

A Dockerfile installing Apache 2.4, mod_php with a default settings template. Built on Alpine Linux.
Dockerfile
3
star
47

tera-query

A screen-scraping python script to query TERA item databases from the command line.
Python
2
star
48

alfg.github.io

SCSS
2
star
49

PubChem.NET

.NET Wrapper for the PubChem PUG REST API
C#
2
star
50

jquery-btc

💰 Convert USD to realtime BTC in jQuery.
JavaScript
2
star
51

restful-markdown

📝 A simple style-guide for building RESTful documentation in Markdown.
2
star
52

golang-setup

Golang Quick Start & Developer Setup for OSX
2
star
53

dotfiles

My dotfiles to share.
Vim Script
1
star
54

zedhunt

:goberserk: A squad matchmaking platform for DayZ
JavaScript
1
star
55

alfg

1
star
56

node-web-starter

Node Web Starter with ES6, Babel, WebPack.
JavaScript
1
star
57

docker-httpd

A Dockerfile installing Apache HTTPD 2.4 from source. Built on Alpine Linux.
Dockerfile
1
star
58

scripts

My scripts to share.
Shell
1
star
59

homebrew-tap

My Homebrew Tap! 🍺
Ruby
1
star
60

terabot

An IRC bot with with TeraTome querying capabilities.
Python
1
star
61

docker-YOURLS

A Dockerfile installing YOURLS running on Apache 2.4 from source. Built on Alpine Linux.
PHP
1
star
62

flask-conditional

Conditional decorators for Flask routes.
Python
1
star
63

postpress

A job posting web application to integrate into your website.
JavaScript
1
star
64

s3-uploader

A Simple S3 Uploader in Flask.
Python
1
star
65

inviteme

A small Flask app to accept email POST requests and stores to database
Python
1
star