How To: Live-Stream To Multiple Platforms Simultaneously. OBS to nginx to DLive, Restream, Twitch, YouTube

in #tutorial7 years ago (edited)

Imagine this scenario:

  • You're a live streamer and you built a following of faithful viewers.
  • Your channel's growth stagnates lately but you want to become bigger.
  • You discover a new alternative streaming platform and want to try it.
  • You like the new platform but you don't want to abandon your hard-built, faithful viewership on your original platform.
  • You don't have to decide between them, you can use them all at the same time!

Whether you can relate to this scenario or not, you clicked my article, so chances are that for whatever reason you need to or want to do this. ;-)
Maybe just for the sake of it (like me, because I can) or for the potential of getting viewers over from one platform to another, for example from twitch.tv to dlive.io or vice versa.
Another nice side effect: this will give DLive more exposure on other platforms and get new users interested in both DLive and Steemit.

Here is a step-by-step tutorial on how to do that. I won't focus too much on generally setting up each individual application or service in detail, but more on how to fill the missing links between them.

Overview

Open Broadcaster Software (OBS) streams to a local proxy server (nginx), which relays your stream to multiple destinations via the RTMP protocol.
restream flowchart.png

Steps:

  1. nginx Download + Setup
  2. DLive Settings
  3. (Optional) Restream.io Sign Up + Setup
  4. OBS Settings
  5. Start streaming to multiple platforms simultaneously

Step 1: nginx

  • Download nginx with the RTMP module included.
    To save time, I used this precompiled version of nginx. You could also use this newer one or compile the latest version yourself, I didn't try it yet though.

  • Extract nginx to a folder of your choosing (e.g. C:\Program Files (x86)\nginx-rtmp-win32-master)

  • Configure nginx
    Go to the conf subfolder and edit nginx.conf (I use Notepad++ for better readability).
    If you already know the RTMP URLs and stream keys of the respective platforms, you can enter them now. Otherwise, keep nginx.conf open to fill the blanks later.
    In the screenshot, you can see three destination servers (the second one is inactive/commented out by using # in front of the text)
    nginx conf blacked.png
    You can add as many destinations as you want by adding another push line, consisting of the RTMP URL ended by a semicolon:
    push rtmp://[Streaming Server and Key];
    The URL syntax differs from platform to platform, be sure to copy it correctly.

  • Start nginx.exe
    If configured correctly, it will be listening on port 1935 for incoming RTMP transmissions. You can skip to step 4, if you have already set up your streaming platforms.
    If nginx doesn't start, check the error.log in the logs subfolder (e.g. C:\Program Files (x86)\nginx-rtmp-win32-master\logs)

Step 2: DLive Settings

On dlive.io, click Go Live

  • Make sure Current Transcoder is set to DLive (Update | v0.6.0: Our Most Exciting Update!)
  • Get Server URL and enter it into nginx.conf like described in step 1:
    rtmp://stream.dlive.io/live?key=[Stream Key]/[Stream Name]
    dlive encoder auth.png

Step 3: (Optional) Restream.io Sign Up + Setup

Theoretically, you wouldn't need restream.io, you could use nginx locally for an unlimited number of output destinations.
In reality, you may face the problem of limited upstream bandwidth though.
To solve that problem, I use nginx to forward the stream to only two destinations: DLive and Restream.io. From Restream.io, you can then forward to all 30+ supported destinations for free.
You may wonder why not just stream directly from OBS to restream.io?
Well, you can do that, but not for free. They don't support DLive yet, so you would need the custom RTMP option, which costs $ 14.99 / month.

restream dashboard.png
Restream.io Dashboard

  • Get RTMP URL of your nearest/fastest Server
  • Enter it into nginx.conf like described in step 1 (e.g. rtmp://eu-central.restream.io/live/[Stream Key])

Step 4: OBS Settings

obs stream settings.png

  • In OBS Settings, go to Stream.
  • Select Stream Type Custom Streaming Server
  • Enter the RTMP URL rtmp://[Local IP Address]/live/
  • Stream key can be anything because we don't have authentication enabled in nginx.

Step 5: Start Streaming

Once everything is set up correctly:

  1. Start nginx.exe
  2. Start OBS
  3. Go Live on DLive
  4. Start Streaming in OBS

obs cam with chat.png
OBS scene with camera and browser chat windows

Congratulations, you're now streaming to multiple platforms simultaneously!

  • Check your channel on each platform to verify the stream is running fine.
  • Monitor each channel's chat room for best viewer interaction. There is a nice feature on Restream.io, combining multiple chat rooms.
  • Have fun.

I hope you liked my tutorial, thanks for reading! Let me know in the comments if you have any questions.


Help me out using these referral links

  • busy.org - the largest and most feature-rich alternative to Steemit
  • Get more followers with
    SteemEngine / https://steemengine.net/join?r=2664

My videos and live streams

dlive.io/@spreadfire1

I'm not really active there, but if you wanna check out my old content:
twitch.tv/spreadfire1
youtube.com/spreadfire


My latest top articles:

Sort:  

Although, I am not a broadcaster but it is good to know something like this method exist. You really nail it to the head @spreadfire for making us knew about this tactics. It help somehow to lessen the burden of broadcastibg live. Great information

Thanks @hiroyamagishi! I'm glad you like it. Although my steemit name is @spreadfire1, the other one must be an imposter 😉 just kidding

valuable post. need to resteem for my future references. I need it. thanks again

I'm glad you find it helpful, thanks for reading and resteeming! :-)

Hey! I loved the tutorial! I was wondering if you could clarify for me what im actually supposed to put in there? or tell me how to find it? thanks in advance!
image.png

Hi @thatterrioguy,
You can use this rtmp address:
rtmp://localhost/live/

So just that will work? thanks dude! You should do an update on this article now that this is going to be sought after more after the dlive thing....

Posted using Partiko Android

Nice detailed post. That's the kind of content that should be promoted on steemit

Beep bop, this is @pushbot.
I just received a signal from the Mother Ship that you may require a push.
You just got a 8.88% upvote courtesy of @howtoweekly!


Message from the Mother Ship:

You can earn daily profit by delegating SP to make @pushbot stronger. Delegators receive a share in 95% of the earnings.

Click one of the links below and start earning :)

10 SP20 SP50 SP
100 SP200 SP500 SP
1000 SP2000 SP5000 SP
Any Other Amount

Fabulous article, even though I will have to go back and reread it a couple times to process everything. My husband and I were just talking about how to cover all avenues to continue to grown and expand out business.

Okay I have a really big important time sensitive question. Lol. I'm Omi by the way. Hi. Last year I was researching multistreaming and I'm wondering if you know this set up can also multi-stream to Facebook and Periscope. I heard Periscope has a new streaming api or something. Have you done it? I'm possibly looking to do a big steem campaign on Saturday. Thanks @spreadfire1

Hi @omitaylor,
Yes you can :-)
I haven't tried those two platforms, but the principle should be the same like in my article. Get the rtmp URL of each respective platform and enter it in nginx.conf

Okay so restreem.io has free periscope, but Facebook is a custom rtmp that you have to pay for on resteem.io. So would it be more efficient to use periscope within restreem.io and fb at the nginx point? Restreem.io keeps your ram and bandwidth from running out, right?

This is a legit guide my man

very very good post🙏🙏
thank you for share post❤
If you have time to visit my blog

Great post!
Thanks for tasting the eden!

just the information I was looking for thank you!

I'm glad I could be helpful :-)

which you post very good .... I've read it .. as a reply to you want to follow me and vote my article

Congratulations, your post received 10.20% up vote form @spydo courtesy of @spreadfire1! I hope, my gratitude will help you getting more visibility.
You can also earn by making delegation. Click here to delegate to @spydo and earn 95% daily reward payout! Follow this link to know more about delegation benefits.

You got a 1.73% upvote from @oceanwhale With 35+ Bonus Upvotes courtesy of @spreadfire1! Delegate us Steem Power & get 100%daily rewards Payout! 20 SP, 50, 75, 100, 150, 200, 300, 500,1000 or Fill in any amount of SP Earn 1 SBD Per 1000 SP | Discord server

You got a 50.66% upvote from @t50 courtesy of @blem!
95% of all liquid income goes to the people who invest by delegating to the bot.
5% goes to @madstacks for his curation efforts with #upfundme.


To use this service send a minimum of 0.005 SBD or STEEM to @t50 with the post you want upvoted as the memo.
For a limited time top bidder will get 15+ additional upvotes!
Low Minimum Bids!
Increase Your Rep!
Draw Attention To your Post.
Earn Passive Income By Delegating SP to the Bot.
Overbid Protection
Voting processed every 2.4h (2,880 blocks).
@t50 follows all followers!


If you do not want to receive upvotes from @t50 you can ask to be blacklisted by replying to this comment.

You got a 14.24% upvote from @dailyupvotes courtesy of @spreadfire1!

Please upvote this comment to support the service.

You got a 27.71% upvote from @emperorofnaps courtesy of @spreadfire1!

Want to promote your posts too? Send 0.05+ SBD or STEEM to @emperorofnaps to receive a share of a full upvote every 2.4 hours...Then go relax and take a nap!

You got a 98.62% upvote from @brandonfrye courtesy of @spreadfire1!

Think well in the post about how to reach the top of the peak, from the platform of viewers, from different platforms through different streams of live streams, DBL, Restrict, Twitch, YouTube to NBX, OBS, for example, invite people to see everyone on different days.

Congratulations @spreadfire1! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

"To save time, I used this precompiled version of nginx. You could also use this newer one or compile the latest version yourself, I didn't try it yet though." why do you link it then...

Hi @vanvaldenburg!

why do you link it then...

There are people who don't trust precompiled software by some random dude because there could be malicious code in it. I, for my part, decided to prioritize the lesser time consumption higher than the small uncertainty of malicious software. Also, it is in the nature of software, that there are improvements made, bugs fixed, and updates get released over time. Just to name two good reasons, why you would want to use a newer precompiled version or compile one yourself.
Since the older version works for me, I will keep using it for now. Maybe you heard of the phrase "Never touch a running system". ;-)
I hope I could clear this up. :-)

it just doesn't work, nginx has no errors and i can start the stream in OBS but nginx never sends out anything to the rtmp urls i specified

Hi @vanvaldenburg!
Please make sure you read the instructions thoroughly and followed them correctly.
If so, let's narrow down the possible error causes.
Is the RTMP URL correct? Did you successfully stream to it before, without the nginx layer between?
If yes, the problem could be in the nginx configuration.
Is there an error.log existing in the logs subfolder of nginx (e.g. C:\Program Files (x86)\nginx-rtmp-win32-master\logs)?
This usually gives a pretty good idea about the problem's cause.
Please let me know if you made any progress or if there is anything you need help with.

thanks for wasting my time with this garbage tutorial