Multistreaming via OBS

This is a work-in-progress…

Multistreaming (aka multicasting) is simply being able to stream to different platforms simultaneously. Note that each specific platform has their own requirements (to qualify for live streaming). None of that will be covered here. As for the how, there are different ways to achieve this, each with their positives and negatives.

Restream.io

The free version of Restream.io allows streaming to two platforms (paid allows streaming to 30+ platforms simultaneously); OBS is reconfigured to stream directly to Restream (where you setup your Twitch and YouTube stream key info). While it’s not my preference because it is now another point of failure and adds another layer of latency to the stream and chat (both of which are worse for YouTube).

Restream handles the bandwidth for the multicasting (OBS just sends that one source). For some streamers, this may not be ideal (like they want to stream to the different platforms at specific bitrates). Restream does not have this level of granular control (everything is setup on their website via a fairly easy to follow step-by-step guide).

Restream does provide a multichat panel for whatever platforms that have been setup. The only downside is any native emotes aren’t displayed in this chat panel. There are alternative methods but those are better covered in another article.

Caveat

The YouTube side can sometimes fail to be created properly via Restream because of the way the whole live broadcasting setup works on YouTube. What I normally recommend is doing a test stream directly to YouTube first to eliminate this possibility.

In OBS, go into Settings -> Streaming and select YouTube – RTMPS. Select the Connect Account (Recommended) and sign in to your YouTube account.

The OBS control section may look a little different (for YouTube Live). Select the Manage Broadcast button and then Create New Broadcast tab (this is the same thing if you use +Create and Go Live on the YouTube website where you can create a new broadcast). Click the Remember these Settings box, enter a title, privacy should be Public, select the appropriate category, No for “Is this video made for kids”. Click the Create broadcast and start stream and check to see if you are able to go live on YouTube. If so, you can end the broadcast (this will create an initial streaming event which Restream will now see).

An alternative way to create a seed live event is via the YouTube website. Click the +Create and Go live. Enter in a title, description, how the live broadcast will be handled (streaming software), select if you want live chat/live chat replays, who is allowed to chat, etc

Once all of this is setup, going live will look like the following.

Once this initial YouTube live stream event has been verified as working, the broadcast can be stopped and the rest of the Restream setup can be continued with. Change back the Streaming service setting from YouTube to Restream.io (you will need to reconnect and authorize your Google/YouTube account again).

Once reconnected (and the 3 Restream dock panels display in OBS like the image below) try starting a test stream. It should hopefully work since it should use the broadcast created above (you can use the Restream Stream Information dock panel to update the titles for both Twitch and YouTube). If you click the Edit for Twitch or YouTube, you can edit the category).

Similarly, accessing the Restream.io site via a mobile web browser, will allow changing titles/categories while IRL.

NOTE: Recently, Restream’s relay to Twitch has encountered intermittent reliability issues where the Twitch streams ends up cutting out and/or buffering heavily. Because of that, I highly recommend moving away from it and using SoraYuki’s Multiple RTMP Outputs (see further below).

Aitum Multistream

Aitum Multistream is a plugin for OBS. This plugin takes your existing OBS encode and allows you to multicast it to your target platforms. It does require having adequate bandwidth for each stream being multicast.

Once the plugin is installed, its control panel show up as a dock (and is accessible via the Docks menu). The following is for Aitum.

The “major” issue for Aitum is that for each encoder (in this case, Twitch and YouTube), the Start and Stop streaming buttons for OBS does not control them both. I’ve always found that the Twitch encoder starts and stops, but YouTube requires manually starting and stopping (clicking the button on the main canvas on the Aitum dock).

This is extra important for those doing IRL mobile streaming and using remote commands (such as via NOALBS) to control the starting and stopping of their stream in OBS. Aitum will not be a usable solution for this mobile use case (as a desktop streaming option, it works well though).

Multiple RTMP Outputs (SoraYuki)

This is another OBS plugin (which also functions as a dock) that is similar to Aitum except that it does control all encoders (once they are enabled) via OBS’ start/stop streaming button (this will also work with NOALBS ability to use remote chat commands for starting and stopping the stream).

I personally recommend this as a multistreaming solution since your streams are sent out directly to the targets ingest servers from your OBS (unlike Restream.io which introduces additional points of failure). Similar to Aitum, you need sufficient bandwidth to handle each stream that is being multicast. The only downside is the titles for each target streaming platform will need to be set separately (for the following setup, YouTube’s title will need to be changed from YouTube Studio).

The installation and setup isn’t completely user friendly. Windows has both an installer and a zip archive (the latter is useful for those who have their OBS setup as a portable self-contained environment; it requires extracting/copying the folders into the plugin location for the portable OBS installation). For most regular use cases, the .exe installer version will install the plugin on your C: drive (if you try to change the location, the installer will tell you not to change it).

Once installed, launch OBS. The plugin (if properly installed) will be located under the Docks menu as “Multiple output”.

Select “Multiple output” and the following window will appear. Move this to wherever it is convenient in your layout. Click the “Add new target” button.

The following “Streaming Settings” window will open up. Note that the main OBS setting for Stream – Service should be set to Twitch. If you are moving from Restream.io to this plugin, change the Stream service setting in OBS from Restream.io to Twitch (and either authenticate Twitch again or re-add the Twitch stream key).

The targets in the settings for RTMP Multiple Output are for any other streaming platforms that are being multicast to.

For this example, we are adding YouTube.

Name the “New Target” with a descriptive name (in this case, YouTube). The protocol will be RTMP. The URL and Stream key you will need to get from YouTube Studio. The easiest shortcut is to go to the YouTube website, click the “+ Create” and select “Go live”. This will bring up the following screen.

Copy the Stream URL to the URL field in the “Stream Settings” window for the plugin and do the same for stream key.

Make sure that “Sync start with OBS” and “Sync stop with OBS” and enabled (checkmark in the two boxes like the above image). This is what will automatically start/stop this encoder target (YouTube) whenever the Start/Stop Streaming button is clicked in OBS (similarly, the start and stop chat commands for NOALBS will also work because those commands control the same Start/Stop Streaming button).

Not streaming
Streaming
Stopping stream
All encoder targets stopped

NOTE: YouTube being YouTube can introduce some problems such as with the caveat mentioned before regarding how its live streaming broadcasting is setup. It sometimes may fail to connect the stream (once started from OBS) to that created event (manually stopping and starting YouTube in the “Multiple output” dock usually fixes it as does the Stop all/Start all buttons below the Add new target button (it is therefore best to do an initial series of tests from the actual desktop before doing IRL sessions). Once a stream session has started and stopped properly, it should work from now on (but it does break on occasion).

Additionally, the default size of the “Multiple output” dock is small where it can hide additional target configurations. It is suggested increasing its size (drag from the edges) to make sure there aren’t any additional targets for the same platform that has been duplicated (especially for YouTube where you can have a primary and backup where each has to have a different stream key). You will know there is an issue (invalid configuration caused by a duplicate target) if YouTube fails to go live or gives error messages in YouTube Studio that look something like “Multiple ingests are using the primary URL. Send one stream to the primary ingest URL and the other stream to the backup URL.”

Multiple Chats

For seeing multiple platform chats, I tested Speechchat (browser based) for seeing the combined Twitch and YouTube chats. This one is also easy to setup but may not be suitable for using IRL because of how tiny the chat looks. Badges and emotes show from both platforms (but animated ones only show the first frame). If you give Speechchat full access to YouTube, you can also send chat to it (Twitch chat automatically gives access).

For those streaming via an iPhone, one of the main streaming applications (Moblin) allows for viewing chat on your screen (on a paired Apple Watch) from multiple platforms (these need to be setup in the chat section) that it supports (Twitch, YouTube, Kick, AfreecaTV, any “open” streaming platform that you can get your channel ID for).

Third party applications (iOS and Android) like IRLLink (Twitch, YouTube, Kick) can also be used. (Note: for whatever reason, YouTube is now missing from the app). Stream buddy is a companion app for Android that supports Twitch, YouTube, and Kick chat.

Note that this is for the streamer to view. Twitch has restrictive policies regarding showing combined platform chats as an overlay on stream (I have personal opinions on that elsewhere).