Comments (13)
@nums Thank you for the information! We are currently focusing on improving the documentation for more contributor accessibility. We have a goal for this project to potentially attract community contributors from every relevant field, from experienced GStreamer/WebRTC/conferencing/media/graphics software developers to video power users who simply know a lot of about optimal encoder parameters, and Python/JS learners.
from selkies-gstreamer.
Relevant code: https://github.com/selkies-project/selkies-gstreamer/blob/master/src/selkies_gstreamer/signalling_web.py
Should be addressed with #27.
The signalling server must be rewritten to accommodate multiple peers. Anyone with experience in WebRTC development can do it.
from selkies-gstreamer.
This might be addressed with #48.
from selkies-gstreamer.
To be able to send stream to others participants, I think the ideal way is to send stream to a WebRTC SFU server.
Neko project is using Pion WebRTC (https://github.com/m1k1o/neko) to achieve that.
Webrtcbin must be able to interface with SFUs (there is a WHIP client that uses webrtcbin https://github.com/meetecho/simple-whip-client)
Once done, the main problem is the management of the quality of the streaming with the recovery of Nack events, PLI etc and this can produce lags or a noticeable drop in the quality of the video.
The mediasoup documentation explains this very well:
https://mediasoup.org/documentation/v3/scalability/#one-to-many-broadcasting
from selkies-gstreamer.
https://github.com/centricular/webrtcsink instead of webrtcbin
may solve this issue as this has its own signalling server.
from selkies-gstreamer.
It can, but they incidate that :
It is important to note that at this moment, encoding is not shared between consumers. While this is not on the roadmap at the moment, nothing in the design prevents implementing this optimization.
So it is possible, but there will be a big use of resources. Some certain nvidia card have a limitation of number of encodings so it can be a problem.
I'm working on my side to use webrtcbin with a SFU with this "bridge" https://github.com/meetecho/simple-whip-client and to stream the desktop screen to an SFU like mediasoup. I just have a little issue on the compilation with the selkies gstreamer version, but "work in progress"
from selkies-gstreamer.
@nums I guess that you are working on a contribution. We greatly thank your time.
from selkies-gstreamer.
Yes I'm trying to share the screen in "readonly" mode, but to be able to take the control il will be an other story
from selkies-gstreamer.
Yes I'm trying to share the screen in "readonly" mode, but to be able to take the control il will be an other story.
That's already something we really need. Thanks a lot!
from selkies-gstreamer.
Relevant: #48 (comment)
from selkies-gstreamer.
WebRTCSink is a wrapper for WebRTCBin, where settings are available in https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/blob/main/net/webrtc/src/webrtcsink/imp.rs
The issue of WHIP/WHEP is that there is no DataChannel for keys, cursors, and other information. Only read-only access would be possible without other transport protocols.
Thus, the immediate property might rather be a multi-user SFU server.
Need contribution for the SFU server, perhaps utilizing GStreamer's own signalling server.
https://gstreamer.freedesktop.org/documentation/rswebrtc/index.html#usage
from selkies-gstreamer.
The current architecture of selkies-gstreamer consists of two webrtc connections(video and audio) for one single session to a user. So using plugin webrtcsink
would result in 2*n connections (of course, all are handled by webrtcsink itself) for n number of session?
If so, considering the below note, wouldn't it be resource intense even for as little as 2-3 users?
It is important to note that at this moment, encoding is not shared between consumers. While this is not on the roadmap at the moment, nothing in the design prevents implementing this optimization.
from selkies-gstreamer.
So using plugin webrtcsink would result in 2*n connections (of course, all are handled by webrtcsink itself) for n number of session?
This is called an MCU server.
An SFU server distributes the same stream(s) to many clients. I still think webrtcsink's signaling server is still capable of doing this.
https://forasoft.medium.com/p2p-vs-mcu-vs-sfu-what-to-choose-for-a-video-conference-app-fa5cb4a5dd6e
from selkies-gstreamer.
Related Issues (20)
- Support Selkies Joystick Interposer in 32-bit (especially Wine), support manual installation in addition to DEB HOT 2
- Long hold ESC to exit full screen in the web interface does not work in certain cases and many key combinations leak to the client OS HOT 10
- [META] Rewrite gst-web HTML5 interface frontend HOT 5
- Audio randomly gets disabled after latest changes to webrtcbin HOT 12
- Various Resize/DPI improvements with the user interface and the cursor HOT 7
- Support extended stylus or touch gestures HOT 1
- x264 encoder failing to initialize HOT 3
- Add option to manually specify XAuthority files for login greeters HOT 3
- Audio does not play on "START" button press HOT 5
- Cannot start stream with NvFBC HOT 4
- Implement WebRTC statistics logging in host HOT 2
- Keyboard keystrokes continue to be held when packets are lost by congestion or unstable connection / Improve the last bit of keyboard latency overall while accommodating unstable connections HOT 3
- Instead of erroring with no audio server, restore server-side --disable_audio CLI option or automatically detect no PulseAudio server
- Achieve higher efficiency and quality in low-bandwidth and high-latency environments
- Improve Opus: reduce NetEQ jitterbuffer & eliminate discontinuous audio artifacts from jitter with Opus + RED HOT 1
- [META] Optimize the WebRTC stack to the maximum HOT 2
- When menu is open, CPU thread congestion from Vue causes choppy video and frame drop every second HOT 3
- Color is slightly incorrect from the GStreamer video converter
- Divide Dockerfile to various containers in selkies-vdi HOT 4
- Support for streaming capture cards HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from selkies-gstreamer.