Jonathan: This is Floss Weekly, episode 787, recorded Wednesday, June 12th. Video Ninja, it's a little bit hacky.
Hey, this week, Kathryn Druckmann joins me and we talk with Steve Seguin, the creator and maintainer of Video Ninja, Raspberry Ninja, Versus Cam, and the new Social Stream Ninja, it's all about WebRTC and comment aggregation for doing live streaming, it's a lot of fun, you don't want to miss it, so stay tuned.
Hey folks, it is time for Floss Weekly. That's the show about free Libre and open source software. I'm your host, Jonathan Bennett. And today as the co host, we have the lovely Catherine. Welcome Catherine.
Katherine: Hey, thank you. I'm glad you pinged me. Thanks for having me again. Yes,
Jonathan: yes, yes. I'm glad to have you back.
The last time we were going to have you on to co host, you sent me a last minute email and said, Oh, by the way. Yes,
Katherine: that is true. I live in Texas. I lost power two times within a two week period. One was about a little over 48 hours, and this last time was about 28 hours. Again, it could have been worse.
It was worse for quite a few other people, but It was kind of rough and difficult to get things done when you don't know if you have power or not, and then you don't.
Jonathan: 48 hours, that is, that is long enough to really sort of make you think about things. Like if power is just off for an hour or two, like it's fine, just try not to open the refrigerator and everything, everything goes, life goes on.
But you get over a 24 hour period and suddenly you start thinking about, What do I do if power's off for a week? Can I survive this? Yeah, yeah,
Katherine: you have to start, yeah, yeah.
Jonathan: What changes do I need to make in my life? What could I do to be more prepared for this? Like, at least for me, when I go through something like that, I immediately start thinking, okay, how can I be better prepared for this next time?
Yeah.
Katherine: Prepper mode, yeah, yeah, for sure. I need more solar panels. And then, I also had a hotel booked, like, and then my power came back on, so. There you go. So I was able to cancel it, but yeah.
Jonathan: Yep, yep, yep.
Katherine: Yeah, that was fun.
Jonathan: All right. Well, we have a, we have a guest today. We're going to talk with Steve, I believe it's Sanguine?
Sagan.
Steve: That sounds good.
Jonathan: Hey, there's Steve. Steve Sagan. And he is the guy behind Video Ninja, which you may remember as OBS Ninja. We'll talk about the name change. And then there's some other newer projects that he's got going on. I want to ask first, Catherine, how familiar are you with this? You said in the pre show that you you use some of these tools for some other things for, for day job?
Katherine: Yeah. Yeah. I, well, so I've, I've used things. I mean, yeah, yeah. I can totally talk about it. Yeah. I know it's something secret. Yeah. I, but I, I, you know, I like to use open source tools where public, where possible. But yeah, I, you know, I, I would, I'm not a I'm not a person who has a lot of experience with streaming video and that type of content, but I have done a little bit of it.
And when I have done it, I have used OBS or, Video or things like that and I you know I'm really excited about this because I would like to do more with these tools And so this is a really exciting opportunity for me to have a conversation about it.
Jonathan: Yes, absolutely So something something that we've been asked about a couple of times is how does the technical side of doing the show work?
And some some know we stream the live video to discord, which is a lot of fun That word fun gets a lot of mileage there because a lot of times it's a, it's pain. So one of the, one of the things that we're going to do today that I think is we're going to talk with Steve, I'm going to give kind of a walkthrough of the technical setup for the show.
And then I'm hoping Steve is going to point out some places where we could do it better. And but let's not, let's not faff about anymore. Let's not. Piddle wasting more time. We got started a little late. So just squeeze every minute possible out of the hour. Let's go ahead and bring him on Steve. Steve Sagan.
Sagan.
Steve: That's fine. Yeah.
Jonathan: All right. Steve Sagan. Welcome sir, to the show.
Steve: Thank you for having me.
Jonathan: And so your claim to fame, at least in this context is it's mainly video ninja, right? Like that's what, that's what most people know, know your work for. Right.
Steve: Yeah, at this point Video Ninja, a little over four years ago, at the start of the pandemic was a pretty popular tool.
It still is. And it is, yeah, it's just only grown since then.
Jonathan: Now, when you, when you first started it, it was called OBS Ninja, right?
Steve: Yep. It was OBS Ninja. That name was picked around 2017. But it kind of infringes on the OBS studio name and also, um, confuses some users thinking that it's affiliated with OBS.
Right. And so changing it to, to video made it more generic cause it doesn't work with just OBS. It works with, with video. virtually any tool for any purpose. So yeah, the name changed to Video, and some people ask, you know, it's, it's V D O as in, and it's a joke on video. If anyone's curious.
Jonathan: Yeah, so, it's, there, there is, there are two, there are two ways to pronounce that V D O, you can spell it out, like a noob, like I do, or apparently, the cool way to say it is you just say the word video, and it's a pun, and it's done intentionally. It is
Steve: a pun, I, I try to emphasize the D a little bit, so it's a little more to the name, but yeah, it's a, it's a pun.
Jonathan: There was something that happened with OBS where some other tool was using the OBS name, like without any permission at all. I think it was a proprietary tool. I don't remember all the details of this, but the OBS crew came out and said, please don't do that. And it was about that same time that OBS Ninja just sort of, yeah, just sort of quietly.
So by the way, guys, we're going to, we're going to rebrand and we're going to, we're going to become Video Ninja now.
Steve: And that was, I think Streamlabs OBS was probably the biggest offender at that time. That's
Jonathan: right. That's what it was.
Steve: So yeah it was time to dodge
Jonathan: change. So give us the, you know, the rundown, like what, why did you pick the OBS name to start with?
What is Video Ninja intended to let people do? What's the, what's sort of the, what, what problem does it
Steve: solve? Well, back around 2017 I was playing video. I'm doing a lot of WebRTC work, you know, VideoNinja uses WebRTC technology, which allows you to do peer to peer in the browser. And OBS has a browser source element, which lets you put webpages into your video stream.
And I noticed that WebRTC was working within that browser source. And it wasn't working flawlessly by any means, but it was working. And I saw that open up. massive potential because it's a lot easier just to put a URL in than configure servers with Nginx and other aspects. So the tool is really focused on being a production tool for OBS initially.
And so that, that's where the name came from. It was meant to be more of a a fun, flexible tool for OBS. I forgot the rest of the question.
Jonathan: What are some of the other problems that Video Ninja lets you solve?
Steve: Well, it's a highly flexible tool these days. So, some people are using it to do podcasts without OBS at all.
For example, you can record within the browser. You can record directly to your Google Drive. It lets you bring in streams from mobile devices without having to download anything. If you have an older device an older Android, it will still work generally with, let's say, Chrome on that Android. It also facilitates peer to peer video, let's say, over your local LAN.
A lot of people are used to using cloud services, but if you have a bunch of cameras in your house and you don't want them going to the Internet and back you can keep all that traffic locally securely private within your own personal LAN, yeah. It does transcription, translation video effects.
Really?
Jonathan: Yeah. I did not know. I did not know I did any transcription stuff. That's cool. I'll have to look into that.
Steve: So, when you're using something like Chrome or Edge, it has a built in API that you do transcription. So you can add closed captioning to all the guests and each guest can have their own label if you choose to.
Jonathan: Nice.
Steve: Yeah, there's quite a few other use cases in this actually, I feel.
Jonathan: So, speaking of other use cases I, One of the open source projects i'm a part of they have an apple, you know, like a an iphone app They wanted to get me as part of testing of that. And so they sent me the the cheapest ipad that you can buy on android but still It's apple hardware.
It's fairly nice and it's so now I suddenly have this big portable screen and It occurred to me that this would be a great teleprompter. So I, I bought a teleprompter kit that sits underneath my camera now. And so I can put the iPad up there and you know, it shows in the, the, the half mirrored glass and I have a nifty I have to nifty teleprompter, but then I, I, I had to solve this problem of, okay, what app do I want to use to be able to hook up my teleprompter to my iPad?
My laptop here to actually be able to record and, you know, scroll through my text as I record. And I found a website that works great as a teleprompter, but I couldn't get the, the remote aspect of it working. And it's like, I know how to fix this problem. Pull up video Ninja on the iPad, pull up video Ninja on the computer, share the tab and boom.
I've got a scrollable shared teleprompter using video Ninja.
Steve: You're not, you're not the only one that there's. Quite a few people are using it for teleprompting and there's actually a way to invert the screen for those who are using a mirror.
Jonathan: Ah, nice. I think I think the the website that I use has that built into it that I can invert it but that's that's useful if again I didn't know that video ninja had that as an option.
But that's super useful because then you can just use you can use your Google Drive to do it or not even a website at that point. It can be just a document of some sort. That's neat. I need it. I need to make a list. I need to start a new Google Doc. And it is things that Steve has told me that Video Ninja can do that I didn't know about that I need to look into.
That is, that is the document. That's going to be the name of it. Because there's a lot, I'm sure. You, you have all of these people that are part of the project. It's, it's open source. So like it's easy for somebody to come along and hack on it and add something. But everybody that uses it, they're like, Boy, wouldn't it be cool if And then somebody goes, yeah, I could probably do that.
And the next thing you know, there's a new feature. That's how it works. That's
Steve: the way it goes, yeah. It's getting a little harder to keep up with feature requests, but it's not often we refuse anything.
Jonathan: Yeah, indeed, the way that I see this working with a lot of open source projects is and it depends on the project.
So in some cases there are feature requests. There's just like there's no way to do that. It's not feasible or we've tried and it's not nearly the good idea. You think it is like that happens, especially more mature projects, but in a lot of projects feature requests. The response for the maintainers is yes, that does sound cool.
We would love to be able to do that. None of us have time to do it right now, but that does sound cool and we would love to have
Steve: that.
Jonathan: So one of the things I wanted to do, as I said, is I'm going to kind of quickly talk through the way we do the show here. And then once I get done with this and Steve has comments on it, we'll turn it over to Catherine and let her get some, get some words in, get some airtime in.
So I've got. Yeah, I don't want to, I don't want to do all the talking. I've got the DSLR with HDMI output and then a capture card goes into the laptop and that goes into OBS and the way it's working right now, it's only my camera that goes through OBS and that is to be able to, OBS has this really nice feature where it detects.
Hangups and it will basically just do a, a recycle on your your V V four L two device. And so if your frame rate drops to zero, it, it kicks it in the pants and gets it going again. And then from video Ninja, I'm using the virtual camera and I've got the, the, yeah, from OBS, I'm using the virtual camera.
And then I have in Chrome, a tab that is the video Ninja mixer. And. My, my feed goes into the mixer and then I can see you guys. And that's how I actually do the conversation. That's what happens on this laptop. I also have OBS recording me and then on your two streams, I have the local recording going.
So. You know, I, I now have in, in Chrome, I have three downloads currently running and that's grabbing your audio and your video which I had something weird happen the last couple of times I've done this, I'm not sure why, but the, the, on that download, the video. Resolution was really low, like 400 by 600 or 320 by 240, something, something really low.
And I'm not quite sure why yet, but anyway, I'll continue on. And so on the computer behind me, I've got a second copy of OBS running and it is ingesting the three URLs from VDO Ninja. So that's the, that's my feed and Catherine's feed and Steve's feed. And it's doing the side by side. And that is then doing a a windowed preview of that, which then is getting captured for a screen share in Google Chrome.
And that is what then is going to discord. And then I've got a pipe wire device. It's a tunnel. And so it's like a point to point tunnel where you can put audio in on one side and take it out on the other side. Well, so I am telling OBS to send audio to that tunnel. And then I tell discord. To pull the audio out of that tunnel, which works.
Discord is really picky about what audio device it wants to use. So I actually have to start it and then go into a tool like Carla or Helvam or. Q jack CTL to be able to control, let you control pipewire. And I've been remap where the audio streams are going, because for whatever reason, discord on Chrome just will not pick the right audio stream.
And then I also have our door running on the desktop behind me and it is spying on those three audio streams coming out of OBS because the way OBS does this, it sends them as individual streams, which is perfect for me. It spies on those and that's where I get my. Multitrack audio recording. So when I get a guest on, that's the, those are the steps.
And some of this is automated. Some of it's not, but those are the steps I have to go through to connect all the things together because we want to stream out to discord. We want to get the, the multitrack recording. I like getting some video recording and just all these different pieces fitting together.
And I've, I've, I've tried to work on how to make it better for a while, I was doing it all on the laptop. But something changed either in Pipewire or Ardor, and I started getting a lot of dropouts in the audio recording there. So that's when I split between the two machines. And in thinking about it, one of the, one of the problems, one of the things that really makes this difficult is the fact that we stream to We streamed to discord, which does not have a way that you could push a stream into it.
It's only in the browser. So like if, if I could go straight from OBS to discord, that would make things a lot easier. So maybe, maybe at some point we're just going to start streaming to YouTube instead and something to think about. But anyway, that is the way the show is produced. And now Steve, I'm sure it's nuts and there's a better way to do it, right?
Steve: I don't, well, it's, it's, it's a really complicated setup and you make it extra challenging for me because you're using Linux and Pipewire and such tools. Ah, okay. I say that because most of my experience and most of the community tends to focus with Windows, of course. So most of the solutions I work with tend to be there.
When we start talking about dropouts with Pipewire or Ardor my strengths aren't necessarily figuring out those problems. That can be something like a buffer underrun, a CPU overload issue. Those often cause dropouts with audio.
Jonathan: So one of the, one of the things, one of the other things I know that would make this easier is, and I believe it's being worked on, is tighter integration between OBS and VDO being able to do things like direct direct WebRTC rather than having to run things through the browser.
Because in, in, in OBS to be able to pull a video stream in from VDO right now, OBS is running an invisible Chrome window, Chromium. And it, it renders the video on that and then captures it off of that. And I, I know, in fact, we can do that. Back several months ago, we talked to one of the guys doing the doing the work on it, that there there are some patches to be able to do like direct direct over HTTP pull of video into, and then pushing it out of OBS.
And so that's that's one of those things that's going to make that a lot easier.
Steve: OBS has had some investment, especially around the WebRTC side over the last year, there's a new protocol. called WIP which lets you publish WebRTC video to a server. You can also publish it to Video Ninja, but it's not it's a little bit limited because you can only have one viewer at a time.
But potentially you could also use another technology in the future called WEP that lets you bring in a single WebRTC stream into OBS as like a source without A browser window.
Jonathan: That's, yeah, that's the one that'll be super helpful for what we're doing. Yeah.
Steve: So Video Ninja supports both those protocols.
And so you'd be able to use WIP, or in this case WEP, to pull into OBS from Video Ninja if you wanted to. You'd lose out things like overlays and more advanced controls when you do that. Yeah, it should, it should have a lot of opportunities.
Jonathan: So let's let Catherine get in a few questions here. And I'm, I'm sure she has probably not quite as convoluted as a use case, but some thoughts on where she would like to use Video Ninja and then here after a while, we'll talk about some of the, some of the other tools.
Katherine: No. Yeah, no, I do not have as complicated a use case. I, I have a question. So yeah, I was checking out, you have a list of helper apps and tools, and I was hoping you can kind of walk us through some of those because it looks like. There are so many things that I can do with video ninja video video ninja that I didn't, I had no clue about, right.
I'm, I'm kind of, I would say I'm a dabbler in this space. I, I tend to call in and let people like Jonathan manage all of this stuff. Right. So I'm, I'm really curious to like, what is, how do I use social stream ninja? Like does that compete with commercial projects or products rather? Yeah, I'm kind of curious to know, like, what could I be doing that I don't even know
Steve: about?
Social Stream Ninja is one of the newer growing projects that I'm working on. The concept there is when people were using Video Ninja over the last few years, one of the constant feedback I got was users might be using Another commercial application that has chat and video combined. They want to bring in chat from YouTube, from Twitch, and have that part of their show.
And when they used OBS, they missed out on all those features. The destinations they wanted weren't available as a chat source. So I took it on myself to make a tool to let people bring in chat from all the chat sites they want, consolidate it show it in OBS as an overlay if they want to and do other sorts of features like feature chat messages, do text to speech.
So SocialStream is started out as a Chrome extension. And what it does is it When you have a web page open that has chat, it pulls the chat out routes it to another page that you can use as an overlay or a control panel, and it consolidates all the chat messages into a single stream, including icons for where the image came from, the name of the person chatting, if they have a donation, it all kind of shows up.
At this point, there's probably a hundred or over a hundred sites now supported including some sites that generally aren't supported. For example, Instagram is a challenging site to support Facebook Slack, Discord, Microsoft Teams plus all the expected ones like Facebook, TikTok, YouTube.
Yeah, it pulls all those messages in and it makes it available. Now it is a free it's free to use. , and it has, again, a growing set of features that makes it quite powerful. People keep asking for more features and I just keep adding them. So it's a, it's a pretty bloated tool at this point. Yeah Yeah, that app has quite a growing number of users, for sure.
Katherine: Very cool. You mentioned something, you mentioned, you know, people are always asking for new features, right? I mean, such as, such as the life of a project maintainer. I wondered if you could tell us a little bit about how you manage these projects.
Steve: That's a good question. A good question. I'm, I feel like I'm not the most organized person.
So, really, I kind of camp out on Discord, listening to the community, and I try to stay on top of requests, stay on top of problems. When they come in, I try to just tackle them. Then in there, I feel like once I put something into a backlog, it really doesn't get touched again. So that's one aspect to developing the project.
When I think about developing the project, I don't get too caught up in, in the UI, UX and making things pretty and for better or worse. So it's really a little bit 1990s looking in terms of design. Documentation I try to keep on top of. The community does help there at times, and that, that's very helpful.
When it comes to, like, actual maintaining the code, I try not to make massive changes. I try to work incrementally and I try to always have some sort of staging. So if a bug gets put in more than the beta sort of users red flag it earlier on this way. I can reduce the amount of testing I have to do because that's quite a, quite over quite an overhead for development.
Otherwise.
Katherine: What kind of participation do you get in terms of, of Yeah, you know, people submitting pull requests and, and contribution to the project. I mean, how, how much of this is just you kind of steering the boat and how much do you have people, you know, kind of pitching in?
Steve: It's, it's not as much as I'd like considering the scope and size of the project, but I do have several people who are, are, are pretty active and pretty helpful.
One, one user has been really great at updating the documentation for Video Ninja. So whenever I do a feature update and I post information in, let's say, the Discord about that feature they're often ahead of me on updating the documentation. And that, that's a huge time saver. So it's not, It's not a whole lot of thought that goes into that, but it is time consuming and requires some organization.
I have a few users who help moderate the Discord. And one of them in particular helps with the the Discord bot maintenance. So when we have problems with spam, we update the Discord bot. We have an AI bot that helps to respond to questions. We there's translations, and so users will donate translations for Video Ninja or SocialStream.
And there's a few users over the last course of the last three years. I'd say there's been three users who've contributed code to certain extents. Usually pretty casually, and usually more on the superficial side of things. But it's still helpful, especially when it comes to the UI, because that's where often where I, I need some help.
And so working with them to kind of approach that in a way that I can support them, and then add that styling has been very helpful. But in terms of like core low level code, and especially in the core of the app, there's not There's not too much support there.
Jonathan: So I want to make sure that we've made clear what, what exactly social stream is about and like what it does.
It, it lets you, what, aggregate comments?
Steve: Live chat comments primarily. Yeah.
Jonathan: And that is it, does it, what does it do with it after it aggregates though?
Steve: So it, it can bring it into a dashboard, and so you can see all the messages streaming in from all the different sites consulted. As a show host like yourself, let's say, you could select a message, and it, it, you could add it as an overlay to OBS so that when you select it, it appears as a lower third overlay featuring the user's message.
So if it's a question, you could select it and then talk to it. You can then hide it, dismiss it, You could also have it maybe on the side showcasing all the chat from Discord, let's say. So other people may not be on Discord right now, or they may be watching this on YouTube. You could have the YouTube and Discord chat consolidated on the side of the video, so everyone sees what's, the questions being asked.
Jonathan: Okay. So for another show we do that's still over on Twit, we use the last couple of episodes, we used Restream, Restream. io. And it's got, it's got some of those, some of those same features. It, do you know which one came first? Like, was this, this is originally your creation or is it inspired by some other offerings?
Steve: Well, ReStream had their own consolidated chat before SocialStream. The request was not necessarily in response to ReStream, it was actually in response to StreamYard. Ah. Users were paying and using StreamYard as an end to end platform. They wanted more power and they wanted to move to OBS, but they felt like the chat functionality was missing in OBS.
Jonathan: Yeah, yeah. Yeah.
Steve: So, but that's kind of where the request came from. Of course, since then it's, it's grown. SocialStream now it does things like a lot of bot commands. People are now integrating their own apps into or integrating it with SocialStream. Not only is it being used for overlays, then you can pull the messages out via several APIs I have and use it to control, let's say Streamrbot, another open source project, let's say, that allows you to do actions and advanced scripting.
People, people want all those chat messages and I'm offering it.
Jonathan: So if, if you want to build something like Twitch plays Pokemon, boy, that's a, that's an old meme at this point, but you know, something like that, you, you have the tools there to be able to make, make craziness like that work.
Steve: Yeah. There's basic chat commands already added in, but people are doing far more complex things.
Features that currently have been added. There's like a draw system so people can enter a poll or a raffle and be selected that way. There's like hype meters, there's emote walls, so if people dump emojis into chat you can have them dance around the screen. Yeah, there's analytics, so some people like to store all the chat to disk and run a sentiment analysis on it.
Jonathan: Interesting. Okay. What, what's the process look like of connecting the the tool to your different chats? Like, how does it, how does it actually scrape, particularly those that don't have an API? I guess I'm really curious about, like, how does it scrape chat out of Discord and Twitch and YouTube and all of those places?
Steve: It's a little bit, a little bit hacky of course the, the current, the original version, let's say is a Chrome extension manifest version two. And What it does is you just have it open. Certain sites you have to opt in via a little toggle in the extension menu. You can, you can restrict to certain channels as well.
For other sites, the notion is you just pop out the chat. So let's say you're in YouTube chat, you can pop out the chat. In Discord, you'd open up the Discord in the web browser. You'd enable a toggle for Discord. You could select a specific channel ID you wanted scraped. And then it will just listen to your your webpage and scrape directly from that.
Chrome is dropping support for Manifest version 2, which is like a powerful extension. I, I have kind of internal builds of Manifest version 3, but it's really hindered, let's say. So I have also worked on a standalone app. It's been available for about a year now. And this is a, it's essentially an electron, like a Chromium app, and it has all the functionality built into that, so you don't need an extension, you just open up those chats, or you open up those sites within the standalone app, and it's able to do it there.
But as well as I, as I move forward with development, I'm adding in more official APIs where possible. So the hope is with sites like Twitch and YouTube and whatever else, you wouldn't have to go through those hacky steps. It's just work. As you'd expect.
Jonathan: Yeah. Have you, have you been able to reach out to any of these any of these sites?
Like let's say discord. I think I know the answer to this, but I'm going to ask anyway, does it work to reach out to discord and say, Hey, I'm building this great tool. It'd be neat if you guys actually had an API.
Steve: I'd like Twitch has an API tick tick talk has a community created API. Let's call it and that's available as a, as a node extension.
And so with the the standalone app, I could use that API there. When it comes to the things like Twitch, they, they only recently allowed. Creators to restream to other platforms. But in that case, they also want you to isolate, I think, their chat from the other endpoints. So there's a toggle specifically to let you show only Twitch and not other chat if you have multistream going.
So I, I don't know how open they would be to the idea of consolidated chat given that.
Jonathan: Sure. So one of the things you, you mentioned in your notes here is a raspberry. ninja and versus. cam. What are, what are those?
Steve: So like, I have a bunch of auxiliary projects related to Video Ninja. Raspberry Ninja was originally, as the name can imply, kind of targeted for the Raspberry Pi, but it lets you run Video Ninja without a browser using Python.
On a Raspberry Pi and where this is a little bit interesting is a Raspberry Pi has a hardware encoder for video So even of something like a Raspberry Pi zero Can encode 1080p video and publish to Video Ninja so if you wanted a very low cost way of publishing from a camera or webcam to Video Ninja without having something like a heavy browser open.
You can use the hardware encoder to publish and multi publish at that too to multiple users with a Raspberry Pi via Video Ninja. Very cool. It's grown since then. It now works really with anything from Linux, Mac, Windows Orange Pi, other devices. And users are now using it for both publishing and pulling in video.
Some people are using it for AI work. So if you want to pull low latency video or audio in run machine learning on it or do audio to text conversion, you can do that without having to have a browser in the cloud. You can just run this Python script.
Jonathan: And then what was the other one?
Steve: Versus Cam.
Jonathan: That's the one.
Steve: Right. So Video Ninja is a bloated application in some sense. Like it does a lot for a lot of hardcore users. Sometimes there's a simple task some users want. ESports is a popular sort of particular use case that some people want, but they don't want to go through the complications of configuring everything for that use case.
You need high bit rates, you need a different set of features. And so Versyscam demonstrates how you can customize VideoNinja for specific use cases. Essentially, you can treat Video Ninja as like an SDK. You can embed it into a web page and build a whole new web page on top of it. Oh, cool. So versus cam is a completely different looking version of Video Ninja, a little prettier.
You can sign in, have some sort of memory on your your, your session, has a whole different layout designed specifically for for eSports. And there's several of these applications I've created based on Video Ninja, kind of demonstrating different use cases that you can kind of build. Yeah versus GotKem is just one that I think is one of the coolest, cooler examples of that.
Katherine: I'm kind of curious to go back to the project itself again, because I am interested in talking to people who maintain these big projects, especially without, you know, a big company or a big organization behind it. And I'm wondering again, like, And I, I, and I, I feel like I'm speaking a bit out of turn because I don't know that much about the project and how, how it's governed and whatnot, but I get the impression it really is mainly just you, right?
Do you have a succession plan?
Steve: It, I'd say at the moment it is mainly me. Yeah. There are some light touch users, of course, so I appreciate. In terms of succession plan, it's one of those things that does haunt me a little bit. The notion in my head is if I was to ever step away from it, I would probably open up the license even more.
Right now it's an AGPL license, but I'd probably consider moving into MIT. In it Video Ninja is more than just a repo, as well. It's also an actively hosted service. And that's how most users approach it. So, it's a little bit concerning because there's a cost involved with maintaining it. There's a level of DevOps and support.
And I don't really see how anyone in the community would would necessarily jump on, on wanting to continue that themselves. It, it, there's quite a few people who are running their own version of Video Ninja, but they're often doing it for their own personal sort of community driven projects or their own production studio.
So I'm not quite sure on the succession plan. It's, it is a little bit concerning, but I'm going to continue to maintain the project regardless of going forward. I don't quite know how to transition away from that.
Katherine: Yeah, that's fair. I wondered if you could kind of tell us a little bit about your thinking behind the AGPL license.
Like what motivated you to pick that license in particular?
Steve: Yeah, when I started this project, I, I, I needed to pick a license. And I talked to some advisors, and they always said, start with something more restrictive, and you can always make it less restrictive as you need down the road. So, it was less It was more from a position of comfort.
Where can I start that I'm feeling comfortable? And how can I transition away from it? There hasn't really been a need to transition away from it. It's primarily all, almost all client side code. And it's hard to imagine there really being a strong need for more permissive licensing at this point.
I do like the notion of having companies that are using the code for the commercial purposes to feel obligated to open source their changes. There is, there is this sort of concern in the back of my head since I am doing this all myself. If the project gets hijacked by a larger company Okay.
How do I handle that? I, I probably feel like I wouldn't want to work on the project anymore. So it, it's one of those things where I feel like once I am done actively developing it, it's one of those times I'm feeling more comfortable where I can then make it more permissive.
Katherine: Interesting. I, so I, I talked to a lot of people who maintain open, open source software, and I'm, I'm really interested in, in kind of the, So many issues that come from being a solo maintainer effectively, and especially of a, of a project that's quite popular.
And I, I, I wonder like, what do you feel a heightened, like a burden, a sense of responsibility especially when you're, when you were talking about security issues. And, and I just wonder like, if you, if you could wave a magic wand and grant a wish, what, what sort of support would be helpful to someone in your project?
situation.
Steve: Yeah. So, I'm, I'm currently managing the full stack from DevOps, security user support, GitHub maintenance coding, virtually end to end and it is challenging. I would love, obviously a, a team that could be self Self continuing, let's call it. I'm not sure of a better way of saying it, but it'd be nice to have a project that can take care of itself and can be self maintaining as people come and go.
It can continue on. I struggle to see how that would be possible. At the moment, I'm, I'm, I'm trying to encourage more recently, more development from trying to make the code more accessible to more users. The Magic Wand, in my mind, it, it's a little bit hard, but it'd be more It's a little bit concerning, but if I could find maybe a company that could see value and a shared vision in what Video Ninja is, and they take it on as more of a, um, like a little bit of a community project, but supported by more of a, commercial company, that could be very interesting to me.
I think if a company, for example, like Logitech or Twitch or one of these other companies saw value in it, saw the community value in it, and they wanted to put resources into it and keep it as an open source project, but maybe add more premium functionality to it. I see that as a very interesting way to see long term value and see it grow beyond what I can offer.
Probably unrealistic, but that's kind of one way I could see it potentially. Surviving long term.
Jonathan: I'm curious, have you, have you reached out to any of those any of those companies about that kind of idea? Like, have you, have you rung Logitech or I don't know, maybe even somebody like Intel and said, Hey, I've got this project.
Are you, would you be interested in adopting an open source project?
Steve: Yeah. Probably not in, in such words exactly. I I probably not. I'm probably not the best at networking and business on that front. I have reached out to these companies. Most of them, let's say like Discord and Logitech, when I reached out to them and had conversations three, four years ago, let's say when the project was new, they all were using or fans of it, let's say But they've found ways to incorporate their own versions of it into their own software.
So Twitch has something called Guest Stars now. Logitech with, let's say, I think Streamlabs. They've had their own sort of guest system. So they, I don't get the sense they're too interested to adopt, but rather be inspired by. And I feel like I've helped inspire lots of companies I love that.
I love the innovation. But it leaves Video Ninja still kind of as an orphan.
Jonathan: Well, it may be an orphan, but it's a tool that's important to a lot of us. So, I'm definitely Rooting, rooting for you. I don't know what the future exactly is going to hold, but hope it's good things. We have a question from the chat room actually that is, is extremely on topic with what we're talking about now.
And that is, is this a full time job for you or is it just an intense hobby?
Steve: It's a, it's a full time passion project. And I say that in the sense that I spend pretty much every waking hour. Working on these projects, Social Stream, more now than you know, quite a bit. So it's almost split between Video Ninja and Social Stream, and things like Raspberry Ninja.
The only free time I'm really making is for my personal health, as it kind of deteriorates over the years. I'm trying to find more ways to go to the gym. So it is, it's full-time. I, I get some, I get a couple hours a week to do consulting for some other companies I was involved with prior to this, but it's pretty much full-time.
Jonathan: Yeah. Yeah. Do you, do you have like a Patreon or are you part of a GitHub's sponsor, I forget what they call it. It's GitHub sponsors. We have all of that set up.
Steve: I, I, I do, I don't really promote it heavily. I do have GitHub sponsors, I don't have Patreon, but I do have, like, Buy Me a Coffee. I'm not, I'm not necessarily doing it for money I think, I think if I go down that path I'm going to get misguided a little bit.
So I, I try to, I try to avoid being reliant or promoting that, but the option is available and I do strongly appreciate, obviously, any sort of gift users provide to me. The way I think about it is I, I do spend, you know, between 1, 000 to 2, 000 a month on server bills and other costs to maintain these services.
And so the sponsorships do help, you know, help subsidize those costs. And so that's that's kind of my goal for sponsorship, just kind of to break even on those server bills. But yeah, if I'm going to be looking to make money, um, I'll probably work on other projects unfortunately.
Jonathan: Yeah, yeah, understood.
What is a. Let's go ahead and let folks know what is your buy me a coffee and GitHub sponsorship. What is, how can we find those?
Steve: I'm not even sure. There might be a hot link sponsor. video. ninja, but generally I push users towards my GitHub and you can click on the GitHub sponsors page and I list more than GitHub sponsors.
I listed the buy me a coffee link as well there. My, and my GitHub is username is Steve Sagan, S E G U I N.
Jonathan: That is the place to go to drop, drop in the, drop in the tip jar.
Steve: Yeah. Thank you so kindly.
Jonathan: Yeah, I think I think that's definitely something that's worthwhile. One thing we've noted over the years of doing this show is that open source developers need to be able to eat and pay their rent too.
And it's really, it's really kind of a challenge for a lot of projects, you know, because there, there comes this point with a lot of projects where you want to kind of turn the corner and go from, okay, this is just a hobby too. This is big enough. Now we could use somebody doing it full time, but that's a, that's a big burden financially to try to do, at least for most of us.
Steve: I feel like if I try to turn Video Ninja into a paid project as you said, hiring developers would probably be required for me to grow it into the quality product in terms of what a paid product would probably demand. User accounts, enhanced security, more server based services, prettier UI, better mobile apps.
I'd probably need to hire, you know, two or three developers at the least. They would want to pay, given the number of users that are using the product, and the cost of overhead of then turning into commercial business, it would kind of kind of force it to be a paid project. And that's not what I want Bidian Engine to be.
Jonathan: You're, you're, you're stuck in a similar way to a lot of other projects. Like I said, it's, it's difficult to turn that corner and it's even harder to do it in a way that's not going to drive your existing user base away. It's a, it's a real challenge for a lot of projects. Some, some have navigated it.
Some have made it work.
Steve: Yeah.
Jonathan: I'm
Steve: sure there are. If, if, if I were to do it, I'd probably make a whole new project. with a different name and it would be a premium version. I would probably need to get venture capital to fund it. I feel like whenever I see people take on new projects, me particularly, I get obsessed with that and I neglect the whole project.
And so I would only imagine then The community version of Video Ninja, let's say, would then be neglected, and over time be put more and more out of sight. Again, I don't really want that. So I've avoided turning Video Ninja into a commercial project, but at some point making money and having a retirement of some sort is going to be important for me.
Jonathan: Yes.
Steve: I'm kicking that can down the road right now.
Jonathan: I understand. I know how that goes. I do. All right. Well, we are we are getting close to back around to the bottom of the hour from when we started. And I want to ask a few wrap up questions that the hardest one I'm going to ask you is if you think through the things that you wanted to talk about, and then you think through the questions that we've asked, is there anything that we Neglected to ask about that you want to let folks know about.
Steve: I can't think of anything. I'm happy to answer any questions. Of course.
Jonathan: All right. And then what is what's the weirdest thing that you know of that somebody has done with one of your projects, be a video Ninja or the, the social. Oh man.
Steve: Okay.
Katherine: It seems like a dangerous one.
Jonathan: I mean, it is a little dangerous.
Let's, let's, you know, let's, let's avoid anything NSFW, but in this context, because we're talking
Katherine: about video, you know, but
Jonathan: yes.
Steve: There there's neat things people are doing, of course. Some people are using it with drones and they're live streaming their drone to their website with video because you can embed video ninja into a website.
And then essentially use it as like a, a low cost CDN. It wouldn't handle many viewers, but you often don't need many viewers for personal website. And so people can stream very low latency video from their drone to their webpage. I thought that was kind of cool. There's been some art COVID, for example, you'd have, you'd have performing arts centers have people acting out large performances with green screens and really advanced effects using Video Ninja.
And it's, it's quite, there's tech issues always with, with live video. And so just imagining someone being on this complex half hour show with back green screens and people trying to have two way conversations from different areas of the world is fascinating. Yes. There's another project where people are doing collaborative music jamming sessions together.
So it's, Video Ninja has pretty low latency, usually around 50 to a hundred milliseconds, but it's not low enough for playing together.
Jonathan: Right.
Steve: So what people do is they delay the audio or video a couple bars out and they kind of play out of sync to each other, but in to the same beat regardless. And so Video Ninja has a capability to let you delay video fairly accurately upwards of a few minutes even.
And so there's groups of people who are across the world who are using Video Ninja in part with other tools to do jam sessions where they use Video Ninja to synchronize all the videos. So they arrive in, let's say OBS in sync and high quality And it's really kind of funny how they're able to have a musical performance out of sync to each other, but all end up play out in sync.
And I find that a very interesting project.
Jonathan: That is really cool. So I didn't ask about this, and I think we should. So when How does, how does the video transport work? And what I mean by that is, so do I send video to the video ninja server and it then sends out the streams to each of the watchers or is it doing is it doing handshakes and then point to point?
So am I sending, am I sending a stream from my laptop to my desktop and my laptop to you and my laptop to Catherine, or do I just send one stream up to the server and it broadcasts it out?
Steve: All those options are available.
Jonathan: What happens by default?
Steve: The default is point to point, peer to peer, and so it is really complicated.
The default is each viewer gets their own encoded stream custom just for them. So if someone's having a bad connection, that particular guest or viewer gets a lower quality feed. That's custom encoded. Everything's peer to peer and the system will automatically switch to keeping the video on your local network, for example.
If it detects that it can, send it over the local network, peer to peer. That's part of the handshake. It determines whether it needs to send through a server, whether it needs to send over the LAN or through the internet. I do host servers, so that if you can't create a point to point connection, let's say you have security on your browser cranked to 11 it's going to send the video to a server so your IP doesn't get revealed, and then it will bounce that off back to the guest.
There are other modes. You can encode once and broadcast to multiple users. That's more experimental. There's also servers that I host for broadcasting. One service I offer is called Meshcast. io. It's part of Video Ninja, but it's also a standalone free service that you can publish video to and you can broadcast to a small audience via a server.
You have some users who can't handle multiple. Streams, because their computer is too slow or their internet is too slow. And so that's an option that lets the users participate in Video Ninja even if they can't do the default.
Jonathan: It seems like, it seems like services like meshcast. io that are going to be very server heavy are good candidates for actually charging for them.
Steve: Yeah. At the moment, the way that's working is I support third party sites. I, I've had some interest in some demand to, to offer. Like a paid mesh cast. The reality at the end of the day though is it's just too much work for me to maintain that as a paid service and do everything else. It would have to be a full time job just doing mesh cast.
And I've tried to find a balance there, but I, I, I just, it's just too much.
Jonathan: Yeah. Yeah, understandable. Alright, I do want to ask a couple of final questions before we let you go and that is, what is your favorite text editor and scripting language?
Steve: Ooh I, I, I like Notepad for a text editor. I'm a simple person at heart.
On Linux I will default to Vim. Okay. So I'm pretty comfortable with Vim. In terms of scripting languages, it depends on what I'm trying to do. My two favorite are Python and JavaScript. Vanilla JavaScript.
Yeah, it really depends on what I'm trying to do. More server side services would be Python. I might use Node, however, if I'm doing some sort of Lite API. And I love developing in the browser because it's it's so accessible. It's universal as a, as a applicational layer.
Jonathan: Yeah, makes sense. All right, sir.
Well, I sure appreciate you coming. Kind of, kind of last minute. I think it was just yesterday or the day before I asked you. I appreciate you being willing to be here today. And glad to be able to talk to you. And looking forward to hopefully a bright future for Video Ninja and all of your other projects.
Steve: Hey, thank you so very much. I appreciate it.
Jonathan: Yeah, thanks. Thanks, thanks. Pleasure. Alright. Catherine! We had a, ironically, just a little bit of technical issues. I'm still here,
Katherine: sort of. You're still here.
Jonathan: Yes. Barely. Some slight technical issues. But barring that, what do you think?
Katherine: This is great. I look forward to listening back to it for all this stuff that I couldn't quite hear.
But yeah, I don't, I don't know what's going on over here, but yeah, I'm having a little bit of a connection problem, but yeah, this is cool. I haven't heard notepad plus plus in a while, by the way, that was, that was a, that was exciting. I used to, that was my favorite quite a while ago, but I haven't heard that name in a while, so that was kind of fun.
Jonathan: I also enjoy
Katherine: developing in the browser, so, which is another phrase I haven't heard in a while. I,
Jonathan: yes. Work has
Katherine: changed so much that I think about those things.
Jonathan: Two, two thoughts there. One I've never used Notepad but the one that surprises me, Has surprised me is that so many people started using VS code and then I started using VS code.
It's like, okay, now I see why people like it, but you're right. We haven't heard as much notepad plus plus for a while and almost wonder where they're having people move from notepad plus plus over to VS code. Anyway, then in the browser is great. One of the things I like about doing development in the browser is that it.
In Chrome and in Firefox, both the developer console is so good. It's like, it's really good debugging and it's so easy to get into. Like the, the thing that drives me crazy about debugging is sometimes, not always, but something like, especially if you're doing embedded development, embedded development for like embedded devices, trying to debug is just, it's hard, like getting your debug tool chain set up, whereas in the browser, you just, you know, you, you hit F 12 or F 11, whatever it is.
And. There it is. You've got it. You can run stuff right in the console and it's all JavaScript. So it's, yeah. One of the, one of the coolest things about doing web development is that the, the deep bug. experience is so good. So anyway, back to back to video ninja. I kind of took a rabbit trail there. Yeah, no, it's, it's it's great.
I, we, we use it a lot. We enjoy it. I, I have gotten some inspiration for how to improve the show's tool chain from the, the episode today, the interview. That's very cool. Yeah, hopefully, hopefully things will be even better in the future. And then I do want to let folks know, speaking of the show for the month of July, we are actually going to we're going to try moving to recording the live recording on Tuesdays and.
I'm not sure yet whether we're going to be publishing the episodes on Tuesdays or still waiting for Wednesdays to publish, but we're going to try it out for July and move into Tuesday. And if that works, then we will probably default to Tuesdays for the future. And one of the main reasons is that that will cut down my workload on Wednesday and Thursday, because right now my Wednesday is.
Get up, record the show, and then spend the rest of the day until I go to bed making sure that the show is edited and up and available, and then get up on Thursday morning and spend the entire day doing the security article, and sometimes not getting that finished until two or three in the morning, and that is wearing me out, so we're going to we're going to move, we're going to move, yeah, we're going to move the Floss Show to Tuesday for the recording, and we'll see if that works for us.
Catherine, is there anything that you want to plug before we let everybody go?
Katherine: Oh gosh, I don't know. Sure. Yeah, I, I still, I, I, I do a podcast over at Intel open dot Intel dot com. You can find it there. Yeah, I talked to a lot of open source people. I, I, I'm doing a lot of conversations about this, this very idea of Maintainer burden, right?
And burnout ultimately. And so I'm really interested in talking to more project maintainers about that issue. So maybe that's something we can take offline later, but yeah, I yeah, I, that's, that's where you can find most me mostly hopefully with fewer technical difficulties in the future.
Jonathan: I blame the Mac.
I blame the Mac.
Katherine: Who knows? Or it could be user error. I don't know. You never know. I wouldn't put it past myself.
Jonathan: I want to mention, of course, Hackaday. We appreciate them picking up Floss Weekly, being the sponsors of the show. Now, not really sponsors, the new home, the new home of the show, not the sponsors of the show.
And then of course you can follow my other work there. We've got the security column coming on Friday mornings. And then I've got one in the works doing a review of the Turing RK1, one of those little embedded embedded arm devices. That one is pretty interesting. Hopefully going to have that done soon.
And then of course you can find some interesting stuff over on my YouTube channel. Just Search for me Jonathan Bennett over on YouTube and a lot of Meshtastic related stuff. And I think I think we're going to have another video coming out on, on Meshtastic here pretty soon. So watch for that.
We sure appreciate everybody watching. We thank you for those watching live, the small handful, and then those that get us on the download. And we will see everybody next week on Floss Weekly.