- See the Developer Requirements section for dependencies etc.
- Rename
video_inputs.example.jsontovideo_inputs.jsonand modify its contents to point to some videos that you want to play. If you want audio, the first file in this list should contain an audio track. - Run the command
DEVELOP_PLUGINS=true cargo run. - Start up the Phaneron Demo App.
Note: Phaneron will attempt to bind to both port 8080 and 9091. This will be configurable in the future and will be reduced to a single port.
More documentation is available in the book, which can be built from phaneron-book using mdBook.
- Set the
DEVELOP_PLUGINSenvironment variable to load plugins from thetarget/directory. This allows you to edit plugins and run Phaneron without having to separately build each plugin and copy it to the plugins folder. - If
DEVELOP_PLUGINSis set,PLUGINS_CFG_FILEcan be used to point to a differentplugins.tomlfile. - If
DEVELOP_PLUGINSis not set,PLUGINS_DIRECTORYcan set to change the location of the plugins folder (default ispluginsin pwd). RUST_LIB_BACKTRACEcan be set to obtain a backtrace from dependencies. This is enabled by default for debug builds.RUST_LOGcan be specified to obtain logs from crates. By default this is set tophaneron=infowhich will include info-level logs for Phaneron and all loaded plugins.
For debug builds the use of a .env file is supported. This file is not loaded for release builds.
phaneron/contains Phaneron itself in both library and binary formats. This is the target forcargo runwithin this workspace.phaneron-plugin/is a library that provides type interfaces to help with developing plugins for Phaneron in rust.phaneron-plugin-utils/is a library that contains utilities that are useful for plugins.phaneron-plugin-*are plugin crates.
Some plugins may not be supported on all platforms. Currently opting out of building a plugin is a very manual process, this may improve in the future. First, edit Cargo.toml and remove any plugins that you don't want to build from default-members. Then edit plugins.toml and remove the plugins that you are not going to be building in order to prevent Phaneron from trying to load those plugins.
- Add an entry to both
membersanddefault-membersinCargo.tomlfor the new plugin. - Add an entry to
plugins.tomlfor you plugin (this should match the value inpackage.namein theCargo.tomlfile for your plugin). - Run
cargo new --lib phaneron-plugin-my-plugin-name. - Refer to existing plugins for example code.
This section covers requirements for phaneron, phaneron-plugin and phaneron-plugin-utils. Refer to the documentation for individual plugins for their respective dependencies.
rust(see rustup)- opencl development headers for your system (this may vary based on your hardware configuration)
libclang-dev
- TBA
- TBA
Refer to individual crates for their licenses. Most work is licensed under GPLv3, with the exception of the phaneron-plugin crate which is licensed under MIT. This is to allow for the publication of proprietary plugins.
Much of this work has been heavily inspired by work by Streampunk Media Ltd.