OBS + Facebook Live workflow

Helldoor

New Member
Hey there,

I registered in this forum in hopes of understanding the optimal ways of using OBS with Facebook Live. To be honest, my main issue seems to be more on the FB Live, rather than the OBS side, but as FB seems to have no help forum, I decided to try my luck here.
So, here is the situation:
I am a 3d artist and an admin in a closed group, concentrated on the field of 3d (Chaos Campus). I decided to start a weekly live-review show there, going to all the posted projects in the group and providing constructive feedback to their authors.
The first show was this Tuesday, at 16:00h. On Monday, around 23 hours before the beginning of the live-stream, I made a scheduled Live event. I set it up nicely, with a cover image, title, description, date and time etc. It worked fine, people were able to react to it and confirm their presence etc. So far, so good.
Then Tuesday came. 15:58, 15:59, 16:00, 16:01... and nothing happened. The only thing the live-stream setup page (the one, where the number of viewers, the comments etc. are visible) had to say is the the stream will beginn automatically. But it didn't. Or so I thought.
So I panicked and started a new stream. Of course, in my haste I fucked up and started the live-stream from my private page and not the group, which - of course - was very confusing to the group members, who waited to watch the show. After a while, another group admit told me to cut off the current live-session and start a new one in the group. I did and finished my show there.

In the end there were 3 live-stream videos:
A 15 second one, where you see me say "Fuck" and hang on. This one is in the group.
Another one, that is on my private page.
And the last one, that takes place in the group (where it belongs) and everything is okay.

Now, to clean up my mess, I downloaded the 2nd and 3rd video and merged them to a new one, that I will upload to the group tomorrow.
The 15 sec video however, shows that my initially planned stream acutally worked, but I didn't understand that it did, so I stopped it...

And here goes my question to all of you, who are into OBS + FB Live: What is the exact workflow (in both programms), so that my next try isn't such a mess as my first one.
Thank you all in advance.

PS_ I am completely new to OBS, too, but I watched videos and figured out how to arrange my setup. Still, I am not quite sure about the usage of the streaming key and when which button to press in OBS. What I do now is press "Start Stream" and that's it.
 

Lawrence_SoCal

Active Member
Ah... FB.... Especially automated Go Live of scheduled events.

Interestingly, we stopped using it earlier this year, as Go Live would NOT start in a timely manner. For giggles, tested a couple of weeks ago, and low and behold... seems to be working again. oh and been there, done that on panic response and messing up stream

Couple of things
- Your FB Video library is HIGHLY compressed... like OMG level. It is why, as we may want to use video snippets for other purposes, that I Record and Stream. We use the local Recording for its higher quality. So, just recognize that your merged video is likely to be less than optimal... and depending on how you merged video, if that re-encoded, sorta like old-school days of VHS tape copies, there is generational quality loss with each (lossy) re-encoding [there are tools which can combine without re-encoding]
- The FB workflow used to be that you could only schedule up to 1 week in advance. That changed (sometime last year, iirc) to be able to schedule further out. The beauty of Scheduled Events is that you get a static URL, which depending on settings, does NOT require logging into FB (great for my use case)
- And be sure to note the requirement to start streaming in advance of go live. ... was 10-20 minutes, not sure the latest requirement? We tend to start stream more than 10 in advance.
- As people need time to connect, our scheduled Video start time is 5 minutes before actual start time. Using Advanced Scene Switcher, I automate switching to Scene which becomes our thumbnail (which I leave on for 40 seconds. This Scene also Starts OBS Recording), then our workflow involves a music copyright slide, then a countdown timer, then a pre-recorded intro video (3 minutes)... taking up 5 minutes... all to give people time to connect to stream
- The auto-start has very rarely started exactly on time (or even within 5-10 seconds). We were ok with 15-20 seconds, but gave up and manually started stream when consistently not starting within 20-30 seconds. But FB seems to be auto-starting for us with 15-20+ seconds now.

Our workflow is
- log into FB /live/producer, set 'Interact As' to desired group/page/etc {sorry been doing this for years, and not in location with FB computer and account info, so I can't look it up at the moment)
- Go to Scheduled events, and create event for following week. then back to /Live/Producer main page and select todays event, confirm non-persistent stream key in OBS Studio, as well as other FB Scheduled Event settings (I've seen things change when they shouldn't have)
- Start stream (as noted above) more than 10 minutes before scheduled start time... could be less.. the FB interface tells you the requirement... though I also don't trust FB to update that in a timely manner/be accurate, so caution being than valor in this circumstance, imo)
- *IF* Auto-start doesn't work after 25 seconds, I toggle off the "Go Live Automatically" {or whatever it is now...? Auto Go Live? something like that} and manually click on Go Live.
and proceed as normal

For 6+ months we've Manually started every FB Scheduled stream, and only in last month gone back to using Auto-Start. But you have to be patient. Though I've never had the patience to wait a full minute, especially with the other automation I have built-in being negatively impacted if I did that. For a less formal setting, I've be inclined to
- have a Scene which will become your video thumbnail
- Scheduled FB Video event at least 1 minute before actual / real 'Go Live' - ie talent (you) presentation starting.
- One FB auto-start actually kicks in, leave thumbnail page up for at 10 seconds, probably closer to 20 seconds??
then switch to a countdown page (our is programmatically set to countdown to a specific clock time vs a set time after selecting scene/countdown timer). I then having matching automation to switch to Main 'Live' scene
 

Helldoor

New Member
Hey Lawrence,

first of all - huge thanks for taking out of your time to provide me with all the input! It gives me a good perspective on the topic. And still - with the next Tuesday approaching - I'd gladly ask you a few fruther questions, given how experienced your are with OBS+FBLive:

  1. Recording | given the high compression on the side of FB, you said that you not only stream, but Stream and Record (so, in OBS, you first press "Start stream" and then "Record stream". What are your settings for the recorded video? And also, does the recording put a lot more pressure on the hardware? (I ask, because I already have a lot going - 3 monitors + LogiCapture + OBS + LiveStream + 3d software + Render engine (100% CPU usage) and don't want to put a lot of additional stress to that situation)
  2. Start delay | Let's take a look what happened last time: I waited for the stream to begin and it didn't. But then there was this short video of me looking stupid and desparate, curising and ending the stream after 15 seconds. So, I guess that at some point the stream actually started. But again - the only thing I saw was the message, stating that "the stream will start automatically at the set time" (probably worded in a different way, as I'm translating from German).
    Judging by what you say, I just have to be patient for up to half a minute and then the stream will simply start and everything will be okay, right? And if it doesn't autmatically start, then I will try to toggle start automatically off and manually go live. To be honest, if this option is available somewhere (will check again when I schedule the next show in the afternoon), I will probably disable it completely and just manually go live in future. This way I can make sure to press the Go Live button at the exact time I want the stream to start.
  3. Persistant vs Non-Persistant Stream Key | You seem to not use a persistant key. May I ask why not? As I don't do any other streams than my live show, I wanted to go with a persistant key. What would be the workflow with it: 1. Let FB Live give me one / 2. Paste it in OBS (in Facebook Live mode) / 3. Never change it again in future?
  4. Start stream before scheduled time | When you say this, do you mean press the "Start stream" button in OBS?
  5. Thumbnail | Is the best way to make such a thumbnail to add it to the OBS layers and then just remove it (turn off the layer visibilty), when I see that the stream has started?
I apologize for the ton of questions, but I really want to figure it out for the next show and unfortunately find no other help elsewhere.
Thanks in advance!
 

Lawrence_SoCal

Active Member
I have an i7-10700K with a single video source, SSD, and low CPU usage. So the extra encoding is not an issue. but it could be... depends on specific hardware, OS and OBS Studio settings.
The 2nd video stream (the Recording) is encode offloaded to GPU, so not a big deal for me. I don't' have the settings in front of me, but I Stream at 7,000 kbps, and my Recording is about 3X that rate.

> Start stream before scheduled time | When you say this, do you mean press the "Start stream" button in OBS?
Yes, correct. I start streaming manually in OBS Studio, well in advance of FB Scheduled Start time. I then use Advanced Scene Switcher to automate a Scene change (thumbnail scene) and start recording at FB Scheduled Start time. These later steps could be done manually, but I made enough mistake over time to automate what I could so I could focus on other aspects of presentation and live stream

Start Delay - in FB /Live/Producer (which I have open in a Windowed browser session on my desktop which I monitor the entire stream), when you go to 'setup live video' there is an indication when Facebook "goes live" (including a pop-up, at one time... latest may not have the pop-up... sorry, don't recall exactly). The /Live/Producer Video preview window also changes to show "Live" in a red oval top left of video preview image
I am working on a dual-monitor setup, with OBS Studio on left side of monitor 1, with right side up Monitor 1 having browser session covering top 2/3 of that space, and PowerPoint in Windowed Slide Show in Portrait mode on lower 2/3 (so overlap, I typically keep /Live/Producer browser window on top as I can advance slide show by simply hovering mouse over bottom of PPT window (without making window active) and use mouse scroll wheel to change slides. I can see the slide in its entirety within OBS Studio so I don't need to see full application window in my use case.

Using a Persistent Stream key is convenient, but less secure. As I monitor the live stream from /Live/Producer regardless, copying a new stream key for every stream is only a few seconds of effort ... so I opt for security over convenience

As for thumbnail... english saying is 'sky is the limit'
there are more ways you could do this than I have time to type. It really depends on what you want that video thumbnail image to be. As I use PowerPoint, using Slide #1 made sense for me along with an appropriate image.

My approach, especially as I originally needed Scene Change automation when a pre-recorded video ended, was to use the amazing Advanced Scene Switcher plugin. That in turn made an obvious method for creating thumbnail Scene. My approach is adhering to the principle of 'keep it simple, stupid'.
You absolutely could have an image (or combination of existing sources) being streamed when "Go Live' takes place. For FB, that needs to be relatively static for a period of time (exactly how many seconds? I don't know, I haven't tested. But too short a time interval doesn't work... So I leave my Thumbnail Scene up for around 40 seconds after Go Live auto-start scheduled time. That leaves 15-20 seconds to actually start (Go Live), and then 20 seconds or so of thumbnail Scene being streamed. that tends to work for me.
Even though FB has video stream content from before Go Live actual start (recall started 10+minutes earlier), your FB Video library will only include video from once Go Live actually starts, not the exact (to the second) Scheduled Start time.)
- Is a Scene needed vs simply an image source at top-most layer, turned off when no longer needed? no, either would work. and other options as well.. Personally, a lot is happening at Go Live, so I prefer some automation so I can focus elsewhere vs having to do exactly the right steps, in the right order, often in a really short timeframe, when proper focus in on your content delivery (not running OBS Studio)... my 2 cents, so to speak. Re-phrased - use whatever approach works best for you to keep a relatively static image streaming for 10-20 seconds after Facebook gets around to actually starting live stream. If that timing ambiguity doesn't work for you, then turning off FB Scheduled Video auto-start, and simply manually click Go Live in /Live/Producer at scheduled start time might work better for you

So, to be clear - to have an automatically FB chosen Thumbnail from your livestream be what you want it to be
- once FB Go Live has made the stream visible to others, you then need to wait for a period of time (in seconds, as mentioned above) before changing stream content to something else/more dynamic. Post-stream, our workflow is to always go check and make sure correct thumbnail image selected. It usually is, but not always. If correcting FB's video thumbnail is desired, sometimes FB takes a while to process video and you can't immediately 'correct' the thumbnail (annoying, but oh well) to pick first images from video [sometimes that delay is only a minute or two, rarely but occasionally, over an hour... after 15-20 minutes, I give up and correct thumbnail if required stream]

When I say relatively static... originally I have Portrait mode PowerPoint slide image taking up left 1/3 [to 40ish%] of screen with static photo image on right side. I've since changed to a live video feed but with 90+% of video image being a static background ... hence my saying 'relatively static' vs truly/completely static. In my use case, the slight movement on bottom of video isn't material to thumbnail image, so I'm ok with it being variable. In my specific use case, it also help in case someone connect super quickly to live stream to see some small motion to know stream is working (vs being frozen/glitchy)
 

Helldoor

New Member
Hey Lawrenece,

first of all, huge thanks for the long, detailed answer.
The reason I didn't get back at you earlier is, that I planned to come in here today, after my live stream, and let you know how awesome everything worked out...
Only, it fu*king didn't! The scheduled event acutally DID start (I set it to manually start) and at 4pm I pressed the "Go Live button" and went live. It's just that nobody could see that. I waited for 5 minutes for people to tune in, but the only thing I got was private messages from people, asking why the stream won't start.
So I canceled the scheduled stream. Then I just went to the group, clicked on a new post, chose the three dots in the corner (screenshot), chose Live-Video (screenshot) and then started an immediate live stream, which then immediately started. The new live stream worked like charm, people were able to see and join and for the next 1,5 hours I could just do my show without any issue...

So, the question now is: Why wouldn't the scheduled events start? What am I doing wrong?
Honestly, if this happened once again, I'd probably consider moving to Zoom, Discord or something else. Which will honestly be a big pity, given that a show in the group, which simply starts and lets people join without registrations etc. is something very convinent.

Do you have any ideas?
Thank you in advance!
Teo
 

AaronD

Active Member
Don't know if Facebook does this or not - we use YouTube - but it works wonderfully for us to just have the one stream persistently set up, not scheduled, and just start throwing data at it. When the data stops for about a minute or so, YT times out and stops. When the data starts again after that timeout, it's a new stream. No scheduling. Always ready to accept data, and that's all it takes.

Our audience knows when to tune in, and we have about 15 minutes of leader (church announcement slides with royalty-free music) so that there's something to tune in to and test your rig before we actually start.

We have a persistent stream key, which Lawrence is a bit antsy about. If someone else were to get a hold of it, they could stream to our account too. But I have a hard time believing that someone would guess it, and if they could log in to copy it, we have other problems anyway. Unless there's something I'm missing?

It wouldn't be all that hard though, to immediately create a new key when the stream is done - the button is right there on YT's dashboard - and not copy it to OBS until you're ready to start the next one, so that stealing it from there wouldn't work either.
 

Helldoor

New Member
Hey Aaron, thanks a lot for your reply! I also used a persistent stream key for both streams today. And on both I had the right preview from OBS and I could also go live (according to FB) on both, too. The only difference is, that people weren't able to see the scheduled event, but only the second, direct stream...
Can the persistent key be a possible reason for the scheduled streams to not be visible to an audience?
 

AaronD

Active Member
that people weren't able to see the scheduled event, but only the second, direct stream...
My point was to not bother with scheduling. Have it set up to go as soon as you start throwing data at it, whenever that might be, and tell your audience by other means, when to tune in.
 

Helldoor

New Member
My point was to not bother with scheduling. Have it set up to go as soon as you start throwing data at it, whenever that might be, and tell your audience by other means, when to tune in.

I understand. The scheduled events are simply very comfortable, because they directly lead the autdience to the stream and also come with reminders. If I just posted a manual reminder for something I cannot even link to, I don't think it will work out well. But I'll think about possible others means of making the audience join in.
Thanks again.
 

Helldoor

New Member
Hey there again,
here's an update: I clicked on today's scheduled event to see what happens. And - lo and behold - the 5,5 minutes of video I actually streamed before ending the scheduled live-session (because it had 0 viewers) and starting a new one, were there to see! When I click on the recorded video however, there is a lock symbol next to it, indicating that it is only me that is able to see it. This, of course, explains why nobody was able to join stream - to the the group members it was simply invisible.

Okay. The question now is - how do I change that? And why isn't this the case when I start a new stream direclty from the group comments?

If I click on next week's scheduled event and then go to "Live-Video setup", I can change the privacy settings to public, but then it says the host is going to be my profie. I can then change where the Live-Video is going to be posted at. At this point I chose the group. Then the whole event recets, asking for a new title, description etc. Sure, if this is the correct way to set up the future events, then I will delete the ones I've currently scheduled and schedule the new ones.
I just want to make sure, that:
  1. the show is ONLY hosted in the group and not parallely on my private page as well.
  2. the group members are able to see and join it, once it begins.
  3. I can manually go live, when the time of the even comes...
 

AaronD

Active Member
*That* sounds like a permissions problem on FB's side. Kinda like making your stream private on YouTube. You can do that, but no one's allowed to see it but you. Useful for testing, but if you forget (or don't know) to change that setting...
 

Lawrence_SoCal

Active Member
The benefit of NOT using a persistent key is avoiding sending stream to unintended/unexpected event/stream/etc.
All of the described above from today is a not uncommon, from either end-user error in the FB Scheduled Events settings, or a FB glitch (I've had both)

There are significant benefits of FB Scheduled Events (consistent URL, non FB folks can watch, etc). Once you get the hang of it, not a big deal.
The video being locked is due to the settings you set (or didn't check/confirm) on video distribution (most likely).
The FB Scheduled Video event setup is multiple screens. Take your time and understand ALL of it (that that big a deal, most of it, you can ignore). But it only takes one incorrect checkbox to mess you up. You may have set a Test stream (Admins only) or something similar, so auto-start actually worked, and did exactly as event created to do... it just wasn't what you expected. As for the existing short video, in FB Video library check video Distribution settings in FB.

As for moving to something else... you'll just get the other issues that platforms have. every single one has its annoyances, things you have to work-around, etc. Zoom's latest terms of service means its unacceptable for almost any use case. Assuming your community on FB, then just keep using it... FB works well enough... and I hate FB in general (NEVER had my own personal account)... but no good reason to go elsewhere for us.

Believe me, I've sat in front of keyboard and cursed out FB at length for their system. But, take a deep breath, and be thorough and attentive in setting up Scheduled Event, and then being careful where EXACTLY stream is going (again, non-persistent key makes this easy. persistent key makes it easy to overlook a mistake and get the results you mention. Though I'm sure once you get the hand of FB Scheduled Events, you'll be fine either way.)

Okay. The question now is - how do I change that? And why isn't this the case when I start a new stream direclty from the group comments?
start a stream direct from group comments? no idea what you are referring to, and doesn't sound like something I'd ever recommend/desire
If I click on next week's scheduled event and then go to "Live-Video setup", I can change the privacy settings to public, but then it says the host is going to be my profie. I can then change where the Live-Video is going to be posted at. At this point I chose the group. Then the whole event recets, asking for a new title, description etc. Sure, if this is the correct way to set up the future events, then I will delete the ones I've currently scheduled and schedule the new ones.
I just want to make sure, that:
  1. the show is ONLY hosted in the group and not parallely on my private page as well.
  2. the group members are able to see and join it, once it begins.
  3. I can manually go live, when the time of the even comes...
Yea, I definitely do NOT recommend that workflow. at all. your description to the sequence you follow points to there being a problem

I recommend Privacy settings, distribution, etc all be set as desired WHEN creating the event, not after.
When I create a new event, I'm copying prior service event, and simply updating date/time, etc. so all settings exactly as they should be (which I then check/confirm, as FB glitches have happened, or other volunteer changing something and never fessing up about it.

I login into /Live/Producer - then set who I interact as (ie group, not user account I signed in with), but parish account, for which the user account I use is an Admin for this reason and used ONLY for streaming [improvement will be when FB creates a stream only user that doesn't need to be group Admin].
Then, and only then (otherwise just asking for user-induced error), go to Scheduled Events.

As I noted above, the first thing I do is create next week's event ('cuz I'm there and it is more efficient time-wise to do this at that time), then back to /Live/Producer Scheduled events page where I see today's event and next week's event. I chose today's event/service, copy stream key, check settings (though now that our process is solid, I stopped doing this regularly or thoroughly, but expect to take weeks to a month or 2 to get there)
 

AaronD

Active Member
The benefit of NOT using a persistent key is avoiding sending stream to unintended/unexpected event/stream/etc.
Yeah, I did that! We had a guest event that used our rig to stream to their account. Then I gave them about 30 seconds worth of our leader on Sunday morning, before I figured out why our stream wasn't working. I ran that event too, so I should have known to change it back. I just forgot with everything else going on. Simple fix: stop, copy/paste, start.

I just considered that to be a simple settings change like anything else. Other things were like that too, like the sound scene, stage set, etc. The stream key was just another in that list of things to put back.

Part of my goal with this rig is to have the operator do as little as possible to "just make it work". You can't automate art, so PTZ commands and scene switches are still manual, as is the audio mix, but everything else is heavily automated:
  • Start the apps on system start
  • Start the stream 15 minutes early, including a jukebox start (MPD on a Raspberry Pi, with this command-line client in the Run action of Adv. SS) and its channel on and up in the X32, then turn that back off again when the operator takes the scene to start the service and it's no longer needed
  • Cue up the next shot when that's known
  • Switch the back-wall TV / confidence monitor for the parts that need that, via a script in the Run action of Adv. SS, which configures a USB -> DB9 serial port and dumps a string into it
  • Shutdown sequence triggered by the Goodbye scene
  • Etc.
 
Last edited:

Lawrence_SoCal

Active Member
Part of my goal with this rig is to have the operator do as little as possible to "just make it work". You can't automate art, so PTZ commands and scene switches are still manual, as is the audio mix, but everything else is heavily automated:
Completely agree, and my approach similar
In my case, as we keep FB/Live/Producer up the entire stream, in part to enable acting as Digital Usher (I have had to delete some comments, primarily folks posting personal phone #s not thinking about public nature of what they were doing), copying unique stream key is a negligible extra effort/step. Copying non-persistent stream key into OBS takes maybe 10 seconds extra, total, as we are already on that page in Live/Producer
 

Helldoor

New Member
Hey there people,

just wanted to let you know that the third scheduled session somehow actually worked - I was able to manually start the stream and people could immediately jump in.
Now I only have to figure out how to have a streaming resolution higher than 1280 x 720 and I'll be happy af.

Thank you all for your time, great help and useful tips!
 

Lawrence_SoCal

Active Member
I've been streaming 1080p30 @7mb/s to Facebook for years now
Check your Base Canvas and Output (??) settings, then Stream resolution settings.

I expect Facebook will be late to the party when it comes to generally supporting 4K and/or AV1 stream input.
 

Helldoor

New Member
Once again - big thanks, Lawrence!
I changed the Scaled Output resolution to also be 1920x1080 (used to be 1280x720).

1695373978775.png


And in the Output settings changed the bitrate from 2.500 to 6.500 Kbps. My upload speed is 50 Mbps.

1695374056837.png


Will test it out on the next stream.

Have a great weekend!
 

Lawrence_SoCal

Active Member
I strongly recommend testing in advance. Within /live/Producer, you can set a stream to be (Account) Admin only.
Then monitor Operating System Performance Monitor to check hardware resource utilization levels. you don't want any surprises on the day of after making a significant change like resolution and bitrate

Also, do you need 60fps? that is a LOT of extra processing, and unless something REALLY motion sensitive or later watched in slow-motion

just curious - Does your GPU not support encoding offload? that image above appears to indicate CPU encoding. Or is that Intel QuickSync encoding ?
 

Helldoor

New Member
Hey Lawrence,

the 60 FPS were already set. The only difference now is that I switched the Scaled Output Resolution from 1280x720 to 1920x1080.
I cannot tell if I need it or not, but if I can keep it I would have nothing against it.

As for the GPU vs CPU encoding - I don't know how and where to change it. And I am not sure if it is needed, as my CPU is generally 'stronger' than my GPU.

Here the specs of my PC:

CPU: AMD Ryzen Threadripper 2990WX, 3.0 GHz 32-core
GPU: Nvidia Quadro P4000, 8GB
RAM: 128 GB
Triple Monitor Setup at 1920x1200 resolution
 

Lawrence_SoCal

Active Member
Nice workstation. yup, plenty of CPU... But that P4000 card has NVENC built-in, freeing up the CPU from performing encoding tasks
NVENC is a dedicated circuit/chip on the GPU, specific to this encoding task. I would think it would be a bit more (power) efficient than the CPU .. but only guessing.
granted with 32-core, may be a non-issue, but I like leaving the CPU for CPU only tasks. In your case, once you get this setup down pat, you may want to start optimizing audio (compression, etc), and that will take CPU (you have plenty of CPU, no issue there), but still... why risk an unnecessary bottleneck?

Game play, sports, etc are types of video that benefits from higher FPS. For other types of content, you are losing video quality for a given bitrate to have what could be (would be in my use case) unnecessary FPS; meaning in those cases, for same bitrate, 30fps should look better. so it depends on your specific video content. For interview, typical theater, house of worship, news, discussion, etc... more than 30fps is typically wasted bandwidth.
 
Top