Describe the bug
After a WHIP stream begins publishing successfully (confirmed ACTIVE by the server), the
Orchestrator sometimes never links an LL-HLS origin for it. The following line repeats
every ~2 seconds, sometimes for 30-70+ seconds, sometimes indefinitely until the server
process is restarted:
[Orchestrator] orchestrator.cpp:535 | Could not find Origin for the stream: [#default#live/<streamKey>]
No LL-HLS output is ever produced for the affected stream until (if ever) this resolves.
This is not tied to stream-key reuse — it reproduces on brand-new, never-before-used
stream keys as well.
To Reproduce
Steps to reproduce the behavior:
- Start OvenMediaEngine with a stock/default config — WHIP provider enabled, LLHLS
publisher enabled, no ABR (single bypass-only rendition), OriginMode = true.
- Publish a stream via WHIP using plain ffmpeg (no custom application logic involved).
- Intermittently, check server logs — the Orchestrator fails to link an origin for the
newly-registered stream even though the stream is otherwise ACTIVE and receiving media.
- See the "Could not find Origin for the stream" error repeating.
We were unable to find a 100%-reliable single trigger — it is intermittent rather than
tied to one specific action.
Expected behavior
The LL-HLS origin should link promptly (within the normal few-second WHIP-ingest-to-
origin-ready window) for every stream that is successfully ACTIVE.
Relevant configuration (Server.xml)
<Providers>
<RTMP />
<SRT />
<WebRTC>
<Timeout>30000</Timeout>
</WebRTC>
</Providers>
<Publishers>
<AppWorkerCount>1</AppWorkerCount>
<StreamWorkerCount>8</StreamWorkerCount>
<LLHLS>
<OriginMode>true</OriginMode>
<ChunkDuration>0.5</ChunkDuration>
<PartHoldBack>1.5</PartHoldBack>
<SegmentDuration>6</SegmentDuration>
<SegmentCount>10</SegmentCount>
<CreateDefaultPlaylist>true</CreateDefaultPlaylist>
<DVR>
<Enable>true</Enable>
<TempStoragePath>/tmp/ome_dvr/</TempStoragePath>
<MaxDuration>10800</MaxDuration>
</DVR>
</LLHLS>
<WebRTC>
<Timeout>30000</Timeout>
</WebRTC>
</Publishers>
<!-- OutputProfile: single bypass-only rendition, no ABR/transcoding -->
<Video>
<Name>bypass_video</Name>
<Bypass>true</Bypass>
</Video>
<Audio>
<Name>aac_audio</Name>
<Codec>aac</Codec>
<Bitrate>128000</Bitrate>
<Samplerate>48000</Samplerate>
<Channel>2</Channel>
<BypassIfMatch><Codec>eq</Codec></BypassIfMatch>
</Audio>
Logs
Real excerpt from a production occurrence (2026-07-31) that eventually self-resolved:
[2026-07-31 13:12:40.741] E [SPLLHLS-t8090:45] Orchestrator | orchestrator.cpp:535 | Could not find Origin for the stream: [#default#live/sk_ded5c443...]
[2026-07-31 13:12:42.751] E [SPLLHLS-t8090:45] Orchestrator | orchestrator.cpp:535 | Could not find Origin for the stream: [#default#live/sk_ded5c443...]
(repeats every ~2s for 37 seconds)
[2026-07-31 13:13:17.888] I [OutboundWorker:56] LLHLS Publisher | llhls_stream.cpp:1409 | LLHlsStream::ComputeOptimalPartDuration() - Video track(0) FrameRate(30.067895)...
[2026-07-31 13:13:22.867] I [AW-LLHLS0:58] LLHLS Publisher | llhls_stream.cpp:1768 | LLHlsStream(#default#live/sk_ded5c443...) - Ready to play : Part Hold Back = 3.213000
A separate occurrence the same session never self-resolved and required a full server restart — the stream stayed at outputs: [] indefinitely, confirmed via:
[2026-07-31 13:11:11.911] W [SPAPISvr-t8081:60] APIController | controller_base.h:179 | HTTP error occurred: [HTTP] Could not find the stream: [default/#default#live/sk_bb423de5...] (404)
Full OvenMediaEngine.log for this window available on request — trimmed here for readability.
Server (please complete the following information):
- OS: Linux (Ubuntu, production VPS) and macOS (Docker Desktop) — reproduces on both
- OvenMediaEngine Version: v0.20.5 (also reproduced on v0.20.0)
- Branch: master (Docker image airensoft/ovenmediaengine:latest)
Player (please complete the following information):
- Device: Not player-specific — failure occurs server-side before any output is produced
- OS: N/A
- Browser: N/A
- Version: N/A
Additional context
Things we ruled out through direct testing: OriginMode true/false (both fail), DVR on/off
(no difference), audio codec/bypass settings (no difference), StreamWorkerCount/
AppWorkerCount ratio variations (no difference), ABR/transcoding load (reproduces with
ABR fully disabled), stream-key reuse (reproduces on fresh, never-reused keys too).
Related issues we checked but don't appear to match: #745 (different topology,
Origin/Edge + OVT), #1464 (different trigger — startPushPublishing between apps on the
same server, different error signature), #969 (closest in shape, but that report
self-recovers in ~1 minute; ours is frequently permanent until a server restart).
Describe the bug
After a WHIP stream begins publishing successfully (confirmed ACTIVE by the server), the
Orchestrator sometimes never links an LL-HLS origin for it. The following line repeats
every ~2 seconds, sometimes for 30-70+ seconds, sometimes indefinitely until the server
process is restarted:
[Orchestrator] orchestrator.cpp:535 | Could not find Origin for the stream: [#default#live/<streamKey>]No LL-HLS output is ever produced for the affected stream until (if ever) this resolves.
This is not tied to stream-key reuse — it reproduces on brand-new, never-before-used
stream keys as well.
To Reproduce
Steps to reproduce the behavior:
publisher enabled, no ABR (single bypass-only rendition), OriginMode = true.
newly-registered stream even though the stream is otherwise ACTIVE and receiving media.
We were unable to find a 100%-reliable single trigger — it is intermittent rather than
tied to one specific action.
Expected behavior
The LL-HLS origin should link promptly (within the normal few-second WHIP-ingest-to-
origin-ready window) for every stream that is successfully ACTIVE.
Relevant configuration (Server.xml)
Logs
Real excerpt from a production occurrence (2026-07-31) that eventually self-resolved:
A separate occurrence the same session never self-resolved and required a full server restart — the stream stayed at
outputs: []indefinitely, confirmed via:Full
OvenMediaEngine.logfor this window available on request — trimmed here for readability.Server (please complete the following information):
Player (please complete the following information):
Additional context
Things we ruled out through direct testing: OriginMode true/false (both fail), DVR on/off
(no difference), audio codec/bypass settings (no difference), StreamWorkerCount/
AppWorkerCount ratio variations (no difference), ABR/transcoding load (reproduces with
ABR fully disabled), stream-key reuse (reproduces on fresh, never-reused keys too).
Related issues we checked but don't appear to match: #745 (different topology,
Origin/Edge + OVT), #1464 (different trigger — startPushPublishing between apps on the
same server, different error signature), #969 (closest in shape, but that report
self-recovers in ~1 minute; ours is frequently permanent until a server restart).