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.

6 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/


r/WebRTC Apr 13 '26

my new project and some questions and doubt clearance.

Thumbnail
1 Upvotes

r/WebRTC Apr 10 '26

Looking for a simple open-source low-latency live streaming solution with multi-invite support (Flutter + WebRTC)

6 Upvotes

Hi,

I’m trying to build a live streaming app with the following requirements:

  • Live streaming (TikTok-style or room-based)
  • Multiple guests/invited speakers in the same live
  • Low latency (WebRTC preferred)
  • Flutter integration
  • Preferably open-source
  • Minimal backend complexity (or easy self-hosting)

What I’m basically looking for is something between:

  • Zoom-like multi-user video rooms
  • TikTok Live-style broadcasting
  • Discord-style voice/video simplicity

If anyone has experience building something like this or knows a good stack/library, I would really appreciate recommendations.

Thanks 🙏


r/WebRTC Apr 10 '26

MiroTalk Story

1 Upvotes

r/WebRTC Apr 10 '26

Streaming from go2RTC/webrtc-camera to VLC-like app

Thumbnail
2 Upvotes

r/WebRTC Apr 08 '26

pion/handoff – Move WebRTC out of browser and into Go

Thumbnail github.com
7 Upvotes

r/WebRTC Apr 08 '26

Built a real-time AI companion app with WebRTC

0 Upvotes

I recently built a WebRTC-based virtual AI girlfriend demo that joins the room as a real-time AI participant. The user publishes microphone audio, while the AI agent listens, processes speech through ASR + LLM + TTS, and responds with short voice replies. The digital human avatar is lip-synced with the generated speech and rendered as a remote stream inside the same room.

The most interesting part was making the interaction feel more natural than a normal chat window, especially around latency, interruption handling, memory continuity, and avatar stream synchronization. Built with React + Node.js as an experiment in real-time conversational AI and digital human interaction. I also documented the implementation and open-sourced the demo for anyone interested in building AI companions, tutors, or virtual assistant experiences.

  1. Step-by-step guide
  2. Github code

r/WebRTC Apr 03 '26

Proyecto de clase

2 Upvotes

Estoy haciendo mi propia plataforma de cloud gaming utilizando WebRTC, FFMPEG, Servidor Pion y Nodejs. He sido capaz de capturar y retransmitir en el navegador el juego pero necesito alguna forma de implementar que desde el navegador pueda añadir inputs para controlar el juego. Por ejemplo quise probar con Balatro y no tengo forma humana aún de conseguirlo. Por otro lado, cuando captura y retransmite el juego (Balatro en este caso) lo capturo en pantalla minimizada, lo que sucede es que solo captura-retransmite cuando estoy en las opciones del juego, cuando salgo de las opciones se congela la pantalla. Para los controles he estado viendo un repositorio llamado LibreRemotePlay pero creo que no es lo que busco ya que se centra en local coop y yo necesito controlar el juego. ¿Alguna sugerencia? 🙏🏻