Git Product home page Git Product logo

ffmpegd's Introduction

ffmpegd

FFmpeg websocket server and API for FFmpeg Commander.

*Currently a work-in-progress! Bugs and breaking changes are expected.

GoDoc Go Report Card

Docker Pulls Docker Automated build

Go Docker Image Push goreleaser

How It Works

ffmpegd connects FFmpeg Commander to ffmpeg by providing a websocket server to send encode tasks and receive realtime progress updates back to the browser. This allows using ffmpeg-commander as a GUI for ffmpeg.

The goal is to provide a simple interface for sending FFmpeg tasks from the browser (and other supported clients in the future) to your local machine.

See Usage for more details.

          process              websocket
[ffmpeg] <-------> [ffmpegd] <-----------> [ffmpeg-commander]

Install

Go

$ go install github.com/alfg/ffmpegd@latest

Download

Release binaries for your platform at: https://github.com/alfg/ffmpegd/releases

Docker

A Docker image is available with alfg/ffmpeg build installed:

$ docker run -it -p 8080:8080 -v /tmp/:/home alfg/ffmpegd

Or via GitHub Container Registry:

$ docker run -it -p 8080:8080 -v /tmp/:/home ghcr.io/alfg/ffmpegd

Or using the docker-compose example:

$ docker-compose up ffmpegd

Homebrew

TBD

Usage

  • ffmpeg must be installed and available on your $PATH.
  • Run ffmpegd:
$ ffmpegd

This wil start the websocket server in your current working directory and wait for a connection.

Example

ffmpegd with a job in progress from ffmpeg-commander

$ ffmpegd

███████╗███████╗███╗   ███╗██████╗ ███████╗ ██████╗ ██████╗
██╔════╝██╔════╝████╗ ████║██╔══██╗██╔════╝██╔════╝ ██╔══██╗
█████╗  █████╗  ██╔████╔██║██████╔╝█████╗  ██║  ███╗██║  ██║
██╔══╝  ██╔══╝  ██║╚██╔╝██║██╔═══╝ ██╔══╝  ██║   ██║██║  ██║
██║     ██║     ██║ ╚═╝ ██║██║     ███████╗╚██████╔╝██████╔╝
╚═╝     ╚═╝     ╚═╝     ╚═╝╚═╝     ╚══════╝ ╚═════╝ ╚═════╝
                                                      v0.0.8

[ffmpegd] - websocket server for ffmpeg-commander.

  Checking FFmpeg version....4.3.1
  Checking FFprobe version...4.3.1

  Server started on port :8080.
  - Go to https://alfg.github.io/ffmpeg-commander to connect!
  - ffmpegd must be enabled in ffmpeg-commander options!

Encoding... 6111 / 17620 (34.68%) 3.37x @ 80.77

ffmpeg-commander

WebSocket Demo

See demo for a websocket client example.

Develop

go build -v
./ffmpegd

Tests

go test ./...

TODO

  • Logging levels and output

License

MIT

ffmpegd's People

Contributors

alfg 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.