2021-07-02 18:15:53 +03:00
|
|
|
![Auteur CI](https://github.com/MathieuDuponchelle/auteur/actions/workflows/CI.yml/badge.svg?branch=main)
|
|
|
|
|
2021-06-25 04:18:13 +03:00
|
|
|
# Auteur
|
2021-05-06 02:07:19 +03:00
|
|
|
|
2021-06-08 05:06:49 +03:00
|
|
|
The current scope of this project is that of a basic live node
|
|
|
|
compositor, with a service exposing a JSON API for creating,
|
|
|
|
connecting, inspecting, scheduling and removing GStreamer processing
|
|
|
|
nodes (sources, mixers and destinations as of writing).
|
2021-05-06 02:07:19 +03:00
|
|
|
|
2021-07-01 17:21:48 +03:00
|
|
|
It can be used for things like linear video feeds that allow hotswapping inputs/sources and compositing
|
|
|
|
them based on a schedule (cue time and duration). As well as fail-over to backup content when a source
|
|
|
|
is unavailable.
|
|
|
|
|
2021-06-08 05:06:49 +03:00
|
|
|
An example client running commands one at a time is provided
|
|
|
|
for exploring that API.
|
2021-05-06 02:07:19 +03:00
|
|
|
|
2021-07-02 21:48:28 +03:00
|
|
|
[Read the documentation](https://microsoft.github.io/auteur)
|
|
|
|
|
2021-06-08 05:06:49 +03:00
|
|
|
## Environment
|
|
|
|
|
|
|
|
This project depends on:
|
|
|
|
|
|
|
|
* Rust (stable channel)
|
|
|
|
|
|
|
|
* GStreamer (master as of writing)
|
|
|
|
|
2021-06-30 16:51:15 +03:00
|
|
|
* gst-plugins-rs (master as of writing)
|
2021-06-08 05:06:49 +03:00
|
|
|
|
|
|
|
The most convenient testing platform for this PoC is a Linux machine,
|
|
|
|
<https://gitlab.freedesktop.org/gstreamer/gst-build>, enter a devenv
|
2021-06-30 16:51:15 +03:00
|
|
|
then build <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/>
|
2021-06-08 05:06:49 +03:00
|
|
|
and export `GST_PLUGIN_PATH`:
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
export GST_PLUGIN_PATH=$GST_PLUGIN_PATH:/path/to/gst-plugins-rs/target/debug
|
|
|
|
```
|
|
|
|
|
|
|
|
A few GStreamer plugins are needed, make sure to install the dependencies
|
|
|
|
for all of those before building gst-build:
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
git grep "make_element(" | cut -d '"' -f 2 | sort -u
|
|
|
|
```
|
|
|
|
|
|
|
|
## Building
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
cargo build
|
|
|
|
```
|
|
|
|
|
|
|
|
## Running
|
|
|
|
|
|
|
|
Run the service:
|
|
|
|
|
|
|
|
``` shell
|
2021-06-25 04:18:13 +03:00
|
|
|
AUTEUR_LOG=debug cargo run --bin auteur
|
2021-06-08 05:06:49 +03:00
|
|
|
```
|
|
|
|
|
|
|
|
Explore and test the API with the client:
|
|
|
|
|
|
|
|
``` shell
|
2021-06-25 04:18:13 +03:00
|
|
|
cargo run --bin auteur-controller -- help
|
2021-06-08 05:06:49 +03:00
|
|
|
```
|
|
|
|
|
|
|
|
You can also find the API definition in `common/src/controller.rs`.
|
|
|
|
|
|
|
|
In addition, a simple wrapper script around the controller can
|
2021-08-04 06:00:26 +03:00
|
|
|
be found in `scripts/node_schedule.py`, alongside other scripts that leverage
|
|
|
|
it to demonstrate other features (eg `scripts/crossfade.py`)
|
2021-05-06 02:07:19 +03:00
|
|
|
|
|
|
|
## Contributing
|
|
|
|
|
|
|
|
This project welcomes contributions and suggestions. Most contributions require you to agree to a
|
|
|
|
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
|
|
|
|
the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
|
|
|
|
|
|
|
|
When you submit a pull request, a CLA bot will automatically determine whether you need to provide
|
|
|
|
a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
|
|
|
|
provided by the bot. You will only need to do this once across all repos using our CLA.
|
|
|
|
|
|
|
|
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
|
|
|
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
|
|
|
|
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
|
|
|
|
|
|
|
## Trademarks
|
|
|
|
|
|
|
|
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
|
|
|
|
trademarks or logos is subject to and must follow
|
|
|
|
[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
|
|
|
|
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
|
|
|
|
Any use of third-party trademarks or logos are subject to those third-party's policies.
|
2021-05-13 17:23:24 +03:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
All code in this repository is licensed under the [MIT license](LICENSE).
|