Keeping-History / stirling

The Stirling Engine is the processing tool for Keeping History. It provides media conversion and compression, data analysis, metadata enhancement, stream packaging and archival, and is extensible through plugins.
The Unlicense
1 stars 0 forks source link

0.0.2 candidate #1

Closed robbiebyrd closed 1 year ago

robbiebyrd commented 1 year ago

Release 0.0.2

Release Notes:

This version is a non-working preview version. The previous 0.0.1 (untagged) release was a technology demo.

The entire Stirling Engine has been rewritten to be more modular and resilient for future added development. We’ve hopefully increased developer ergonomics as well.

By making only the source file as a required argument, we can use best guesses, sourced recommended defaults and calculated data to set our recommended settings. This makes the engine easier to use, meaning quicker start times. Our opinionated recommendations on settings will be expanded, and increased customization to core packages and default plugins will be added.

An example main.py file is provided to see how to use this application (see below).

Additions/Changes

Core

The core engine has been refactored into a core package. The core package includes:

Plugins

Plugins are a new-ish concept to Stirling Engine, and allows it to be infinitely expanded. We've moved some of our previous core code into plugins (such as transcript and hls). Plugins are now associated with jobs, as a StirlingJob as the top-level object (previously , we passed a single job to many plugins).

Plugins included are:

Logging

Logging is important; it's difficult to handle every error that could come up when transcoding audio or video. We've improved our logging ability. We'll be adding verbosity levels later, as well as the ability to stream logs to a file (right now, there's a write buffer), as well as provide endpoints for streaming logs to an external program or service (such as Loggly or Google Cloud Logging).

main.py example file

The provided main.py shows the general flow for creating a job processor:

PLEASE NOTE

The main.py file will NOT always be the way to build workflows; later on we'll add the ability to automatically load plugins, and it will receive a StirlingJob from another source like the planned ECU, a GraphQL input, a JSON file or the CLI.

Other additions

We’ve added some standard linting (we use Trunk https://trunk.io/products/check) and other config files.

We use VSCode, so we’ve provided our very limited .code-workspace file there. We’ll be adding more for developers in that file in the future, as well as provide other scripts and environment variables for non-users of VSCode.

Current issues: