erikstmartin / rtmp-switcher Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
Weird glitching video when disconnecting an input. This could be data left in the buffers?
Hello,
Love what you have done here with rust.. I'm new to rust and have been using gstreamer with glib python bindings.
Is there any appetite to include a UDP/RTP input to connect to the mixer.? Would be great. In addition, could the new fallbackswitch element. (written in rust) could be used to allow broken streams to fall back to a black videotestsrc and audio silence to keep the pipeline from eos?
Look into github.com/slog-rs/slog
Will need to compile gstreamer from source https://gitlab.freedesktop.org/gstreamer/gst-build and copy artifacts over to runtime container.
If we try to output to both autosink and rtmp the pipeline never leaves the Paused state.
This has something to do with the internal clock. The video tries to catch up to the internal clock, which causes it to fast-forward. We don't want this to happen.
Does the current pipeline scale inputs?
We can currently add new inputs which sit over top, but it would be nice to trigger which input is on top (potentially pause/remove original input)
This could just be simply not enough cpu/memory on the transcoder/transmuxer size. Do some more debugging.
We need our API to be authenticated or use mutual tls
Scale input based on mixer dimensions if input doesn't have its own dimensions.
Enforce resolution. It's sized differently based on when other inputs are added.
We want to be able to collect data like bitrate on input and output and react accordingly
We need to store all our JoinHandles from our mixers and wait on all of them (and the http server)
It is possible when we try to change the state of a running pipeline. We may end up in the middle of a pending state change that's occuring.
We could have various mixer::Config's for an input and name them. Then we could swap between them.
PipState
FullScreenState
Do we need to use nvidia/cuda and the entire Ubuntu image? Can we start from Scratch and copy over any dependencies that are needed?
We need to ensure that we capture errors. We can't use things like unwrap() or expect(). We don't want to kill our pipeline or worse all the live mixers for errors.
Add linter to project so it won't compile with unwrap or expect
Depends on #49
We may want to push the same stream to multiple channels/mixers. We may also want to take an input and send it to a file so that we can record it.
This is only an issue if an output (this could just be RTMP?) is added before the input is added.
race conditions due to not blocking pads, pending state change, or unlinking when not idle?
Try to create a mixer that already exists. We see these errors.
thread 'tokio-runtime-worker' panicked at 'called Option::unwrap()
on a None
value', src/mixer/mod.rs:251:24
note: run with RUST_BACKTRACE=1
environment variable to display a backtrace
thread 'tokio-runtime-worker' panicked at 'called Result::unwrap()
on an Err
value: "PoisonError { inner: .. }"', /home/erik/code/switcher/src/http/handlers.rs:204:25
I've managed to compile rtmp-switcher and is happily listening on 0.0.0.0:3030.
Is there any examples on how to configure an input=>mixer=>output.
I tried :-
$curl http://0.0.0.0:3030/mixer and got no response?
Am I missing something?
We may have issues with changing the pipeline when it is in different states. We want to add an IdlePadProbe to wait till the pad is idle before doing things like unlinking or removing it.
Also look into blocking src pads until ready.
We have not attempted to add latency or jitter to our inputs or outputs to see if the pipeline breaks
https://gstreamer.freedesktop.org/documentation/tutorials/basic/streaming.html?gi-language=c
These should be 404. Even better with a json error body explaining which component wasn't found
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.