RuStream
is a self-hosted streaming engine, that can render media files via authenticated sessions.
cargo add RuStream
use rustream;
#[actix_rt::main]
async fn main() {
match rustream::start().await {
Ok(_) => {
println!("RuStream session has ended")
}
Err(err) => {
eprintln!("Error starting RuStream: {}", err)
}
}
}
Download OS specific Executable
curl -o RuStream-Darwin-x86_64.tar.gz -LH "Accept: application/octet-stream" "https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-Darwin-x86_64.tar.gz"
curl -o RuStream-Linux-x86_64.tar.gz -LH "Accept: application/octet-stream" "https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-Linux-x86_64.tar.gz"
curl -o RuStream-RaspberryPi.tar.gz -LH "Accept: application/octet-stream" "https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-RaspberryPi.tar.gz"
curl -o RuStream-Windows-x86_64.zip -LH "Accept: application/octet-stream" "https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-Windows-x86_64.zip"
Mandatory
- authorization: Dictionary of key-value pairs with
username
as key andpassword
as value. - media_source: Source path for the files to be streamed.
Files starting/ending with
_
(underscore) and.
(dot) will be ignored
Optional
- debug: Boolean flag to enable debug level logging. Defaults to
false
- utc_logging: Boolean flag to set timezone to UTC in the output logs. Defaults to
true
- media_host: IP address to host the server. Defaults to
127.0.0.1
/localhost
- media_port: Port number to host the application. Defaults to
8000
- session_duration: Time (in seconds) each authenticated session should last. Defaults to
3600
- file_formats: Vector of supported file formats. Defaults to
[mp4, mov, jpg, jpeg]
- workers: Number of workers to spin up for the server. Defaults to the number of physical cores.
- max_connections: Maximum number of concurrent connections per worker. Defaults to
3
- max_payload_size: Maximum size of files that can be uploaded from the UI. Defaults to
100 MB
Input should be in the format,
10 MB
,3 GB
- inputs are case insensitive - websites: Vector of websites (supports regex) to add to CORS configuration. Required only if tunneled via CDN
- key_file: Path to the private key file for SSL certificate. Defaults to
None
- cert_file: Path to the full chain file for SSL certificate. Defaults to
None
- secure_session: Boolean flag to secure the cookie
session_token
. Defaults tofalse
If
secure_session
is to set totrue
, the cookiesession_token
will only be sent via HTTPS
This means that the server can ONLY be hosted viaHTTPS
orlocalhost
Checkout GitHub Wiki for more information about environment variables and
dotenv
usage.
https://crates.io/crates/RuStream
https://docs.rs/RuStream/latest/rustream/
Generator
cargo doc --document-private-items --no-deps
rustup component add clippy
cargo clippy --no-deps --fix
https://github.com/thevickypedia/RuStream/wiki
© Vignesh Rao
Licensed under the MIT License