When a subscriber connection was left with audio only, the mediasoup worker kept probing its bandwidth every 5 s. This happens when the camera is muted, when the subscriber disables the video, or when the camera is unpublished. With v3.32.1-openvidu2 each probe dropped the estimate to its 30 kbps minimum, so the video came back on its lowest layer. With v3.32.1-openvidu3 the probes had no cap: on a LAN, bursts of up to 1 MB every 5 s and an estimate near 1 Gbps. openvidu-pro-mediasoup now sends no probe while no video Consumer is active. OpenViduTestAppE2eTest gets one test for each way a connection can end up with audio only, holding it there for 20 s: - cameraMuteKeepsSubscriberBweTest: the publisher mutes the camera. - subscriberDisabledVideoKeepsSubscriberBweTest: the subscriber disables the video, which is what adaptive stream does with a hidden video. - cameraUnpublishKeepsSubscriberBweTest: the camera is unpublished and published again. It is @OnlyMediasoup because LiveKit's pion engine starts a new track on its lowest layer by design. The first two check that only the audio reaches the subscriber, under 250 KB. All three check that the first frames after the video comes back are already the top layer. The testapp's video info dialog now reports transportBytesReceived and transportPacketsReceived, read from the peer connection's 'transport' stats. The probes are RTX padding, and the video's inbound-rtp counters do not count them. publishCamera() and unpublishCamera() move to AbstractOpenViduTestappE2eTest, and Publisher.addVideo() and unpublishVideo() in OpenViduTestAppE2eEgressProTest now call them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .github | ||
| docs/images | ||
| openvidu-components-angular | ||
| openvidu-dashboard | ||
| openvidu-deployment | ||
| openvidu-livekit@2f779fc1fd | ||
| openvidu-test-browsers | ||
| openvidu-test-e2e | ||
| openvidu-test-integration | ||
| openvidu-testapp | ||
| .gitignore | ||
| .gitmodules | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| NOTICE | ||
| README.md | ||
README.md
openvidu
Visit openvidu.io
What is OpenVidu?
OpenVidu is a self-hosted real-time video and audio stack, built on top of LiveKit and mediasoup, and developed by a team with over a decade of experience building WebRTC systems. It ships as two products:
OpenVidu Meet
OpenVidu Meet is a ready-to-use, self-hosted video conferencing application: an open-source alternative to Zoom, Google Meet and Jitsi Meet.
Using it requires no code. You deploy it and it works — rooms, recordings, chat, screen sharing and moderation included. It is also highly customizable: brand it with your own name, logo and colours, and choose which features each participant gets.
With minimal effort it embeds into your own application, through an <iframe> or the
OpenVidu Meet web component, and is driven from your backend with a REST API and webhooks:
OpenVidu Platform
OpenVidu Platform is the programmable client and server SDKs for building custom WebRTC applications with low-level control over media, on top of LiveKit and mediasoup. It is API-compatible with LiveKit: any LiveKit client/server SDK works unchanged.
Both products
- Self-hosted only: deploy them on your own infrastructure (AWS, GCP, Azure, Oracle, DigitalOcean, on-premises). There is no hosted/SaaS tier: OpenVidu PRO is a paid, self-hosted edition, and the OpenVidu team offers support and consultancy.
- Advanced media features: recording, RTMP/streaming egress, AI agents (transcription, translation), virtual backgrounds, and more.
Getting started
- 📖 Documentation
- 🚀 Try it locally
- 💻 Tutorials
- 🎥 OpenVidu Meet — the ready-to-use video conferencing app (source)
Community Forum
Visit OpenVidu Community Forum
Contributors
This project exists thanks to all the people who contribute.
Backers
Thank you to all our backers! 🙏 [Become a backer]
Acknowledgments
OpenVidu has been supported under project "CPP2021-008720 NewGenVidu: An elastic, user-friendly and privacy-friendly videoconferencing platform", funded by MCIN/AEI/10.13039/501100011033 and by the European Union-NextGenerationEU/PRTR.
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

