Live streaming workflows
Live streaming broadcasts video content in real-time as it is generated. This guide covers the complete workflow from configuring input signals to delivering live streams to your audience.
Prerequisites
Before you begin, make sure you have:
- Access to your MK.IO account
- Cloud storage connected for recording
- Software or hardware to generate a live video signal (for example, OBS Studio or a hardware encoder)
- RTMP or SRT streaming capability
Understanding live streaming
Live streaming broadcasts video in real-time as content is generated. Common use cases include:
- Live events — Conferences, concerts, sports broadcasts
- Live interviews — Real-time conversations
- Fake live — Pre-recorded content streamed as if live
- 24/7 channels — Continuous broadcasting
In all cases, content continuously arrives at MK.IO, which packages it for distribution to your audience.
Preparing your signal source
To stream to MK.IO, you need software or hardware that captures your content and sends it via RTMP or SRT protocols.
Protocol overview:
- RTMP — Established, widely supported (YouTube, Twitch, Vimeo). Delivers pre-encoded H.264 video and AAC audio.
- SRT — Modern protocol offering superior reliability and security. Increasingly used in professional workflows.
This guide uses OBS Studio with RTMP for simplicity.
Setting up OBS Studio
Install OBS Studio
Download OBS Studio from obsproject.com (opens in a new tab) (Windows, Linux, or Mac) and launch the application. You see a black preview with controls and source lists.
Add a test source
- Click + under Sources.
- Choose Browser.
- Name it
Clockand paste this URL:https://vclock.com.
This creates a live clock for testing. Minimise OBS and return to MK.IO to configure the receiving end.
If the clock site shows a cookie consent banner, right-click the browser source and select Interact to accept cookies.
Creating a live event
- Go to your MK.IO project dashboard at
https://app.mk.io/project/<your-project-name>. - Navigate to Create > Live Events.
- Click + Create Live Event.
Basic settings
- Name: A descriptive identifier such as
live-tutorial - Description: Optional additional information
Event type
Live passthrough mode:
Live passthrough requires advanced streaming knowledge and is not recommended for beginners.
- MK.IO receives RTMP input and packages it for streaming without modification.
- The stream must be pre-encoded at the source (for example, by OBS).
- For adaptive bitrate streaming (ABR), encoding must be done at the source.
Live encoding mode (recommended):
- MK.IO processes the incoming stream and creates multiple resolutions.
- MK.IO automatically generates adaptive bitrate streaming (ABR).
- Supports both RTMP and SRT input protocols.
- Suitable for most use cases.
Adaptive Bitrate Streaming (ABR) creates multiple versions of your live stream at different bitrates and resolutions. The player switches between versions in real-time based on network conditions, device performance, and screen size, ensuring smooth playback.
Recommended configuration
- Event type: Live Encoding (720p) — a good default quality
- Input protocol: RTMP
- Archive window length: How long recordings are retained
- Storage account: Your connected storage for recordings
- Output key frame interval:
2(recommended) - Image fitting: Auto size
- AI pipeline:
- None — no additional processing
- Predefined_ACSLiveTranscription — for automatic live subtitles (specify ISO language code)
Click Review then Create to finalise your live event.
Setting up streaming infrastructure
Live content requires two infrastructure components before it can reach viewers:
The two components
The delivery infrastructure
The access permissions and URLs
Creating a streaming endpoint
If you have not already created an endpoint:
- Go to Streaming Endpoints at
https://app.mk.io/project/<your-project-name>/streamingEndpoints. - Click + Create Streaming Endpoint.
- Configure:
- Name:
TutorialEndpoint - Base URL:
tutorial - Type: Shared (cost-effective for this guide)
- Name:
- Click Create then Start.
Endpoint types for live streaming:
- Shared — Up to 200 concurrent viewers, cost-effective
- Dedicated — Up to 10,000 concurrent viewers, better performance
- CDN — Unlimited viewers, maximum performance, lowest latency
Creating a streaming locator
Before starting your live stream, configure the streaming locator:
- In your live event, scroll to the Locators section.
- Click + Create Locator.
- Configure:
- Name:
live-tutorial-locator(unique identifier) - Streaming policy:
Predefined_ClearStreamingOnly(streaming without protection) - Content key policy: Leave empty unless you require DRM protection
- Expiration time: Leave empty for a stream that does not expire
- Asset filters: Leave empty unless you need content modification
- Account filters: Leave empty unless you need account-level filtering
- Name:
- Click Add.
Unlike VOD, you cannot apply the streaming locator until the live stream starts. You apply it in the next step.
Going live
In your live event interface you see:
- The input URL for sending your stream — copy this now
- The streaming endpoint (must be running)
- The streaming locator (configured but not yet applied)
Configure OBS for streaming
- In OBS, go to Settings > Stream.
- Configure the connection:
-
Service: Custom
-
Server: The input URL you copied, without the
/streamsuffixrtmp://in-707ee7ae-a496-42b9-a450-0a6895af6a68.uksouth.streaming.mediakind.com:1935/527ecc1d-2e14-49ef-86f0-778cba76b3c0 -
Stream Key:
stream
-
- Click Apply and OK.
Start the stream
- Start the live event in MK.IO.
- In OBS, click Start Streaming — this sends your feed to MK.IO.
- Once MK.IO receives the stream, apply the streaming locator.
- MK.IO generates your playback URLs in HLS and DASH formats.
Your stream is now live and ready for viewers through MK Player or any compatible player.
Monitoring your stream
OBS status indicators
The status bar at the bottom of the OBS window shows:
- Bitrate — Data sent per second. Should be stable and green.
- Dropped frames — Should remain at 0%. A rising count indicates network or CPU issues.
- FPS — Frame rate being sent (typically 30 or 60).
- CPU usage — Keep below 60%. Avoid 90%+ as it causes quality degradation.
MK.IO stream status
- Return to your live event page in MK.IO.
- Verify the stream appears in the built-in player.
- Confirm that playback URLs are visible for HLS and DASH formats.
- Test the URLs in MK Player or another compatible player to confirm viewers can access the stream.
You notice a delay between OBS input and MK.IO player output. This is expected. Typical delays are 15–30 seconds, which MK.IO optimises compared to standard solutions (50–60 seconds). With low-latency players, delays can be as low as approximately 20 seconds.
Sharing your live stream
Once your streaming locator is applied, you have access to:
Playback URLs:
- HLS:
https://tutorial.uksouth.streaming.mediakind.com/.../manifest(format=m3u8-cmaf) - DASH:
https://tutorial.uksouth.streaming.mediakind.com/.../manifest(format=mpd-time-cmaf)
URL structure:
https://tutorial.uksouth.streaming.mediakind.com/<locator-id>/<live-event-name>.ism/manifest(format=mpd-time-cmaf)These URLs work with:
- MKPlayer — MediaKind's advanced web player, included with MK.IO
- Dash.js — Official DASH reference player (opens in a new tab)
- Akamai Player — Supports HLS and DASH with low latency (opens in a new tab)
- HLS.js — HLS web player with detailed settings (opens in a new tab)
When viewers access live streaming URLs, egress transfer costs apply. See MK.IO pricing (opens in a new tab) for details.
Recording and playback
Your live stream is automatically recorded to your connected storage. Once you stop the event:
- Go to Outputs in your live event.
- You see an asset containing the complete recording.
- Click the asset link to access the VOD version.
This recording becomes a standard VOD asset that you can process with transforms, create additional streaming locators for, or use for distribution.
Stopping your stream
When your event concludes:
- Click Stop on the live event page in MK.IO.
- In OBS, click Stop Streaming.
- If the streaming endpoint is no longer needed, stop it to avoid unnecessary costs.