Adds full WHIP and WHEP support to Moblin#227
Closed
anishmenon wants to merge 4 commits intoeerimoq:mainfrom
Closed
Adds full WHIP and WHEP support to Moblin#227anishmenon wants to merge 4 commits intoeerimoq:mainfrom
anishmenon wants to merge 4 commits intoeerimoq:mainfrom
Conversation
Vendor HaishinKit.swift (with RTCHaishinKit) as a local Swift package to enable WHIP/WHEP WebRTC support. Includes patches for: - H.264 STAP-A (NAL type 24) decoding in RTPH264Packetizer - Recvonly track lifecycle management in RTCPeerConnection - Compressed video callback hook (onCompressedVideo) for direct video track access bypassing IncomingStream Co-authored-by: Cursor <cursoragent@cursor.com>
Add WHIP publishing as a stream protocol for ultra-low-latency streaming to WHIP-compatible endpoints. Add a built-in WHIP server for receiving WebRTC streams from OBS/FFmpeg as camera sources. Add a WHEP client for subscribing to remote WebRTC streams. - WHIP publishing alongside RTMP, SRT, RIST in stream settings - WHIP server with ICE negotiation, trickle ICE, session teardown - WHEP client with configurable URL and latency per stream - RTMP-style video decode pipeline for smooth ingest playback - VideoDecoder session recovery on persistent decode errors - WHIP/WHEP streams as selectable camera sources in scenes - Settings UI for WHIP server, WHEP client, and WHIP publishing - HttpServer extended with routing, response headers, and CORS Co-authored-by: Cursor <cursoragent@cursor.com>
6 tasks
Owner
|
Nice try, but way too messy to even consider reviewing, sorry. |
- Define ChatPlatformStatus struct and add chatPlatformStatuses property to StatusTopLeft for per-platform chat connection status display - Add SettingsWidgetBrowserMode enum (periodicAudioAndVideo, audioAndVideoOnly, audioOnly) replacing the old audioAndVideoOnly bool on SettingsWidgetBrowser, with backward-compatible decoding - Fix ModelScene scoreboard update to use getModularScoreboardConfig() instead of non-existent getCurrentConfig() - Update bundle identifiers from com.eerimoq.Mobs to io.webmo.mocam - Add WHIP/WHEP localization strings
Owner
|
Closing in favour of #233 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds full WHIP and WHEP support to Moblin, enabling ultra-low-latency WebRTC streaming in all three directions:
Motivation
Addresses community feature requests for ultra-low-latency streaming using WebRTC. WHIP/WHEP are the standard HTTP-based signaling protocols for WebRTC, supported by OBS, FFmpeg 8+, Cloudflare, and many other platforms.
Changes
Commit 1: Vendor HaishinKit.swift — Adds HaishinKit.swift (with RTCHaishinKit) as a local Swift package for WebRTC support. Includes patches for H.264 STAP-A decoding, recvonly track lifecycle, and a compressed video callback hook.
Commit 2: WHIP/WHEP feature (35 files, ~2300 lines) — The actual feature implementation:
Test plan