steveseguin / vdo.ninja

VDO.Ninja is a powerful tool that lets you bring remote video feeds into OBS or other studio software via WebRTC.
https://vdo.ninja
Other
2.69k stars 717 forks source link

Remote control OBS using WebSockets #841

Open ASchneiderBR opened 3 years ago

ASchneiderBR commented 3 years ago

Hello @steveseguin!

Sorry to bother you but I was thinking about this crazy idea, not sure if that would be too much or out of context.

Yesterday I was doing a live event using your platform, sharing the multiview window as a virtualcam with everyone in the call and though that would be really nice to have and assistant to change scenes on my OBS remotely. Not sure if there's already a platform that you could share your local OBS websocket instance to show all your scenes as buttons on the other side, so they could change by clicking on it, remotely, within your GUI 100% online over HTML. I think the you have coded OBS Ninja to share and connect everyone as P2P, might work using websockets.

I have never seen any solution that does it easily without sending your IP, opening ports (forwarding to it) and create a HTML interface. That would be so powerful and very useful for a lot of people.

The idea is to have the webservice to connect and read all of the scenes within the running OBS instance and expose them as buttons inside the director's lobby or chat room.

If this work, later on, we could even choose what to expose like scenes, sources, filters, and so on, having the possibility to remotely show CGs like lower thirds, changing texts and so much more :)

Not sure If could express myself the way I wanted but I hope you get the idea.

Thank you very much!

tugamars commented 3 years ago

I believe you can achieve that by portforwarding the websocket port (obs websocket plugin) and using this for the remote interface: http://www.obsremote.com/

ASchneiderBR commented 3 years ago

Thanks @tugamars ! I’ll have a look at it.

ASchneiderBR commented 3 years ago

Hello @tugamars!

I was taking a look at that solution but it seems that it uses a very old (2013) plugin to work, not the oficial websockets one. I did tried to install it manually but it did not worked for me. I think this project might be outdated or not supported anymore, sadly.

I still believe a solution like this working inside the director's room within OBS Ninja UI would be awesome to have :)

Thanks!

steveseguin commented 3 years ago

Thank you for the suggestion.

I don't quite have websocket-like controls currently of OBS via p2p yet; I'll need to chew on how I might do it as I'm not sure off hand currently. It might require writing a custom plugin for OBS or doing some funky routing via hotkeys; not sure.

ASchneiderBR commented 3 years ago

Hello Steve! Thank you, again, for taking your time to analyze this.

You did an awesome job about the suggested virtual green-screen and now this :)

Not sure if Chrome, for example, could access localhost to read OBS websocket and expose its scenes and sources using OBS Ninja's interface, so you don't need to install plugins or anything else.

I use LioranBoard a lot, which uses websockes to take control of everything within the configured running OBS instance, works really well. OBS Websocket addon is really, really powerful.

Thank you!

ASchneiderBR commented 3 years ago

Hello again @steveseguin!

Just to let you know about this - http://t2t2.github.io/obs-tablet-remote/

Just discover it and find it really cool, might be something of a starting point for this idea :)

Thanks!

steveseguin commented 3 years ago

Thank you, that would definitely help me out.

ASchneiderBR commented 3 years ago

Another good example - https://github.com/Niek/obs-web

steveseguin commented 3 years ago

Thank you again.

I think I'll be able to try something on this front next week; this week I already have a long list of high priority items to work on, though if I find the time sooner, i'll give it a go.

My thought is maybe I can add a dock to OBS, and have p2p comms routed via that, so OBS.Ninja can talk to OBS anywhere, even thru firewalls. I might be able to take one of these existing projects and just rewrite it to support my p2p logic.

Not sure what I might do beyond that yet though.

ASchneiderBR commented 3 years ago

That it awesome to hear. Those projects are really cool, though I prefer t2t2's solution because you could just broadcast your multi-view preview using your solution (because the other one has a nice 1fps preview embended) and it has source/audio controls.

The main problem of both solutions is that you need to port forward your network to use them outside your network, it would be great to use your relay system used in OBS Ninja to get around that problem. Then, in the future, tools like being able to share your OBS control to someone in the directors room, choose what you want to share with (like just scenes, sources, start/stop streaming and so on) could be added to your interface as well :)

Thank you very much (again) and looking forward to see this implemented. Count me in for beta testing or whatever you need, I'll do my best :)