Multistreaming
Multistreaming lets you push a single live broadcast to multiple external platforms at once. When your stream goes live, FrameWorks automatically pushes to every enabled target — no third-party restreaming service required.
That keeps the operational source of truth in one place: one ingest, one set of playback policies, one DVR archive, one analytics surface, and multiple distribution endpoints.
How It Works
Section titled “How It Works”- Configure targets — Add push targets to your stream via the dashboard or API
- Go live — Start broadcasting as usual (OBS, StreamCrafter, SRT, etc.)
- Automatic push — FrameWorks detects the stream going live and pushes to all enabled targets
- Automatic stop — When your stream ends, all pushes stop automatically
Each push target has a live status indicator: idle, pushing, or failed.
Supported Platforms
Section titled “Supported Platforms”| Platform | Protocol | Ingest URL |
|---|---|---|
| Twitch | RTMP | rtmp://live.twitch.tv/app/{stream_key} |
| YouTube | RTMP | rtmp://a.rtmp.youtube.com/live2/{stream_key} |
| RTMPS | rtmps://live-api-s.facebook.com:443/rtmp/{stream_key} | |
| Kick | RTMPS | rtmps://fa723fc1b171.global-contribute.live-video.net/app/{stream_key} |
| X (Twitter) | RTMPS | rtmps://prod-ec-us-west-2.compose.broadcast.live-video.net:443/rtmp/{stream_key} |
| Custom | RTMP/RTMPS/SRT | Any valid rtmp://, rtmps://, or srt:// URI |
Dashboard
Section titled “Dashboard”In the stream detail page, open the Multistream tab to manage push targets.
- Add Target — Select a platform, enter your stream key, and give it a name
- Enable/Disable — Toggle targets on or off without deleting them
- Status — See real-time push status for each target
- Edit — Update the name, stream key, or target URI at any time
- Delete — Remove targets you no longer need
GraphQL API
Section titled “GraphQL API”Add a Push Target
Section titled “Add a Push Target”mutation { createPushTarget( streamId: "stream-global-id" input: { platform: "twitch" name: "My Twitch Channel" targetUri: "rtmp://live.twitch.tv/app/live_xxxxxxxxxxxx" } ) { id name platform targetUri isEnabled status }}List Push Targets
Section titled “List Push Targets”Push targets are available as a field on the Stream type:
query { stream(id: "stream-global-id") { id name pushTargets { id name platform targetUri isEnabled status lastError lastPushedAt } }}Update a Push Target
Section titled “Update a Push Target”mutation { updatePushTarget(id: "push-target-global-id", input: { isEnabled: false }) { id isEnabled status }}Delete a Push Target
Section titled “Delete a Push Target”mutation { deletePushTarget(id: "push-target-global-id") { success deletedId }}Bandwidth Considerations
Section titled “Bandwidth Considerations”Each push target consumes upstream bandwidth on the origin node proportional to your stream’s bitrate. For a 6 Mbps stream with 3 push targets, the origin node uses ~18 Mbps of upload bandwidth for multistreaming alone.
Keep this in mind when:
- Streaming at high bitrates (4K, high-FPS)
- Adding many simultaneous targets
- Using nodes with limited upload capacity
Troubleshooting
Section titled “Troubleshooting”Target shows “failed” status
- Verify your stream key is correct and hasn’t expired
- Check that the platform isn’t blocking your IP or account
- Some platforms require additional setup (e.g., Facebook requires creating a live broadcast first)
Push doesn’t start when stream goes live
- Ensure the target is enabled (not just created)
- Check that your stream is actually live on the origin node
- Review the event log on the stream detail page for errors
High latency to external platforms
- This is normal — external platforms add their own buffering (typically 5-15 seconds)
- The push from FrameWorks is real-time; additional delay is on the destination platform’s side