 Okay, I'd like to thank everyone who is joining us today. Welcome to today's CNCF webinar, How to Conduct a Great Lifestream, Open Broadcaster Software, Deep Dive, OBS. I'm Kristi Chan, Marketing Communications Manager here at CNCF. I'll be moderating today's webinar. We would like to welcome our presenters today, Spencer Crum, Program Director at IBM and Duffy Cooley, Staff Cloud Native Architect at VMware, a few housekeeping items before we get started. During the webinar, you are not able to talk as an attendee. There is a Q&A box at the bottom of your screen. Please feel free to drop your questions in there and we'll get to as many as we can throughout the presentation and at the end. This is an official webinar of the CNCF and as such is subject to the CNCF Code of Conduct. Please do not add anything to the chat or questions that would be in violation of that Code of Conduct. Basically, please be respectful of all your fellow participants and presenters. Please also note that the recording and slides will be posted later today to the CNCF webinars page that's cncf.io slash webinars. With that, I'll hand it over to Spencer and Duffy to kick off today's presentation. Take it away guys. Hey everybody. My name is Duffy. I'm looking forward to getting into this one. Hey, I'm Spencer, I work at IBM. There was a presentation two or three weeks ago with George and Chris and Alex and we wanted to keep that ball rolling. I don't know how many more of these we're gonna have but the last one focused very heavily on sort of the hard video equipment and audio equipment and specific configuration for that stuff. Duffy and I are both big nerds on the OBS, the software side. So we were like, let's talk about it. So we thought we'll do another one to kind of follow up. To pair it off what George said at the very beginning of last one, I think he's 100% correct, which is that if you check off a bunch of boxes what an open source project has, probably has a mailing list. And then a few years ago, now all the projects have a discord or a Slack or something. And then probably going forward, bigger projects are gonna have some kind of persistent live streaming thing, whether that's webinars or Twitch streams or Google streams, whatever it is, probably this format where someone's talking to their computer, pressing some buttons and there's a chat on the side and it's regular, it's here to stay. And so we wanted to provide some enablement materials for especially for CNCF member projects that are on that sandbox graduated flow that wanted to have their own. There's a lot of technology skills in the group. So we wanted to share that out. Do you have anything you wanna add though? Yeah, I think that's exactly right. I mean, especially like given the current circumstances today, like there's a lot more people just exploring or playing with it, even if they're not related to getting out there and presenting content for a particular thing. So yeah. For sure. There's a HackMD. I'll drop a HackMD in the Slack or in the Zoom chat. There's also, if you're on the CNCF Slack, there is a bang streaming channel and that is sort of a persistent way to be in touch with the other people doing the work. And the HackMD, I think we'll eventually go and get repo somewhere. Cool. So we have a brief outline. Duffy, you wanna talk about OBS install? Yeah. Parentheses on Linux with tips. I think it'd be kind of fun to talk through sort of the way that we set up TGIK and how we can get through into that stuff. Cause I think that'll be pretty relevant for most folks. So I'm gonna share my screen and we can just kind of talk through some of the stuff that's happening over there. Does that make sense, Spencer? Yes, the mute button ran away. No problem. So if you go to github.com slash VMware dash Tanzu and then you'll find the TGIK repo. And inside of this repo, we have a couple of different, this is basically where we kind of keep all of the content or persistent content for TGIK. And if you're unaware of what TGIK is, every Friday at one o'clock, myself, Josh Rosso or Joe Vita, in the past has been Chris Nova. There are a number of different folks who are pretty well versed in Kubernetes and the ecosystem in general. We'll spend about an hour and a half, maybe sometimes two hours exploring different topics that are interesting inside of the Kubernetes ecosystem in general. So if you go to TGIK.io, you can actually see all of the past or recent videos. They're all recorded and they're available there. And so like this week tomorrow, actually, I'll be doing a session on CSI and secrets integration. Last week, we did Gatekeeper and OPA. Prior to that, we did KubeKettle and plugins and cruise. So it's really just anything in the ecosystem is fair play and we can kind of dig into it. And so if you watch one of these, you kind of get the idea that we have set up the scenes and everything in a pretty consistent way to kind of like present a pretty significant, an interesting show or a way to consume that for people. We've documented that inside of our documentation folder, like how to go about that. And there's, and this has got some pretty reasonable, this is a pretty reasonable starting place, I think, for pretty much anybody that was doing wants to create just kind of a way to get started as a stream here. Right? And it relates to a lot of the topics that I think are pretty necessary. You know, some of these are pretty obvious, right? Pick a topic, create a graph. If applicable, coordinate with the upstream projects. So in our case, like we're talking about different projects and we might try and pull in folks from that project. And the way that we've set up the stream in general is that we don't bring live guests in yet, although we're working on it. And I think I'm going to try and do it here real soon. What we do though is we notify folks and then they join the chat. And then if there are questions from the audience as part of the live YouTube chat, then the project maintainer can answer those questions or I can show how the answer relates live in the stream. So it's live streaming on YouTube. That's how we do our thing. Some tips on creating a graphic which I think are necessary. And they actually, and we cover this in the documentation down below. But what we do typically is we'll grab an image from, we'll grab an image from unsplash.com, which is a great place to grab an image so that all of these are licensed to be free for use. It's also great to like thanks to people who give us those images. So I would like to thank pretty much a ton of photographers who grant license to unsplash for all of their content because there's just all kinds of really great content. And then we use those images and we overlay our own title card image. And this is kind of what you see here, right? We've created a really simple overlay that has some transparency, basically describing the channel so that when you have a thumbnail for our video you actually get to see something pretty and you have some idea of like what episode it is and all that information. This is super simple and the instructions are all encoded in the instruction sheet here. But that's kind of part of the show, right? Is you have to have some hook, something for people to come back to is like and understand how what they're watching relates to kind of a longer story. Yeah, there's a whole layer of branding and promotion around this stream if you actually wanted to be successful. Yeah, and this is like probably the simplest way to do it. Literally like it's a picture with some, with some what do you call it, persistent branding. So every picture is different, but you get a different, if it's all branded the same. So like low key way of doing it for sure. Let me create a short link with Bradley so that when we are handing out links or people wanna go and see an episode, just like I showed you before, if you go to TJKIL or one of the episodes, it will just basically relink you to the YouTube video, right? Again, super simple, low key branding. And I think there are definitely short URL tools out there. You can host your own, you can use with Bradley or one of the others. I, you know, it doesn't really matter how you wanna do it. I think you could even do this with like GitHub pages if you were feeling clever, to be honest. Like you can do this super simple. Yeah, there's probably some shenanigans you could do. Right? Exactly. But persistence so that they have, it's not just flash in the pan and can be washed afterwards is important. Yeah. So then we take care of that part. And then before the note, just like we do in this episode, we use HackMD to basically act as a great and just incredible multi-user place to create persistent notes for every episode. So just like we're doing here, right? So we lay out the outline and the abstract and all of that information. And then anything that crops up during the show, we basically, if anybody has a link they wanna share or content that they wanna share from the chat, we point them at the notes so that they can populate that. And the way that we do that is again just another rebrandly link. So in TGI case case, if you go to TGIk.io notes, then you will always go to the most recent notes, right? And so this is a pre-stage notes for tomorrow session. And you can see that basically it's just got an outline of things that we're looking forward to talking about at the beginning of the show. Moving down into live time, usually we do this with two people. We have like somebody just assisting the chat and we have somebody doing the work of actually presenting. It can be done with one person. But sometimes it's easier to have like, you know, other assistants if you can. It is, it really is. I am a firm believer that a video camera on reduces your IQ by about 25%. And that's before you're trying to do anything else. So trying to multitask and background task and stuff. With enough experience, you can do anything. But having an assistant and somebody else help is really, really useful. Yeah, definitely too. And then what we do, and then from there, once we've actually got all that stuff set up, then we start getting kind of the interesting part of the OBS set of things. And so the way that we do this in JK is that we actually use a company-based stream, but you could use your own stream. Right now I'm just gonna switch to my own YouTube channel. If you're interested in playing with YouTube or Twitch, it doesn't really matter what streaming platform you wanna use. A lot of folks are using Twitch these days. But you can do this with like a number of different, there are a number of different solutions out there for hosting that live stream. I don't think, I mean, you wanna talk to that, Spencer? Or? Oh, yeah. I mean, people go back and forth. Yeah, there are platform-specific particulars. I mean, how could there not be, right? I would say the big one is that if you just go on YouTube and you make a live stream, is that if you just go on YouTube and you make an account versus you go on Twitch and you make an account, YouTube can be better because YouTube will automatically transcode your video down to say you submit at 1080p, it will transcode it to 720p and 480 and whatever. So if you're really beaching a big, especially international audience, they need to transcode it down so that they can watch it in a reasonable frame rate. If you go on Twitch, you don't get that. So like what we would have problems all the time with is we would submit 1080p video and then people would be trying to watch Minya and they just like literally couldn't watch the stream. So that's just one example of where the platform particulars show up. Yeah, I don't know. Yeah. Twitch, unfortunately, being like a creator, in a way, a more Twitch has like, Twitch being focused on live streaming has the creator path focused on live streaming whereas YouTube live streaming is really attached to like main YouTube. Yeah. So there are ways to get your account on Twitch unlocked and stuff, but you have to like kind of play their game, which may or may not be in your cards. True. And yeah, I think you've captured a pretty important point when it comes to this whole streaming setup. Like what we're gonna talk, what we're talking through in this example, it's how to test, has how to record a live stream, but there's nothing keeping you from deciding to deliver the content that you're working on, record it, pre-record it, right? Like if you have some particularly, I mean like, and you'll see that there's tons of live content, there's tons of content on YouTube, which is just exactly that pre-recorded content that people put up and they build a channel and a brand around it, right? So yeah. In our case, a big part of what TGIK is, is kind of interacting with our community. And so we definitely want like a live piece of that, whereas like, you know, Blindness Tech Tips, for example, is looking to show like, you know, content about some particular technical thing rather than necessarily working with the community live in its show, a different thing. It's wild. And there are plenty of YouTube's and medium articles that sort of dive into it. My 10 second thesis is that the more live a video is, the lower people's standards are for your production value. So for me, I'm rambly, the code doesn't work. In a Twitch stream, I'm allowed to get away with that. In a YouTube video, maybe not as much. In a live demo, definitely not. So you got to decide where on that spectrum you want to be. The problem though, and people come to me all the time, they say, Spencer, can we record the Twitch streams and put them on YouTube? And I say, sure, you can. I'm not going to do it most of the time because when you actually watch me, and people, I enjoy live streaming quite a bit, but when you watch it not live, it's not nearly as fun to watch. It's like, okay, this is boring. Skip, skip, skip, is he done yet? No, still spelling mistakes, skip, skip, skip. Right, so take that wherever you want to take it. Agreed, and I think you're right about the interaction. Live makes it easier to make mistakes because it's live, right? So yeah, I completely agree that it definitely reduces, in my opinion, it kind of reduces the stress, but at the same time for a lot of people, I think typing in front of people, whether you can see them in the same room or not, is still going to be stressful. For sure, yeah. The platform is a weird platform that lets you make mistakes, and that's why it's so freeing sometimes. Yeah, so what I've done here, what you've watched me just do here is basically set up an event, and I scheduled it for the future, and this is basically where we start getting into some of the OBS pieces of things, right? So in my case, inside of the hack, the TGI case out of things, I need to go ahead and set up OBS so that I can stream to TGIK, but I also need to kind of create in a bit. So we'll just copy this key for now, and I'll just have it. Hacking initialized. Yeah, I would love to see what shows up over here if you're feeling creative. And we do have some questions in the chat, which we'll get to, I think we're just trying to get through, punch through this initial setup, and then we'll get to the questions. Yeah. So back on the repository, there is a, this is actually one of the neat things about OBS. There is an OBS config folder where we hold our profiles and our scenes so that you can import those directly into your OBS, whether you're on Windows or Mac. And again, we have information done here in the notes about how to go about setting that stuff up, whether you're running Linux or a Mac, you import these things in and then we kind of modify them for your particular setup. So that is all that we host on the TGI case side of things. And then inside of OBS, when you do an import, which would be like, I think it's profile import, you can import that profile, and then you can also import scene selections. And so by default in the TGI case setup, you get this setup here where you have three basic scenes. You have the title card, which is where we start, because we're basically coming off of that save thumbnail in YouTube. And then we go live by going to screen and fit to go into space. We say, welcome to TGIK. We start talking about stuff. You have to make sure that your camera is pointed at your face, that you have a good microphone. I don't have that source enabled here because I do not want any feedback in this particular session. So I've taken the input out of the picture of OBS here. And then the other neat thing to Spencer's point is that as we have this chat piece, which is basically a Linux browser embedded, and it's taking the live chat pop out from YouTube and presenting it as a column inside of the live recording. And we have, we override the CSS so that when the chat shows up, it's all black with like nice colored text. And it doesn't look like it does right now. It looks much better. And so these are all just configurations that you can actually pass to your embedded browsers and stuff. And so if you want to look into it and see how that stuff works, this is a great starting point to kind of play with those things. And then we have our little title card. And then the last scene that we do is basically screen and face where we capture a desktop scene. Now, obviously right now it's capturing like the entire desktop. And so you have that great mirror effect, you know? Yeah, the whatever that's called, but it's a thing. Yeah, dividing by zero for sure. But yeah. So I'll talk briefly about the chat. So a couple of things that happen on OBS that just make me love this thing so much. The first is that, yes, it has the ability to render anything from web onto browser or onto video. And what that really ends up being is people compile these small mini websites that you might just think of as a single component or as a single. It doesn't have a border and it doesn't have Twitter bootstrap. It's just text or image or whatever and JavaScript renders it. And that gives you a ton of flexibility in terms of animations and making your stream, whatever it is, look like it's happening on CNN. So that's really cool. The second piece about it is that the chat is what enables sort of the magic of like someone's working on a project and the chat is following along with that project and providing reactions, tips, questions, whatever it is, if you go on Twitch and you watch people playing video games, oftentimes they're playing something that isn't, it has a creative aspect to it, which is like we have to build something in Minecraft or we have to explore a dungeon together. And the Twitch streamers will use that language. They say, we, you and me, the chat, we are gonna do something together. And the chat is encouraged to share in the experience of playing the video game. And that journey of discovery can be replicated with something like programming or exploring, especially in the ops space where it's sort of like wrench until it works. That is it, that translates pretty well. Yeah, I agree. So what I'm doing here is I'm basically pointing the chat toward our little demonstration environment or that little event that I set up and then I've gone ahead and started streaming. And so you can see the stream here. And the reason I'm working this out, I'm adding this to the session here is because I wanted to show something that is pretty interesting. Now, if you watch right here in the corner, you're gonna see the word this show up eventually. You're a mad man doing Zoom and OBS and live all at the same time. Yeah. This is a... So what's neat about this though is that we can see that there is a significant delay in the streaming piece. And this is gonna be true of Twitch and it's gonna be true of YouTube. So this is another one of those tips that when you're streaming, it's super important to know that your audience is gonna be 10 to 15 seconds behind you. So you're not gonna notice it locally, but if you're actually like in the middle of a stream and you pull the audience, hey, what do you think of my shoes today? You can expect a good 10 to 15 seconds before the most active listener is gonna be able to give you an answer. 100%, you have to get good at asking questions for 45 seconds. It's a whole thing. While we're messing with settings, do you wanna talk about the blue shift thing that OBS does or the color Swapy thing? I am not particularly familiar with what you mean. Oh, you mean as a filter. Well, so sometimes I think out of a... Yeah, sometimes when you import sources in OBS, whether they're captures or browsers, sometimes they will do like a color swap from orange to blue. And I think they do that to prevent a color version of the disappearing window effect, the ever shrinking window effect. Oh, me? But I guess it's not that... It's just something to notice. So when you import a source and your text does not look right and HTop doesn't look normal, that's why. And you can fix it. It's not gonna... That's fine. I wasn't aware of that one. So it sounds like to talk about the differences in our approaches though, that you are capturing the entire screen and then doing assembly of web browser terminal, terminal, terminal, whatever you're doing, electron app, VS code, you're doing that sort of in, I guess, Linux, OS 10, whatever. You're doing that in the OS, window manager even. Yep. And then OBS is basically just slurp and ship. It's not an assembler outside of just a couple little scenes. Well, in my case, I'm actually, in the case of TGIK, it is like hack and kill works kind of situation, right? Yeah. And so I basically will have like two desktops that I'm sharing. One desktop that has, I have a tiling window manager that I use, but people do this with Macs and stuff as well, right? Where I have a full screen browser, that is my hack and be and the website stuff that I'm showing. And then my other desktop will be a full screen terminal that shows stuff. And I might go back and forth in showing how these things are working and walking through that process. But that's different, I think, than what you're referring to here. It's like, if I was gonna bring in a live guest, then I would wanna use that source in a different way. I would probably wanna define a third scene that would show that live guest. Yeah. So you have two scenes. One is desktop, one is terminal, one is web browser. Did I understand that correctly or no? I have screen and face, which is basically this, oops, sorry, I'm not sharing my screen anymore. Share my screen. So I have screen and face, which is this, right? And then if I, and I'm just capturing the entire desktop with this, right? And then what I'm showing on the desktop becomes whatever's on that desktop. So if I'm showing that, so like if I move back over to the browser scene or the browser window that I have shared, we'll see that content change because what I'm sharing now on that desktop is actually the view of the studio window. There we go. Nice. And so you actually totally just got to see how long that delay is, right? If you saw me shift screens and you saw when the shift actually showed up in the preview. Nice. Yeah. And so that helps keep me on task. I don't have to move between scenes to change what people are looking at. I can just click back and forth between tabs in the browser or flip back to the, or flip back to the content that I want them to see and have them, and they're just following where I am rather than having to flip to different scenes in OBS. Right. And I think that covers an important point of the actual use as a tool. Can I share my screen real fast? Yeah. So I kind of refer to, I kind of refer to OBS as Fiddleware. Yeah. You know, I would love to say that it's like the most primed thing, but it's not, you got to fiddle with it. In settings, you can set up hotkeys. The hotkeys can let you switch scenes. That is useful, especially at the beginning, because you can do one for be right back, one for face, one for whatever I'm showing. As you get further down, especially as you start using your whole brain on something, you need quicker switching. And so what I use is the Automatics, I have two scenes, one for the terminal, which isn't working right now, and one for the web browser. She also doesn't, I don't know why the terminal isn't working. Well, anyways, OBS, right? But what I do for that is I use the Automatic Scene Switcher. And this thing's kind of cool. And I'm sure nobody can really tell because it's very small, but it's in here. And this lets you define based on what, in my case, Windows, thinks the focused window is, that becomes a string, that string gets processed through some regular expressions, and you can select what scene you want that switch to. And so what I do is I just have a scene for the browser, a scene for the terminal, and then based on whatever I've clicked into, it will switch for me. I gotta start the Automatic Scene Switcher. And it's not a perfect system by any means, but it's the happiest I've been in a long time. So I'm over here, and I go to the terminal, and it goes to the terminal, and I go back to the web browser. And this gives the audience a really crisp view of what I'm trying to do, because I'm probably just going back and forth between these two all day. So that's one thing I wanted to talk about. In settings, I only very briefly wanted to talk about this. I think Alex and Chris did a great job talking about this. I submit in 1080p, and I do that because I have a partnered Twitch account, which is gonna downscale for me. I don't have really any advice for anyone who wants to, I don't really have a ton of advice here, except I used to stream in 720. And I think text is readable. Big enough text is readable in 720. I also, you know, am a developer advocate. So anytime I see a terminal, I make it as big as possible. It's just been drilled into me from too many presentations. So that's all I really wanted to talk about in settings. This is where you actually configure OBS to send your stream key. If you get a stream key, you can put it in here. A thing that I wish OBS had was a sense of like five saved logins that I could swap in and out instead of rotating the whole thing at once. From there, I think the other thing to talk about is just sources. So if we go to this be right back source or scene, which I'm actually like pretty proud of. This is something I made that's, that is a collaboration of me and a bunch of the IBM team. So the IBM team made me this nice be right back background with like our logo and our branding. And that's fun cause they can update it whenever we inevitably change our branding. But it's just a JPEG and it's just brought in as BRB that's at the very bottom. These sources work sort of like Photoshop layers where so further down the bottom is gonna show up at the top. That has these nice borders for me. And then I just have three web resources. I have the Twitter advocates list. So that's just a link to a Twitter list. And then I've done because of these green lines, you can tell that I've actually cropped it. So if you hold down alt and drag on the control points, you'll crop just really nice. And if you grab one of the red boxes, you'll change the size of it. And if you're having trouble and if you grab the middle, you'll drag it. And if you're having trouble lining it up, if you hold down control, it'll stop the like snap to grid that it likes to do so much. It's kind of a pain. The left and the right side, the Twitter advocates and the website are just the website. The middle is a website that I run. That's just IBM open source initiatives. The other thing that this has, and this is perhaps not necessary for you to make, but what we have is we have our own be right back or our own new follower notification utility. And that works by, is that in? Nope, that's not in there. I would say 99% of the people can get away with paying a company called Streamlabs or just making an account on Streamlabs and they'll give you nice little new follow-up alerts or subscription alerts or chat message alerts or whatever you want the alerts to be. The alerts are useful because socially what they do, in addition to the text in the chat, they give the viewers a way to interact with the streamer and the viewers, the other viewers. And so giving them the ability to write things on the screen, whether the streamer is particularly paying attention or not, makes the experience of watching a stream more engaging and that's how you get that sort of magic that leads to 30,000 people in a Twitch stream. I completely agree. Yeah, and so this is just some, DevOps person wrote some front end code, so it's not very good or anything, but something called Node CG is a framework that you can use and it was really easy to whip that up and it just watches Twitch and when I get a new follower, which I can test with this little, you know, I'm obviously just on the JavaScript console, right, but boom. And that's pretty slick, that's about all you need. Cool. The other things that are on this be right back screen are music. So I have be right back music and I have no audio for, I have audio for the new follower notification, but no audio for my mic, obviously. And that's the scene I'm the most proud of that has the most sort of going on. Other than that, it's very straightforward. You eventually end up in a point, I don't know if you did Duffy where, I fiddle with it till it works and I make it complicated and then I'm like, okay, give me the simplest thing that works because I don't, I'm just gonna break it if it gets too complicated. Yeah, we definitely keep it pretty low key. Like, do you have this stuff posted someplace where folks can see the profile or scenes and stuff? We're working on it. We, for better or for worse, scaled our Twitch presence. So there's more IBMers doing Twitch than I ever thought I would ever get on Twitch. As a result, our documentation is co-located with like real documentation on like what you do as an IBMer. That's sort of like, and here are the files. So like I would, I have to like break those, you know, operational stuff away. Fair enough, fair enough. Paul Torres has a question. How did you switch between two different apps without changing the scene? That's your follow-trick that you were showing before. The scene switcher? Yeah, the automatic scene switcher. I think that's what they're referring to. Yeah, so the scene switcher is nice. If it was working better, you would see the terminal up here on the right. But basically, yeah, when you watch, what this lets me do is hide OBS, put it on a different monitor, and then I'm just going back and forth between these two windows all day. And the viewers just are brought along for the fun. And I only have to use my brain and remember that I'm using OBS when I wanna go to something fancy like be right back or secret stuff or whatever. The other question from Mario is have you tried Elgato Stream Deck? You can remote control OBS with a push of a button. Yes, I have an Elgato Stream Deck. I used to use function f1 through f4 for streaming, for switching. That's useful mostly for me, for like, I need the face cam. And then I went to the Stream Deck for that. And then now that I'm on the scene switcher, the only thing I use the Stream Deck for is the only thing I use the Stream Deck for is this. So I can see Palsar's face on my screen. Nice. Which also works on here, for the viewers. It's fun. It's because everybody needs an it's working success gift. Okay, I think that's all I needed to show on my side that wasn't very specific. I wanna, for everybody in the back, I wanna remind them that some of the most powerful stuff in this is the web browser and then that ability to crop So if I grab this advocates list, look at that. I can crop live video. I can write critic, I can press transform. I can rotate it 90 degrees. Like, this thing is hot. Yeah, and pretty darn intuitive, all things considered. I mean, like, I completely agree with this pretty neat. There's one other setting in OBS that I think would probably be useful for folks. And this is kind of talking about sort of like the deep dive advanced stuff real quick. Yeah, do you wanna share or do you want me to? Let me click back into the share. Yeah. There's screen, okay. Now we're gonna flip this back to title cards. It's not so noisy. So you pointed out like, this is where you can put your settings. Oh, and actually inside of here, this is actually one of the things I was gonna show you Spencer, it says a website called restream.io. Definitely worth checking out because like what that can do is it can handle like the down simply and also the kicking off to other destinations. So you can stream to Twitch and YouTube. And that's actually pretty slick. So definitely if you're interested in that kind of thing. Big shout for restream, we use restream. I just don't think about it. Yeah. And then let me stop streaming here. Oh, that is important. Yeah, that's the maybe the most important thing. Stop streaming. So obviously when you're streaming, you can't modify anything inside of your configuration. But what I wanted to point out here is that by default, what you see in this output tab is this configuration. This is kind of the default. Everybody's gonna see this sort of a setup. And this right here should be a big, huge red flag for you when you're looking at your OBS settings. And the reason for that is the amount of CPU that it takes to churn a video stream using software encoding is really intense. Like, and it will totally bog down anything else you're trying to do. So if I was trying to show freeing up a Kubernetes cluster using kind and I had software encoding on, it would topple my laptop probably, right? I've actually had things crash on me in the past because of that. But usually you'll have a couple of different options. If you're on Windows and Mac, most of the stuff is already worked out for you. If you're on Linux, it can be a little tougher. And I'm happy to walk through some of those capabilities. But in your encoder, you'll have a couple of different options. And if you go to advanced, you'll have even more options. You could pick which encoder you want to use. In my case, I have a laptop that has an Intel chip and an NVIDIA chip. It's one of those, what do you call them? Bumblebee setups or whatever. And so I can actually pick either of those two video chips to do my encoding for me. I can basically offload the encoding using my NVIDIA or my Intel chip. That's awesome. Yeah, it's pretty much critical to do that. The other pro tip here is that this actually affects more than just OBS, right? Like having a working setup to handle 3D acceleration will also speed up, will also reduce the amount of compute time it takes for Chrome or any web browser to actually render pages. Like it has a long lasting effect across everything that you're doing. So if you're a Linux user and you haven't explored this, it is like critically important that you get this stuff working. Yeah. Even like your basic CSS stuff now is 3D accelerated where available. It's pretty legit. So this is one of the things, one of the ways to understand whether you got that stuff wired up correctly or not, right? You can just install the open source package, VDPAUINFO, and that will actually indicate whether you have 3D enabled on your video chip. In my case, I'm using my primary selection in my switcher here right now. My primary is Intel, right? I can tell that I have the Intel one selected, but I also have an NVIDIA chip that I could select using just the NVIDIA software for the switcher. But right now, primarily I'm on the Intel chip. So my monitor on my laptop is being driven by Intel and I have this other NVIDIA chip that's not in use. And that gives me the ability to use that NVIDIA chip for other stuff. I could use it for OBS. I could use it for learning machine learning, whatever I want to do. But in this VDPAUINFO, regardless of which video chip you choose, this tool will tell you whether you've got it wired up correctly. And if you do, it'll tell you what the backend is. In my case, it's VAPI because I'm using an Intel chip. It tells me where the driver on disk is that it's being used to incorporate that stuff. And if you're using OBS on Linux and you run this command today, it supports immediately and you don't see output that looks like this, stop and figure out how to fix that problem. And in the content on the TGIK repo, there are some good tips on how to troubleshoot that and get that working on Linux if you're a Linux user. Hi. Other things before I let this one go are things, there are other settings that you'll get indicated by your streaming receiver typically, right? Like normally when you're streaming, even if you're streaming at 1080p, it'll ask you for things like bit rate at a certain rate. It'll ask you for frames at a certain frame, key frames at a certain interval. And as you're kind of exploring that stuff inside of your streaming receiver, whether that be YouTube or Twitch or Restream or what have you, they'll usually notify you if they detect that the health of the stream is lower quality. And here is where this output, the streaming information, this is, these are the knobs and dials that you have for that, right? So in my case, zero, and if I go back to auto here and I apply that, then key frame interval will be, will be derived by OBS, not by me. And then the fascinating part is if I start my stream again and I go back to the YouTube live channel, then this will actually change from excellent connection to not enough key frames per second. It'll actually warn me about that, which is actually kind of interesting. And so those are also some kind of, some of the more interesting tips is that you're gonna wanna make sure that you have, that you understand like what bit rate the receiver wants to see and what, how many key frames per second, that kind of stuff and make sure that you're just kind of dialed in there. I would also, I guess my only bit of addition on that is sometimes higher bit rate is better. Yeah. There's a tendency to think that the only thing you should do with your bit rate is turn it down. But if you have a higher bit rate, your computer has less to do, and that might give you the little bit you need to make OBS actually work on your MacBook, right? Which is like a real thing. Yeah, true. If you're like me and I have a gigabit connection, I don't care about 4,000 megabit or kilobits per second, right? Like that's fine. The internet is not the problem, CPU is problem. GPU is problem. Yeah. Understanding where you're constrained, this is also super important. Like is it bandwidth? Is it video processing? Yeah, like that's another really good important tip. So we really only have about 15 minutes left in the hour. I feel like Duffy, the only things I want to talk about, I think I talked about the basics that I really like to talk about. And now I guess we should go into the fun stuff, like the fun like kind of extended things. Yeah. I might give two more pieces of advice to aspiring streamers. The first is that the only thing that actually matters is your audio. Do not worry about anything until the audio is okay. It doesn't have to be perfect, it doesn't have to be creamy, it just can't be bad. If you have bad audio, nothing else matters. The second thing is that, especially in the CNCF world, we're the kind of folks that like to play with our gear and content may be more, you might, this is a gear talk, right? But sometimes it's time to stop messing with settings and go make some content. So you might get more out of it at the end of the year if you spend two hours building a 10-week content plan than you spend two hours messing with settings and plugins and stuff. So with that, let's go into weird plugins and gear. Yeah. One other, I mean, to your point, I think this is like that super valid feedback for folks, but there's like one third, the third thing here. And that is that remember that you're, it's easy for us sometimes as streamers or content creators to think that our content has to be perfect for it to be interesting. But what you need to know is that your audience is rooting for you. Your audience is 100% in your corner, right? It's not about whether your content is perfect. It's not about whether you've got this all dialed in. It's about the fact that you are out there trying and they wanna see you succeed. And so just if you, I mean, I know it's hard to wrap your head around, but if you can turn a live site, you're gonna have a better time. You're gonna find it more fun. You're gonna find it more engaging. But they're rooting for you. Yeah. And that's where that live chat feedback, empathy feedback loop really makes the whole thing work. Totally. On to fun stuff. Okay, so I think we got a question about virtual cam. I think the other thing we should talk about is capturing Zoom audio on Mac and then we should talk about OBS Ninja. So do you wanna do virtual game? Sure. Or I can, I don't. I mean, probably both of us because I think it's different for each platform. Right, yeah. So I'll start, I guess on Linux, you can actually use a virtual cam as a V4L or video for Linux loop pack device. Hold on, I've got something being noisy. Can you give me one second to mute on my side? Okay. The gist of the OBS virtual cam is you take what would have been the output of OBS and now it's a webcam that you can bring into another application that wants a webcam. If you're familiar with Snap Camera, this app that came out in the last couple months, it's not super different. The idea being that you can apply filters and some of that presentation layer that OBS makes really easy or do an entire presentation that way. While we're here, we might mention that OBS on its own actually has a couple different ways to output. I've done a lot of work just, you can tell OBS to take over a monitor and use that as a preview or an output. And you can make things like conference talks like really good that way, or if you're just trying to make a cool demo in a booth, sorry, I'm a dev advocate, these are the only problems I actually have. But yeah, there's cool stuff you can do with just having a preview as opposed to record or stream. Yeah, and that highlights the point. I think we talked about this last time also, but it definitely highlights the point that having the ability to have a monitor where you're seeing what you're presenting and having that be a different place than where you're spending your attention on what you're presenting is critically important or you will have a hard time. Like I've streamed PGIK any number of times with a single monitor and every time I'm like, why do I do this to myself? Like I should have another monitor where I can see the chat. What choices led to this moment? Yeah. All right, so cool. I've got my thing muted out. Sorry about all the noise I'm going to go. So let's explore virtual monitors. So I'm gonna do my share screen again. So in OBS, which is over here. In OBS, there is a plugin that you can use for V4L for basically using a loop app device that is configured by part of the V4Linux loopback kernel module to actually get this stuff set up. And the documentation for that is, I can find it. It's actually on the OBS website. If you go there, you're gonna find links to the pages for things like to make that content work. One of the challenges that I ran into when exploring that was that by default, I mean, like when you get the plugin turned on and you're gonna see this in the output scene, you're gonna be able to see this idea of the V4L2 sync, which is that virtual camera that we're talking about. But to get that wired up to a place where you could actually use it for other things was the important bit. So if I wanted to use OBS to present to Zoom, for example, or if I wanted to use OBS to present to some website or like the OBS ninja stuff or something, then I would need to actually figure out how to create a virtual camera that is the output of OBS and then use my real camera as an input to OBS, right? And that's where the kind of the virtual camera sorts of fits into the puzzle is that you can treat the output of OBS as a different output device of virtual camera, right? And then the question becomes like, how do you wire all that stuff up? So in Linux, you can do this with V4L and you can go to the OBS website to see the content for how to do that. And then my pro tip on that is that when you're loading the V4L2 loopback module, you can actually also pass parameters to that module. And this is the important one. Oh, that's pretty tight. You can use this exclusive caps piece is what informs the module that when it creates that device, it needs to make that device an output so that things like Chrome can see it, otherwise it will not show up. Nice. Yeah. So in fact, let's just explore that real quick. And this will probably kind of be a little bit of a preview of stuff that we're gonna talk about after the setup, but yeah, in fact, I'm gonna take a second to get this wired up. But in this way, we can actually show that video camera and we'll show some of the challenges around Chrome. So you wanna talk about a virtual camera on Mac while I get that going? Sure. I actually don't have it on a Mac. In the tier list of OBS supported operating system, it's pretty much like Windows at the top, Linux works, Army of hackers make it work. And then Mac is like, Yeah. So both audio and virtual cam have presented challenges on the Mac, which is hard because I know a lot of people watching this probably are on Macs. The best luck we've had so far for capturing audio is with a program, a third party program called I show you on the Mac. So that's definitely something to follow up on. I'll also say that like one of the markers of well architected technology and a healthy open source community, which OBS is, is a rich plugin system, right? Which basically means that if there's a rich plugin system, it means that the right amount of stuff is in the core that the thing works on its own. But that there's extension points for people to do interesting things in plugins. Sometimes you'll see something that has a plugin system, but the plugins are all just little toys that can't do anything. OBS has an extremely rich plugin system to the point where after you've been using it for a little while, you're gonna have your two or three or four plugins that you just cannot live without anymore. And so absolutely don't feel like you have to stay in the core of OBS, go on their plugin site, they've got all the right things you want, like download counts and reviews and things. And people are pretty good at keeping them updated. So definitely check that out. Cool. Okay, so my problem, just a quick recap of what I had to do to troubleshoot this. Inside of that tools before I'll sync there's a little menu bar here. And then I have to tell it which device it's going to use. So I had to point it at the device that was created by this mod probe to make it treat it as enough. But before it was pointed at some other device and that was my problem. Troubleshooting live, it's good stuff. We'll do it live. Exactly. So I think I actually just closed OBS, some of my bad. All right. So we can see v4 to L sync is pointed to this and it's running. And I can hit stop if I want to, but it's automatically started. And then what I wanted to show you was like, then at that point, once you actually have that module loaded in exactly that way, then you can actually see that as an output, right? In your web piece of things, right? So also in zoom, if I wanted to flip to that camera in zoom, I could do that as well. Although I can't seem to do that. There we go. I think I'll probably have to restart to get it to go because I think zoom only iterates cameras on boot rather than on the session start rather than on the other side of things. But yeah, like once you actually have that v4 L sync set up, then you can use that on Linux as whatever, as your source. And then the fun part is you could do fun things like put sharks behind you or you could like do all of the neat, fun things that you can do with OBS, but treat that as the video source for whatever your target is. So cool. Do you want to talk about OBS Ninja next? I think you're the OBS Ninja expert. I haven't used it in some time. All right, cool. So I'm going to take you to the project itself inside of GitHub first, because I feel like this actually does, this project, the documentation here does a better job of explaining what it does and how it works. Probably then the website itself, but there is a website. If you go to OBS.Ninja.com, or sorry, or to the dot com part. Classic, give me two, man. Sorry. If you go to OBS.Ninja, then you're presented with this content and there's a subreddit for asking questions and there's a discord and there's ways to interact with this project, just like you were saying Spencer earlier, like there are definitely, usually there's going to be some way of actually showing or interacting with a project and like giving feedback and things. There are some known gotchas with OBS.Ninja. So for example, like in OBS, there's a bug in OBS, the current version of OBS wherein, like using the embedded Linux, using the embedded browser in OBS won't allow you to capture live content. It's kind of broken in that way, but you can do it with a window capture instead if you want to inside of OBS. And we're going to play with that here in just a second. But what, let's talk about like what OBS is or what OBS.Ninja is and then we'll talk about how we can actually consume it. What's the problem is trying to solve, yeah. Yeah, like this is a really cool thing. So I don't know if you all have heard of voice over IP, like in that sort of sort of thing. Inside of voice over IP, there's this idea of being able to, there's this idea of a stun server. And what it does is it makes it so that when you pick up your handset behind a firewall and you're trying to establish communications with another voice over IP device, there has to be something outside of both of your firewalls that helps introduce the two endpoints such that they can continue to communicate even though there are firewalls between those two devices. It's sort of a way of like a third party handshake introducing things that are more secure and allowing them to establish communication between themselves and letting it can get out of the way. Well, this OBS Ninja is exactly that, but for WebRTC streams. So in a WebRTC stream might include a streaming video component and audio component or even just content that you're streaming from your desktop, right? And that's actually where you see on the website itself, right? You can add your camera to the output of a particular stream, right? You can pick your stream or you can also screen share using Chrome using some of the Chrome built in stuff. You can select a screen to share like which application you wanna share or what brave tab you wanna share and you can actually create a WebRTC stream of that content. Now having the ability to create a stream is awesome and all, but like how do we actually consume that, right? So I'm gonna share the tab that has the OBS stream content on it and then if I go back in here, it gives me this link, this link right here at the top that says here is the browser source for this particular content, right? So I've started a stream of that particular tab and now I wanna actually try and incorporate that into my OBS setup so that we can see that stuff live, right? So let's kick over to OBS for a second and then we'll show kind of how that works. There you worked, okay, cool. So I'm just gonna make another scene here and we'll call it ninja. We're gonna add some more content and we'll be a Linux browser, pack MD, we paste our link, that view link that we had and then we say, okay, and boom, as simple as that, we now have... Wow. Right, and just like you saw before when Spencer was showing this stuff, we can crop it. So if you scroll your brave time, does it scroll on the... Yes. On the capture? In fact, let's get aware of the hack and key. That's dope. That's dope. Yeah, and so this way what you can do, even if you're on your own local machine, if you have two laptops or you wanted to use your camera as one of them, right? You could actually use pretty much any device and go to OBS.ninja and create a stream that you can then import into the recorder or into OBS and do stuff. So earlier this week, I was recording a demonstration where I wanted to have the OBS command station in front of me and I wanted to have some slides that I was clicking through on my left. And that's because I was getting trickier with what was happening inside of OBS, but I wanted the slides and a spacebar to my left so I could move forward in my slide content. And what I did was on the other laptop, I just set up an OBS stream. I set up an OBS Ninja stream and imported it as the entire screen on this one. And then the benefit of that is like in my network, right? These two things are communicating over the same network inside my house. This content's never actually going out up to OBS Ninja because the connection, the WebRTC streams are just going back and forth between the receiver and the sender. Yeah, no, I mean, so the problem that OBS Ninja is solving on a couple of different pieces is the general sense of how do you do a remote? How do you, you've done several successful streams yourself or whatever, you've become comfortable with OBS and now you wanna have a guest. How do you solve for X there? And it's not super simple. Tools like WebEx and Chrome and Zoom and BlueJeans and stuff are gonna get you somewhere but not as far as you'd like. And part of it becomes this challenge, which is this browser window because what this browser window does is let you have shared state with your team just as if someone had shared their screen. And so in OBS Ninja, because they're really good, I think they've given us more than a cookie cutter solution, they've given us a Swiss Army knife that gives us lots of opportunities to come up with creative ways to apply it. Exactly, and then just to get, one of the other things I've noticed about the OBS Ninja piece and exploring it is that you have, when you're defining that, when you're defining the content that you're going to share, first of all, you can do this thing called add group chat and you can make a new room, right? And then you have this idea of a control center and right up here at the top in the URL stream, you can kind of see what the URL that you're generating is, right? And so if I wanted to create a new, if I wanted to create a new ID or a new stable URL for guests to use here, right? I could actually start up a new tab. You know, this is one of the things I hate the most about Zoom, is that it like, eludes the top of the bar too much. So. Yes, love it and hate it, Zoom. Totally makes me, makes me mad. So I'm gonna go ahead and close that share. And here we are inside of this share and we're not really producing any output yet, but let's go ahead and look at the options here, right? So we can invite users to join the group and broadcast their feed to it. These users will see every feed. So if you have a guest, a live guest that you want to actually share with and you would give them this link and what happens when they click on this link, right? Is that you can actually, you'll see their output when they view here, right? So I'm also gonna give you another pro tip on OBS Ninja, which I think is fascinating. You can also set a push parameter and this is all documented inside of the repository. Like if you go to the Wiki, Steve Gwinn's OBS Ninja Wiki, he gives you all of the information. It's really well, pretty complete information about how to pass in parameters to a URL. It gives you the ability to set like what the bit rate of your sources are as the viewer. It gives you the ability to force high quality as the person who's presenting the link to your guests. So you can pass those parameters and they basically inform the camera or the web browser to use high quality as an output and you can actually have a lot of more control over both what's happening on the sending side and also what's happening on the receiving side. Like it's not a flash in the pan. It's ridiculously cool. Awesome. So we go back here and because- Well, we're sort of right at the top of the hour. So we should probably- That's fair. Sorry to cut you off. No, it's good. I'm trying to think if I have any crazy closing thoughts. I think I would first like to say that the OBS project as an independent open source project doesn't matter what it makes and how useful it is. I think it's actually really well run. Really pleased with that software team and the leader of the group actually has some great blog posts. And then I'd say that the OBS and its surrounding plugin system responds well to sort of hacking and fiddling. It's super cool what you can get out of it and you can see the excitement on our faces as we like to get it to do cool things. So hope you enjoy that. I'm super available on Slack, on Twitter, on whatever. The OBS devs and users hang out at Discord. They're pretty helpful. And yeah, do you have anything else, Duffy? Nope, same for me. I'm Maui Lyon everywhere. That's M-A-U-I-L-I-O-N. So you can find me on all of the Slack and on Twitter. And I'm also completely available to help. So, awesome. Awesome, this is great. And the shows are TGIK on Fridays and we're IBM Developer on Twitch. So, Christy, do you wanna? Yeah, thank you guys both so much for a great presentation. Just a reminder that the session was recorded. It'll be live later today on the CNCF website. And yeah, we hope that you have a great rest of your day. Stay safe out there and take care. Thanks everyone. Bye. Thanks everyone. Bye. Thanks again, Duffy.