[PR #228] [CLOSED] feat: add WHIP/WHEP support for streaming, ingest, and playbackAdd WH… #231

Closed
opened 2026-03-02 04:00:50 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/eerimoq/moblin/pull/228
Author: @anishmenon
Created: 2/9/2026
Status: Closed

Base: mainHead: main


📝 Commits (1)

  • efbe6d7 feat: add WHIP/WHEP support for streaming, ingest, and playbackAdd WHIP publishing as a stream protocol for ultra-low-latencystreaming to WHIP-compatible endpoints. Add a built-in WHIP serverfor 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- H.264 STAP-A decoding and recvonly track fixes in RTCHaishinKit- WHIP/WHEP streams as selectable camera sources in scenes

📊 Changes

474 files changed (+37253 additions, -1865 deletions)

View changed files

📝 Common/Localizable.xcstrings (+75 -300)
📝 Common/Various/CommonUtils.swift (+9 -0)
📝 Common/Various/Validate.swift (+8 -0)
📝 Moblin Screen Recording/Moblin Screen Recording.entitlements (+1 -1)
📝 Moblin.xcodeproj/project.pbxproj (+44 -10)
📝 Moblin.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved (+10 -1)
📝 Moblin/Info.plist (+27 -31)
📝 Moblin/Media/HaishinKit/Codec/Video/VideoDecoder.swift (+20 -0)
Moblin/Media/HaishinKit/WhipStream.swift (+172 -0)
Moblin/Media/WhepClient/WhepClient.swift (+198 -0)
Moblin/Media/WhipServer/WhipServer.swift (+593 -0)
📝 Moblin/Moblin.entitlements (+21 -21)
📝 Moblin/MoblinApp.swift (+8 -1)
📝 Moblin/RemoteControl/RemoteControl.swift (+3 -3)
📝 Moblin/RemoteControl/Web/js/index.mjs (+2 -2)
📝 Moblin/StreamingPlatforms/YouTube/YouTubeApi.swift (+1 -12)
📝 Moblin/Various/Media.swift (+33 -0)
📝 Moblin/Various/MoblinSettingsUrl.swift (+0 -1)
📝 Moblin/Various/Model/Model.swift (+5 -6)
📝 Moblin/Various/Model/ModelAppleWatch.swift (+290 -17)

...and 80 more files

📄 Description

…IP publishing as a stream protocol for ultra-low-latencystreaming to WHIP-compatible endpoints. Add a built-in WHIP serverfor 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- H.264 STAP-A decoding and recvonly track fixes in RTCHaishinKit- WHIP/WHEP streams as selectable camera sources in scenes


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/eerimoq/moblin/pull/228 **Author:** [@anishmenon](https://github.com/anishmenon) **Created:** 2/9/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `main` --- ### 📝 Commits (1) - [`efbe6d7`](https://github.com/eerimoq/moblin/commit/efbe6d7cc84fac29423b2384727010638e62ffcd) feat: add WHIP/WHEP support for streaming, ingest, and playbackAdd WHIP publishing as a stream protocol for ultra-low-latencystreaming to WHIP-compatible endpoints. Add a built-in WHIP serverfor 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- H.264 STAP-A decoding and recvonly track fixes in RTCHaishinKit- WHIP/WHEP streams as selectable camera sources in scenes ### 📊 Changes **474 files changed** (+37253 additions, -1865 deletions) <details> <summary>View changed files</summary> 📝 `Common/Localizable.xcstrings` (+75 -300) 📝 `Common/Various/CommonUtils.swift` (+9 -0) 📝 `Common/Various/Validate.swift` (+8 -0) 📝 `Moblin Screen Recording/Moblin Screen Recording.entitlements` (+1 -1) 📝 `Moblin.xcodeproj/project.pbxproj` (+44 -10) 📝 `Moblin.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved` (+10 -1) 📝 `Moblin/Info.plist` (+27 -31) 📝 `Moblin/Media/HaishinKit/Codec/Video/VideoDecoder.swift` (+20 -0) ➕ `Moblin/Media/HaishinKit/WhipStream.swift` (+172 -0) ➕ `Moblin/Media/WhepClient/WhepClient.swift` (+198 -0) ➕ `Moblin/Media/WhipServer/WhipServer.swift` (+593 -0) 📝 `Moblin/Moblin.entitlements` (+21 -21) 📝 `Moblin/MoblinApp.swift` (+8 -1) 📝 `Moblin/RemoteControl/RemoteControl.swift` (+3 -3) 📝 `Moblin/RemoteControl/Web/js/index.mjs` (+2 -2) 📝 `Moblin/StreamingPlatforms/YouTube/YouTubeApi.swift` (+1 -12) 📝 `Moblin/Various/Media.swift` (+33 -0) 📝 `Moblin/Various/MoblinSettingsUrl.swift` (+0 -1) 📝 `Moblin/Various/Model/Model.swift` (+5 -6) 📝 `Moblin/Various/Model/ModelAppleWatch.swift` (+290 -17) _...and 80 more files_ </details> ### 📄 Description …IP publishing as a stream protocol for ultra-low-latencystreaming to WHIP-compatible endpoints. Add a built-in WHIP serverfor 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- H.264 STAP-A decoding and recvonly track fixes in RTCHaishinKit- WHIP/WHEP streams as selectable camera sources in scenes --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem closed this issue 2026-03-02 04:00:51 +03:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/moblin#231
No description provided.