Fix YouTube Dual Stream + Vertical RTMP - #6162
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The newly added “YouTube Dual Stream” test does not currently configure the custom destination on the vertical display, so it doesn’t reliably guard the reported regression.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Fixes a dual-output edge case where YouTube dual stream combined with a custom RTMP destination on the vertical display could prevent the vertical stream from ever going live, due to incorrect destination classification and an un-awaited async ingest setup in the Restream flow.
Changes:
- Corrected vertical dual-stream detection to avoid treating “YouTube dual stream + vertical custom destination” as a single-target vertical output.
- Updated
RestreamService.setupIngest()to properly await per-display ingest configuration in dual output mode. - Added a YouTube dual-stream e2e test scenario (needs an adjustment to actually cover the vertical custom destination case).
File summaries
| File | Description |
|---|---|
| test/regular/streaming/youtube.ts | Adds a “YouTube Dual Stream” test flow including custom destination scenarios. |
| app/services/streaming/streaming.ts | Fixes vertical dual-stream classification logic to prevent settings collisions with custom destinations. |
| app/services/restream.ts | Awaits dual-output ingest setup work so failures propagate to surrounding error handling. |
Review details
- Files reviewed: 3/3 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| // Test custom destination with vertical display | ||
| await clickGoLive(); | ||
| await waitForSettingsWindowLoaded(); | ||
| await goLiveWithDualOutput('youtube'); | ||
| } finally { |
BundleMonFiles updated (1)
Unchanged files (3)
Total files change +61B 0% Final result: ✅ View report in BundleMon website ➡️ |
Fix YouTube Vertical Stream Never Going Live When Combined With a Custom RTMP Destination
Issues
For a YouTube dual stream with a custom RTMP destination assigned to the vertical display, the vertical YouTube stream silently never went live. The horizontal side worked fine, and no error surfaced anywhere.
isVerticalDualStreamDestinationinapp/services/streaming/streaming.ts:599-602checked the wrong scope.RestreamService.setupIngest()inapp/services/restream.ts:768-790didn't await completion. Any error thrown inside became an unhandled rejection that never reached thetry/catcharoundbeforeGoLive(). So even when this method should have fixed the vertical display's settings, the correction could have or silently failed)by the time the vertical OBS streaming output was actually created.Fixes
isVerticalDualStreamDestinationnow verifies the YouTube vertical relay really is the only thing on vertical so a custom RTMP destination on vertical now correctly falls through to the restream/multistream path instead of colliding with the YouTube relay on the same settings object.setupIngest()'s promise is now correctly awaited.Also added a
YouTube Dual Streamtest.Files changed:
app/services/streaming/streaming.ts,app/services/restream.tsPerformance Implications
None on the success path. The
Promise.allchange insetupIngest()now correctly awaits instead of fires-and-forgets, no additional work added.