Comments (12)
This issue has been tagged as Urgent.
from selkies-gstreamer.
I believe that this issue is because the audio and video WebRTC elements do not cross-check that both protocols have been connected successfully.
from selkies-gstreamer.
How do you reproduce this?
from selkies-gstreamer.
@danisla Try to reload the web interface multiple times. Especially from a non-local connection passing through the internet. It's not guaranteed to happen every time, but I have at least one other user reproducing this.
The core problem is that the current code seemingly does not ensure that both WebRTC streams are established before exposing the web interface to the user.
from selkies-gstreamer.
Audio Stats
Latency: 0 ms
Codec: NA
Bit rate: 0.00 kbps
It seems like this is shown even when audio is active. Stats are not shown.
from selkies-gstreamer.
@Xosrov Could I ask how you solved this problem?
from selkies-gstreamer.
Hey, I don't recall such an issue, but I did have a look at the new source code and I notice something:
if audio_only:
self.build_audio_pipeline()
else:
self.build_video_pipeline()
This implies the start_pipeline
function is called twice; once for video and once for audio. Am I getting this right? If so, the self.pipeline
object is being modified and that could cause the signaling process to be disturbed. There needs to be more logging to know for sure, though.
The way I had implemented it was to first preroll the capturing + encoding + packetizing pipeline, then attach and sync a specific webrtcbin
to the already running pipeline, which In my experience made initializing the stream a lot faster.
Some other things (unrelated to this topic,) that you could consider adding to POSSIBLY improve the whole stream experience:
- Activating all available header extensions for audio and video. these do show up in the resulting SDP, but I haven't tested if they have noticeable effect.
- Since there are two
webrtcbin
s now, I would enable NACK on both. I'm not sure why you're doing it here; as the if-statement implies you only use it for one and not both? - I also used to enable FEC specifically in audio streams, but again I haven't tested to see if they have an effect on audio quality.
I hope this helps.
from selkies-gstreamer.
Thanks for the massive help. @Xosrov
While I'm busy dealing with other things, I'll make sure to bake your suggestions into the code.
from selkies-gstreamer.
Related Issues (20)
- Various issues related to clipboard relaying HOT 16
- Issue with touchpad: cursor does not respond when one keyboard button is continued to be held HOT 3
- Support remote controlling retro console devices HOT 10
- 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 9
- [META] Rewrite gst-web HTML5 interface frontend HOT 4
- Various Resize/DPI improvements with the user interface and the cursor HOT 6
- Support extended stylus or touch gestures HOT 1
- Selkies stutters during congestion HOT 45
- [META] Rust Components: WebRTCSink, WHIP/WHEP integration HOT 8
- webrtcsink HOT 1
- Python app crashes when pressing any key in a non-English layout HOT 7
- Reduce reliance on external libraries / certain upstream packages are unmaintained HOT 21
- cursor size should be set from screen DPI HOT 20
- gst launcher and some features HOT 11
- Add instructions to use uinput for bare metal/Docker instances, not just GKE or Kubernetes HOT 2
- Gstreamer pipeline is not starting HOT 14
- Scale relative mouse movement which becomes slower or faster than normal depending on client and host resolution
- Scrolling is too fast on touchpads HOT 23
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.