A church, a school or a small events team that broadcasts every week almost always runs the same setup. OBS on a laptop, Go Live to YouTube, then a link or an embed dropped into a WordPress post. None of that is a mistake. It costs nothing, the encoder settings are documented in a hundred places, and YouTube brings viewers who would never have found your mailing list.
The cost arrives after the broadcast ends. Viewers finish the service or the talk on YouTube's site, inside YouTube's recommendation panel, and the recording sits in a library your organisation does not control. Whoever runs the stream also edits the post twice, once to swap in the live embed and once to swap in the replay.
The whole broadcast can run from your own site instead. Four steps get you there: turn the live feature on, create a stream, point OBS at an RTMPS or SRT address, then place one shortcode. That shortcode handles the wait, the broadcast and the replay.
TL;DR
Live streaming is off by default. Videos > Live streams does not appear until add_filter('fastpix_feature_live', '__return_true'); runs on the site. After that, create a stream, copy its ingest address and stream key into OBS under Settings > Stream > Custom, and place [fastpix streamid="playback_ID"] on the page. Use RTMPS at rtmps://live.fastpix.com:443/live first. Use SRT at srt://live.fastpix.com:778 when the uplink is lossy or long. One shortcode shows a waiting card, then the live player, then the recording, which lands in the library as an ordinary video. Access is inherited from the stream, so a members-only broadcast needs no extra work.
Turn the live feature on before you go looking for the screen
Live streaming ships behind a filter, and the filter is off. Until it returns true, there is no Live streams item under Videos, and nothing in Settings switches it on. Almost every "I cannot find the live streams screen" question ends at this one line of PHP.
// A site-specific plugin is the safest home for this.
add_filter( 'fastpix_feature_live', '__return_true' );Putting it in your theme's functions.php works, and it disappears the next time somebody switches themes. A small plugin file in wp-content/plugins survives that. Save the file, reload wp-admin, and Live streams appears under Videos.
One neighbouring filter is worth knowing about now rather than on the day. fastpix_live_ingest overrides the RTMPS and SRT addresses, which matters if your organisation pushes outbound video through a fixed relay or a bonded uplink appliance. Both filters are listed in the developer hooks reference.
Create the stream and decide who can watch
Open Videos > Live streams and choose Create stream. Three answers are needed, and one of them is worth thinking about for a moment.
- Name. This is for you, not the audience. Use something you can find again in a list of forty, such as the service date or the event name.
- Who can watch. Anyone, Private or DRM, the same three levels the uploader offers. Pick Private now if the broadcast is for members, because the recording inherits it.
- Record it. Turn this on unless you have a reason not to. It is the setting people wish they had chosen afterwards.
The stream's row then shows three values: the ingest address, the stream key and the playback ID. The first two go into OBS. The third goes into the page.
Point OBS at the ingest address
In OBS, open Settings > Stream. Set Service to Custom, which replaces the list of preset destinations with two plain fields.
| Field in OBS | What goes in it |
|---|---|
| Service | Custom... |
| Server | rtmps://live.fastpix.com:443/live or srt://live.fastpix.com:778 |
| Stream Key | The stream key from the stream's row |
Treat the stream key the way you treat a password. Anyone holding it can broadcast on your channel, so keep it out of shared documents and out of screenshots. Rotate it if it ever reaches a group chat.
Which protocol to pick
Start with RTMPS. Every current build of OBS supports it, the transport is TCP so nothing arrives out of order, and it runs on port 443. Venue wifi and school networks almost always allow 443, because normal web browsing already uses it.
SRT earns its place when the link between your encoder and the internet is unreliable or long. It recovers lost packets on its own rather than stalling while TCP retransmits, so a picture stays up on a shaky venue connection where RTMPS would freeze. The catch is port 778, which is not open on every network, so test it from the venue rather than from the office.
RTMP vs SRT works through the mechanics of both, and why FastPix chose RTMPS over plain RTMP explains the S on the end.
Two encoder settings matter more than the rest. Set the keyframe interval to 2 seconds, because segments are cut on keyframes and a longer interval pushes delay up for everyone watching. Choose a constant bitrate rather than a variable one, so the quality ladder has something steady to work from. For bitrate values and encoder choice, the live encoder guide and seven ways to improve live streaming quality go further than this page should. Check the upload speed at the venue first, since upload speed for live streaming is the number that decides what bitrate is honest.
One shortcode covers the wait, the broadcast and the replay
Place the embed on the page once, days ahead, using the playback ID from the stream's row.
[fastpix streamid="playback_ID"]| When a visitor loads the page | What the player shows |
|---|---|
| Before you start sending | A waiting card in place of the video |
| While OBS is connected | The live player |
| After you stop the encoder | The recording, if Record it was on |
Nobody edits the post between those states. The embed renders at view time rather than being written into post content, so the page can be published, shared and indexed before the broadcast exists. Doing the same job with a third-party embed means somebody opening the editor while the service is running, and again the next morning.
The recording arrives in Videos as an ordinary video once you stop. It can be retitled, given subtitles, and embedded on any other page with the normal [fastpix id="..."] shortcode. The embed reference lists the options both forms accept, including the poster image and the accent colour. If the difference between the two workflows is still fuzzy, VOD vs live streaming is the shorter read.
A members-only broadcast needs no separate protection setup
Who can watch is set once on the stream, and the player honours it without a second configuration step. A private stream is authorised at render time against the post its embed sits in. A visitor who cannot read that page cannot play the stream, and the recording carries the same setting into the library.
That inheritance is the part that usually breaks elsewhere. The live broadcast sits behind a login and the replay quietly does not, because the two were configured in different places. Protecting paid video on WordPress sets out what each protection level stops, and what page caching does to a gated page.
Run one test stream before the next broadcast
Rehearse the whole path once with nobody watching, because the problems are never where you expect them. Turn the filter on, create a stream named Test, set Who can watch to Private and turn Record it on. Send sixty seconds from OBS at the venue rather than from the office, so the uplink under test is the real one. Load the page, watch the waiting card become the player, stop the encoder, and confirm the recording appears in Videos.
Setting up live streaming has the screen-by-screen version. The free plan covers 10 videos with no card, which is enough for the rehearsal. Teams running weekly services will also want live streaming for church and religious services and the event streaming guide.
Frequently Asked Questions (FAQs)
Why can I not see the Live streams screen in WordPress?
Live streaming is feature-flagged off by default. The Live streams item does not appear under Videos until a filter turns it on, and no toggle in Settings will do it. Add add_filter('fastpix_feature_live', '__return_true'); in a site-specific plugin or your theme's functions.php, reload wp-admin, and the screen appears. The developer hooks reference lists it alongside fastpix_live_ingest.
Should I use RTMPS or SRT for a WordPress live stream?
Start with RTMPS. Every current build of OBS supports it, it runs on port 443, and venue and office firewalls rarely block that port. Switch to SRT when the link between the encoder and the internet drops packets or runs a long distance, because SRT recovers loss without stalling the picture. SRT uses port 778, which is not open everywhere. RTMP vs SRT covers the mechanics.
What do I put in the OBS Server and Stream Key fields?
Open Settings > Stream in OBS and set Service to Custom. Paste the ingest address into Server: rtmps://live.fastpix.com:443/live for RTMPS, or srt://live.fastpix.com:778 for SRT. Paste the stream key from the stream's row into Stream Key. Anyone holding that key can broadcast on your channel, so treat it like a password.
Does the recording of a WordPress live stream save automatically?
Only if Record it was turned on when the stream was created. With it on, the finished broadcast lands in the video library as an ordinary video. From there it can be retitled, captioned and embedded on other pages with the normal [fastpix id="..."] shortcode. The page carrying the live embed switches to the recording without anyone editing it.
Can I make a live stream members-only on WordPress?
Yes, and it needs no separate setup. Who can watch is chosen when the stream is created, using the same Anyone, Private and DRM levels the uploader uses. A private stream is authorised at render time against the post the embed sits in, so a visitor who cannot read that page cannot play the stream. The recording keeps the same setting. See protecting paid video on WordPress.
Do I have to swap the embed when the broadcast starts?
No. One shortcode covers all three states. Before the broadcast the page shows a waiting card, during it the live player, and afterwards the recording. The embed renders at view time rather than being written into the post, so the page can be published days ahead and left alone.










