/mmids

MultiMedia Ingestion and Distribution System

Primary LanguageRustMIT LicenseMIT

mmids

Mmids (Multi-Media Ingestion and Distribution System) is a powerful, user friendly, open source live video workflow server.

  • User Friendly
    • Complex video workflows can be easily configured by non-developers
  • Observable
    • Logging with an emphasis on corelations. Easily pinpoint logs relevant to a single stream on a busy server
  • Developer Friendly
    • Trivially add new workflow logic, new network protocols, etc... all with your own open-source or proprietary components
  • Fully Dynamic
    • Push and pull mechanisms to start, stop, and update workflows on the fly without disruptions.

See the official documentation for more details.

What's In This Repository?

  • mmids-app
    • This is the official mmids application
  • mmids-core
    • This is the main crate which contains all the logic which runs mmids. It also contains all types needed to extend mmids, or create your own custom distribution
  • mmids-gstreamer
    • This crate provides mmids components that relate to gstreamer related activities, such as transcoding.
  • reactor-test-server
    • This contains a basic HTTP server that can respond to simple_http reactor executor queries.
    • When a POST request comes in to http://localhost:9055/<category> with a stream name in the body, it will look for the file workflows/<category>/<stream name>.mmids. If one exists it will return the content of that file with a 200, otherwise returns a 404.
    • Primarily used for testing reactors
  • validators
    • These are different applications that were written to independently test different components.
    • echo-server - Used to test the TCP socket manager
    • ffmpeg-runner - Used to test the ffmpeg endpoint
    • rtmp-server - Used to test the rtmp endpoint

Building From Source

For the most part mmids can be built just using standard rust tooling. The exception is that any project that utilizes mmids-gstreamer must have the GStreamer 1.8 or greater libraries installed. The GStreamer specific installation steps can be found in the `gstreamer-rs project docs