fzwoch / obs-teleport

An OBS Studio plugin for an open NDI-like replacement. Pretty simple, straight forward. No NDI compatibility in any form.
GNU General Public License v2.0
445 stars 16 forks source link

Possible flutter integration? #89

Closed kasutu closed 9 months ago

kasutu commented 9 months ago

I am wondering if this is possible with flutter.

I want to use the phones camera input and stream it to OBS.

considering the same operation when enabling teleport in OBS just by simply turning it on and adding an identifier.

fzwoch commented 9 months ago

Not quite sure about the question..

Of course, just write an OBS plugin host - or implement the Teleport protocol in Flutter. But no way without some effort..

kasutu commented 9 months ago

Will do, but i would also like to know how teleport works on a higher level since i dont know golang.

Can you provide an explanation of each teleport component on what it does and the protocols ?

Maybe i can scan it in flutter using mDNS

fzwoch commented 9 months ago

There is no exact documentation on the format as it may change anytime, but it is not difficult.

Peer discovery is done via multicast broadcast. That means stream sources broadcast in intervals that they exist und clients listen for such messages to know where they are. These message just contain basic JSON data with some information where to connect to for the stream.

The data stream itself is just some small header in front of each data chunk, which is either a JPEG video frame or a couple of PCM audio frames. But for details you have to check the source.

kasutu commented 9 months ago

There is no exact documentation on the format as it may change anytime, but it is not difficult.

Peer discovery is done via multicast broadcast. That means stream sources broadcast in intervals that they exist und clients listen for such messages to know where they are. These message just contain basic JSON data with some information where to connect to for the stream.

The data stream itself is just some small header in front of each data chunk, which is either a JPEG video frame or a couple of PCM audio frames. But for details you have to check the source.

That should work, thanks for the info !

kasutu commented 9 months ago

Is this the correct service type when searching for broadcasting sources?

const String serviceType = '_http._tcp';

I'm trying to figure out what is the search criteria of the discoverer.go so i can discover and announce in flutter.

is there any custom protocol used?

fzwoch commented 9 months ago

Absolutely not. :) It is multicast UDP. It is somewhere in the peerdiscovery dependency. There is a multicast IP address and a port. You have to join that endpoint and send data periodically. The data payload is just a JSON struct with the Peerdiscovery payload that is in types.go

fzwoch commented 9 months ago

it is really just sending a few dozen bytes to a specific address (and listen on the same for discovery). it should be fairly simple, although of course i was happy to see someone did a nice wrapped API for me. I do not know though what flutter allows..

On Tue, Dec 19, 2023 at 10:14 AM Jerome Cabugwason @.***> wrote:

Looks like im gonna build peerdiscovery implementation in flutter 😀

Or

Add a webrtc option in obs teleport 👀

— Reply to this email directly, view it on GitHub https://github.com/fzwoch/obs-teleport/issues/89#issuecomment-1862387452, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADLKNKCEATL7IFTXEJ3BW3YKFLGRAVCNFSM6AAAAABAY3WTRSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRSGM4DONBVGI . You are receiving this because you commented.Message ID: @.***>

kasutu commented 9 months ago

Accidentally deleted the previous comment.

here is my findings:

using MitchTalmadge/Multicast-Tester and default IP and PORT, teleport instances can be discovered.

image

This leads me to pivot in using java/kotlin.

will be back with the app

thanks a lot @fzwoch !

kasutu commented 9 months ago

Got it working on flutter

https://github.com/kasutu/obs_teleport_mobile

stay tuned peeps