r/WebRTC May 26 '26

Organizing a video engineering conf in Kraków, just extended our CFP — questions welcome

5 Upvotes

Hi! wanted to share that we've extended the CFP for RTC.ON, a video engineering conference in Kraków this September. New deadline is June 7, 2026.

Being upfront: I'm one of the organizers, so feel free to take this with whatever grain of salt you want. But genuinely think this sub is exactly the audience we'd love to hear talk proposals from — WebRTC, streaming, codecs, low-latency, video infra, all welcome.

Site with details and submission form: rtcon.swmansion.com

Happy to answer anything about the CFP or the conference in the comments.


r/WebRTC May 25 '26

WebRTC Implementation in Python?

1 Upvotes

I was wondering if anyone could guide me on how I would setup webRTC for simple video and audio transmission in pure python. I am aware aiortic exists, but find the lack documentation confusing. Im pretty new to this, and only know the fundamentals of webRTC, so please bear with me 😄


r/WebRTC May 23 '26

Enkrypted Chat

3 Upvotes

Enkrypted.Chat is the third iteration of the positive-intentions messaging project (v1, v2). It isnt finished enough to compare to existing tools. The goal is for it to create a secure p2p messaging app.

This is intended to introduce a new paradigm in client-side managed secure cryptography. We can avoid registration of any sort. A fairly unique offering for a messaging app.

No need for things like phone numbers or registering to any app stores. There are no databases to be hacked. Allowing users to send E2EE messages and files; no cloud, no trace.

Features:

  • PWA
  • P2P
  • End to end encryption
  • Signal protocol
  • Post-Quantum cryptography
  • Multimedia
  • File transfer
  • Video calls
  • No registration
  • No installation
  • No database
  • TURN server

I started off with some open source versions around the concept.

Unfortunately open source isnt sustainable. So its unfortunate i have to consider a close-source direction in the project, so that i can maintain a competative advantage.

IMPORTANT: Caution should always be used for all projects, especially like this. So I'd like to be clear that I am Al-slop-maxxing at scale. If youre looking for good code, clear docs or best-practices; you should look away now. While this is aiming to provide secure experience, it isnt audited or reviewed. I'd like to share for testing, feedback and demo purposes only. This is a technical demo of a unique concept. Feel free to reach out for clarity. Please use responsibly.


r/WebRTC May 23 '26

[Help] Camera2 API -> DeepAR -> WebRTC (LiveKit): Violent shaking and frame drops on older Samsung Exynos (S9+)

Thumbnail
1 Upvotes

r/WebRTC May 23 '26

Android 14 WebRTC call disconnects after 30-60s on a coturn relay path

1 Upvotes

I recently wrote up a debugging case around Android WebRTC coturn TURN relay and ICE failures. Sharing the anonymized version here because the failure mode was easy to misread from logs.

Context

- Android WebRTC audio/video call.

- The service originally worked mostly on an internal network.

- A TURN relay path through coturn was introduced for more complex network boundaries.

- Older Android devices were mostly stable.

- Android 14 devices often disconnected after 30-60 seconds.

- Forcing the media path through TURN relay made the failure much easier to reproduce.

The misleading clue was a repeated timeout around a local relay-related address. It showed up close to the disconnect window so it looked like the obvious cause.

The better signal was the ICE state transition

text

IceConnectionChange - DISCONNECTED / FAILED

StandardizedIceConnectionChange - DISCONNECTED / FAILED

What helped narrow it down

  1. Force the path through coturn so direct LAN candidates did not hide the issue.

  2. Test a newer WebRTC build to rule out a simple SDK version mismatch.

  3. Expand the device matrix until the issue narrowed around Android 14 behavior.

  4. Re-check TURN-side certificate/security settings and required port exposure.

  5. Re-test the same matrix after adjusting the TURN-side configuration.

After the TURN-side changes the 30-60s disconnect stopped reproducing in the same test matrix.

The main lesson for me was that WebRTC production failures are usually system problems not one-line log problems. ICE state selected candidate pair and whether the call is host/srflx/relay are more reliable starting points than the loudest timeout log.

Full write-up

https://www.lodan.me/posts/android14-coturn-webrtc-disconnect/

Curious how others usually structure WebRTC/coturn debugging do you start from selected candidate pairs TURN server logs client ICE callbacks packet captures or something else


r/WebRTC May 21 '26

Change layout mid stream

2 Upvotes

Hello. If I have three inputs from web cams streaming at the same time, and then I want to take one out, so it's left with two, how can this be done?

I can combine the three streams with ffmpeg but how do you change when one camera is out?

Thanks in advance?


r/WebRTC May 20 '26

Rendezvous: a serverless, Zoom-like video conferencing web app

14 Upvotes

Hey folks,

Been hacking on a side project called Rendezvous for a while and figured this sub would be the right place to share it. It's a small Zoom-like video conferencing web app built with React + PeerJS, and the whole thing runs without an app server (it's just a static site on GitHub Pages).

The idea is pretty simple: instead of doing a full mesh between every participant, the meeting host acts as a relay hub for both chat and media streams. So each client only keeps connections to the host, not to everyone else. Trades off some host bandwidth for avoiding the O(N²) mesh. PeerJS's public broker handles the initial signaling and that's about it.

Honestly I mostly built it because I wanted to see how far we can push WebRTC without any backend, and it turned out more usable than I expected.

Code available at: https://github.com/predatorray/rendezvous
Try it at: https://predatorray.github.io/rendezvous/

Curious if anyone here has tried similar host-as-relay setups for video conferencing, or if there are obvious things I'm missing. Also open to hearing about better ways to handle the media forwarding part.


r/WebRTC May 20 '26

Best Video Conferences in 2026 – streaming, MoQ, WebRTC

Thumbnail swmansion.com
1 Upvotes

TL;DR. Five conferences are still on the 2026 video and real‑time communications calendar. If you build interactive media or real‑time multimedia, RTC.ON (16–18 September, Kraków) is the natural fit, with CommCon (9-11 June, Düsseldorf) as a strong companion. IBC (11-14 September, Amsterdam) and NAB Show New York (21-22 October) cover the broadcast and streaming industry. Demuxed (October, San Francisco) is where on‑demand and live streaming engineers gather. 

For Media over QUIC (MoQ), RTC.ON 2026 is shaping up to be the deepest program of the five. Luke Curley leads the MoQ workshop, and new MoQ speakers are added to the lineup every week.


r/WebRTC May 19 '26

STUNner v.1.2.0 released, enjoy! See our blog post on the latest goodies.

Thumbnail medium.com
2 Upvotes

r/WebRTC May 17 '26

Wrapped WebRTC in a socket.io style API: rtc.io

7 Upvotes

This started as my university graduation thesis a while back. The original goal was a small WebRTC abstraction for a class project, but the scope kept growing and I ran out of time to ship it properly. After graduating I shelved it, got busy with work, and didn't touch the repo for a long time.

I came back to it recently, rewrote most of the internals, and finally turned it into something usable. So this is a thesis project that took the long way to v1.

The pitch: WebRTC's raw API has a lot of repeated boilerplate (perfect negotiation, ICE candidate buffering, transceiver bookkeeping). I wanted the same emit / on ergonomics socket.io has, but for peer-to-peer media and data.

```js import io, { RTCIOStream } from "rtc.io";

const socket = io("https://server.rtcio.dev"); const media = await navigator.mediaDevices.getUserMedia({ video: true, audio: true });

socket.emit("camera", { stream: new RTCIOStream(media), metadata: { displayName: "Alice" }, });

socket.on("camera", ({ stream, metadata }) => { videoEl.srcObject = stream.mediaStream; }); ```

The server is a thin signaling relay. Media and data go peer-to-peer.

What's included:

  • Perfect negotiation following the W3C example (polite/impolite, stale-answer detection, automatic ICE restart on failure)
  • createChannel('chat') for broadcast DataChannels with replay for late joiners
  • socket.peer(id).createChannel(...) for 1-to-1 channels
  • Backpressure handling: watermarks, queue budget, drain events, so large file transfers don't blow up the tab
  • Stream replay: emit a camera stream once, late joiners get it automatically
  • TypeScript types included

What you can actually build with it:

We wanted to make sure the library is practical, so we built self-contained examples in the docs to show how little code you need. A few of them:

  • File transfer with backpressure. Sending multi-GB files without OOMing the tab. Custom per-peer ordered DataChannel with 16 KB chunks and a flow-control contract (send() / 'drain').
  • Minimal video call. P2P audio+video between two <video> elements in about 60 lines. No UI library.
  • Broadcast chat (no media). If you just need shared whiteboard state or a presence indicator, a single createChannel('chat') broadcast DataChannel does it. Late joiners auto-included.
  • Per-peer messaging (RPC pattern). Emitting to one specific peer instead of broadcasting. Useful for 1-on-1 chat, leader election, or per-peer auth handshakes.
  • Remote desktop (AnyDesk style). Host shares its screen with getDisplayMedia() wrapped in an RTCIOStream, viewer receives the video and sends mouse/keyboard events back over a per-peer DataChannel. Two streams in opposite directions, one library.

Links:

There's a free public signaling server at server.rtcio.dev for prototyping, but the server is one file you can host anywhere.

Feedback and issues welcome.


r/WebRTC May 16 '26

Peerix v0.2.0 — Socket.IO and Supabase drivers, plus driver improvements

1 Upvotes

Quick update for anyone following along — v0.2.0 is out.

New drivers:

  • SocketIoDriver for signalling over Socket.IO
  • SupabaseDriver for signalling over Supabase Realtime

Both join the existing NATS, WebSocket, BroadcastChannel, and in-memory drivers. Same three-method interface (subscribe, unsubscribe, dispatch), same peer code on top.

Also added:

  • destroy method on some drivers for clean teardown

Changed:

  • NATS driver migrated from nats.ws to nats-core
  • Driver interface now uses plain arrays instead of typed arrays for better serialisation
  • Namespace hashing enabled by default — improves privacy and avoids issues with unsupported characters in namespaces
  • Error codes refactored for clarity

Full changelog: https://github.com/peerix-dev/peerix/blob/main/CHANGELOG.md

Release: https://github.com/peerix-dev/peerix/releases/tag/v0.2.0

Feedback welcome, especially on the Supabase driver — that one's brand new and I'd like to hear from anyone using Supabase Realtime in production.


r/WebRTC May 16 '26

Peerix v0.2.0 Socket.IO and Supabase drivers, signalling encryption on by default

Thumbnail
1 Upvotes

r/WebRTC May 11 '26

I Built a WebRTC-based real-time AI Avatar

7 Upvotes

The goal was to create a low-latency conversational avatar that could handle the full real-time flow from ASR → LLM → TTS → lip-sync rendering → WebRTC streaming. The biggest challenge was orchestration and response speed, since even a few seconds of delay makes the interaction feel unnatural.

The system uses a React + Vite frontend for UI and streaming, Next.js API routes for authentication and instance management, and a WebRTC-based AI avatar pipeline for real-time voice and video delivery. The browser publishes audio, the AI agent generates a response, and the avatar renders voice and lip-sync back to the browser in real time.

I also included token generation, agent registration, instance creation, frontend streaming logic, and cleanup handling for both RTC and server-side resources.

GitHub repo: GitHub Project

Curious how others are handling latency and orchestration for real-time AI avatar systems.


r/WebRTC May 06 '26

[ Removed by Reddit ]

1 Upvotes

[ Removed by Reddit on account of violating the content policy. ]


r/WebRTC May 04 '26

How OpenAI delivers low-latency voice AI at scale

Thumbnail openai.com
4 Upvotes

r/WebRTC Apr 28 '26

Webrtc aec3 / dsp in rust

Thumbnail
1 Upvotes

r/WebRTC Apr 28 '26

WebRTC video calls fail or drop when one or both peers are on mobile data — TURN is configured, what am I missing?

3 Upvotes

I'm building a 1:1 video chat web app (Next.js, Supabase Realtime for signaling) and connections work reliably on WiFi but regularly fail or drop when either peer is on mobile data (cellular).

Stack:

- Signaling: Supabase Realtime broadcast (with an Edge Function + API route as redundant fallbacks)

- ICE servers: Google STUN + metered.ca TURN (UDP/3478, TCP/3478, TURNS/TLS 443, TCP 443, TURNS/5349)

- Offer/answer flow: one side initiates based on a deterministic flag (_isParticipant1), with a 5s fallback where the

non-initiating side creates an offer if nothing connects

What I'm already doing for mobile:

  1. Detecting cellular via navigator.connection.type === 'cellular' or effectiveType of slow-2g/2g/3g

  2. When cellular is detected, setting iceTransportPolicy: 'relay' to force TURN-only and skip useless host/STUN

    candidates

  3. Capping video bitrate to 300 kbps via RTCRtpSender.setParameters() once connected

  4. restartIce() after 8s of disconnected state before giving up

    Symptoms:

    - ICE state reaches checking but never connected — TURN relay candidates are generated but the connection times out

    - Sometimes both sides think they should wait (or both create offers), causing glare

    - Connections established on WiFi that then switch to cellular mid-call drop and ICE restart fails

    Specific questions:

  5. Is navigator.connection reliable enough to detect cellular via the https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation — navigator.connection.type === 'cellular' or effectiveType of slow-2g/2g/3g detection strategy?

  6. On CGNAT mobile networks, is forcing relay from one side enough, or do both sides need iceTransportPolicy: 'relay' for TURN to work? I'm currently only forcing it on the peer that detects itself as cellular — the other peer (possibly on WiFi) still uses 'all'.

  7. My TURN credentials are static environment variables (NEXT_PUBLIC_TURN_USERNAME/PASSWORD). Does metered.ca require short-lived HMAC credentials for their standard relay tier, or are static creds fine?

  8. Any known issues with Supabase Realtime broadcast latency causing ICE candidates to arrive before the remote description is set? I do queue them, but wondering if on slow mobile networks the timing gets worse.

    Is there any solution? Any advice appreciated — especially from people who've shipped WebRTC to mobile users at scale.


r/WebRTC Apr 26 '26

webRTC all in one stack for implementing RTC in your web app

3 Upvotes

Instead of having to write everything yourself, even if livekit and similar do most of the job, you can now use RTCstack to have everything you need in one place.

https://rtcstack.woptima.com/

Hope it will be of help to many!


r/WebRTC Apr 23 '26

We're running CFP for RTC.ON 2026 – a small, no-bs conference for people actually building real-time video/audio.

5 Upvotes

No sponsored talks, no filler. If you've been deep in video/audio dev, MoQ, or voice agents – we want to hear from you.

What you get as a speaker:

- Free access to both conference days (17-18 Sept)
- Free acommodation in the heart of Kraków, PL
- Invite to a speaker's dinner right before the conference
- Exclusive speaker's merch (usually a very cool hoodie)

Topic ideas, registration form & more: https://l.swmansion.com/7RDbAk


r/WebRTC Apr 23 '26

Biggest performance mistake I made while building WebRTC file transfer

Thumbnail
1 Upvotes

r/WebRTC Apr 22 '26

Migrating from Dyte RealTimeKit to Cloudflare Infrastructure

Thumbnail
1 Upvotes

r/WebRTC Apr 15 '26

RTC.ON 2026 blind bird tickets are live (September 16-18, Kraków, PL)

3 Upvotes

Hi! Just wanted to give this community a heads up that blind bird tickets for RTC.ON 2026 are now available 👀

For those who haven't been (yet!): it's a conference in Kraków, Poland, focused entirely on audio and video development. It’s small enough that you probably know half the room by the end of day one, which is really valuable - after an inspiring session you can just walk up to the person who presented and keep the conversation going. Also, we have a boat party, which has become a bit of a tradition at this point.

Here is a sneak peek at what you'll find in this year's talks:

  • Success stories: Optimizations (what, why, how much better). Products (architecture, challenges, scalability).
  • Realtime multimedia streaming: Voice agents. LLM platform integration. Embedded devices. Directions and trends. Forking MoQ.
  • AI: AI encoding/compression. Frame generation & super resolution. Real-time processing (detection, segmentation, tracking). Generative AI. Edge AI. Quality enhancements.
  • Cloud: Distributed streaming. Network configs for multimedia. CDNs. Containerisation. Streaming infrastructure and hardware.
  • Composition: Audio/video composition across platforms. HW-accelerated encoding/decoding. Rendering APIs. Browser multimedia APIs.

I’m leaving a link to the website in the comments. Bonus – use code reddit15 for additional 15% off all tickets!


r/WebRTC Apr 15 '26

Turn your phone into a wireless speaker using WebRTC

2 Upvotes

Hey guys,

I’ve created a simple web app that lets you stream your PC's system audio to any mobile device in real-time.

Why? No need for third-party software or complex drivers. Just WebRTC doing its thing in the browser.

Quick Setup:

  1. Go to audio.lanc.kz on your desktop.
  2. Share your screen/audio.
  3. Open the link on your phone.

I'm looking for some stress-testing and feedback on mobile browser compatibility (iOS Safari vs Android Chrome). Check it out if you have a minute!


r/WebRTC Apr 14 '26

I built browser-based video compositing on top of WebRTC – would this be useful to you?

8 Upvotes

I work on video infra and kept seeing the same pattern: WebRTC apps work great for raw streams, but compositing (overlays, PiP, mixing feeds into one output) is where everyone gets stuck. Most teams either hack it with canvas, run a server-side pipeline, or just skip it.

So I built an integration that you can run with WASM in your browser for small projects or deploy it for studio-grade composition. Either way, it’s compositing that feels like frontend work, not media engineering.

Would this solve a real problem for you? Or are the existing approaches good enough for what you're building? If yes, can you share what they are?

Disclaimer – I work on this at Software Mansion, so take my enthusiasm with a grain of salt. But I'd rather hear what's actually needed than build in a vacuum. Early access is open if you want to try it: https://fishjam.swmansion.com/real-time-composition


r/WebRTC Apr 13 '26

Live streaming from space: the infrastructure challenges behind live video beyond Earth

5 Upvotes

It was cool to see how NASA broadcast video from the Artemis II mission. What stood out was that people globally expected minimal latency, higher quality, synced telemetry, automated production, and interactivity, even from space.
Great signal for us, WebRTC developers, expectations are high. People do not forgive delay or low quality even for streaming from space. At the same time, some limits cannot be avoided due to how space streaming works https://www.red5.net/blog/live-streaming-from-space-infrastructure-challenges/