# Run as headless PC service?

**URL:** <https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454>\
**Category:** Integration\
**Created:** [August 10, 2022, 12:56pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454 "2022-08-10T12:56:54Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![chazhenry](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/chazhenry/32/1694_2.png) [@chazhenry](https://mediasoup.discourse.group/u/chazhenry)\
**Post date:** [August 10, 2022, 12:56pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/1 "2022-08-10T12:56:54Z")

</div>

I’m looking for a WebRTC streamer that would run as a PC service (no GUI). My PC app would call the service (via sockets) to stream and record a portion of our app screen. Can MediaSoup do this - or be programmed to? Thanks.

---

<div class="post-metadata">

**Author:** ![zaidiqbal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/zaidiqbal/32/1498_2.png) [@zaidiqbal](https://mediasoup.discourse.group/u/zaidiqbal)\
**Post date:** [August 10, 2022, 1:03pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/2 "2022-08-10T13:03:25Z")

</div>

Mediasoup can be used to stream the things, however the way you capture the portion of your app screen’s stream is up to your application and this stream can the passed to mediasoup and user can view it based upon you requirements.

---

<div class="post-metadata">

**Author:** ![zaidiqbal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/zaidiqbal/32/1498_2.png) [@zaidiqbal](https://mediasoup.discourse.group/u/zaidiqbal)\
**Post date:** [August 10, 2022, 1:03pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/3 "2022-08-10T13:03:55Z")

</div>

How many users can view this streamed video?

---

<div class="post-metadata">

**Author:** ![chazhenry](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/chazhenry/32/1694_2.png) [@chazhenry](https://mediasoup.discourse.group/u/chazhenry)\
**Post date:** [August 10, 2022, 1:50pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/4 "2022-08-10T13:50:07Z")

</div>

Initially, we only need a 1:1 share. Looking to keep this sockets between our app and a browser with no need for central servers.

---

<div class="post-metadata">

**Author:** ![zaidiqbal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/zaidiqbal/32/1498_2.png) [@zaidiqbal](https://mediasoup.discourse.group/u/zaidiqbal)\
**Post date:** [August 10, 2022, 2:02pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/5 "2022-08-10T14:02:57Z")

</div>

For mediasoup you will need a server because it is SFU.

If your need is 1:1 then peer to peer methodology is the way to go using plain webrtc, this doesn’t need any servers.

---

<div class="post-metadata">

**Author:** ![aetheon](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/aetheon/32/39_2.png) [@aetheon](https://mediasoup.discourse.group/u/aetheon)\
**Post date:** [August 10, 2022, 2:47pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/6 "2022-08-10T14:47:32Z")

</div>

Something simple like PeerJS will give you that 1:1 video sharing behaviour. I don’t see the need for an SFU like mediasoup.

---

<div class="post-metadata">

**Author:** ![chazhenry](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/chazhenry/32/1694_2.png) [@chazhenry](https://mediasoup.discourse.group/u/chazhenry)\
**Post date:** [August 10, 2022, 6:08pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/7 "2022-08-10T18:08:41Z")

</div>

Yes, but my app doesn’t do WebRTC and the libraries I’ve found are JS. I need to make my windows.exe app stream WebRTC. Rather than compile something in, I’d prefer to run a windows service and command it. Is MediaSoup a windows app? Specifically, my app shouldn’t require a browser to be running. I want a service, not a server.

---

<div class="post-metadata">

**Author:** ![zaidiqbal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/zaidiqbal/32/1498_2.png) [@zaidiqbal](https://mediasoup.discourse.group/u/zaidiqbal)\
**Post date:** [August 10, 2022, 6:14pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/8 "2022-08-10T18:14:42Z")

</div>

No, mediasoup has its client side libraries available in js, c++. You can use c++ based library in your windows based application somehow.

But as you said you need 1:1 so mediaosup is not something that you need it is used where large audience is needed like a call of 1000 people. As it needs server so it is going to be costly as well based upon your need. You need peer to peer solution.

There will be many webrtc libraries out there to be used in windows based application. In which language your windows app is written?

---

<div class="post-metadata">

**Author:** ![chazhenry](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/chazhenry/32/1694_2.png) [@chazhenry](https://mediasoup.discourse.group/u/chazhenry)\
**Post date:** [August 10, 2022, 6:19pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/9 "2022-08-10T18:19:03Z")

</div>

Written in Java. I’d prefer a server as service because I’ll eventually expand to multi-user. Still trying to understand MediaSoup. Could I compile it into a headless server, wrap a socket protocol around it and have it broadcast a portion of my app’s screen on command?

---

<div class="post-metadata">

**Author:** ![zaidiqbal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/zaidiqbal/32/1498_2.png) [@zaidiqbal](https://mediasoup.discourse.group/u/zaidiqbal)\
**Post date:** [August 10, 2022, 6:20pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/10 "2022-08-10T18:20:40Z")

</div>

When you say headless you mean the headless browser like chromium and using some libraries like puppeteer?

---

<div class="post-metadata">

**Author:** ![chazhenry](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/chazhenry/32/1694_2.png) [@chazhenry](https://mediasoup.discourse.group/u/chazhenry)\
**Post date:** [August 10, 2022, 6:28pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/11 "2022-08-10T18:28:31Z")

</div>

I want no browser; just a windows process that I can command. For example, I can run /windows/ffmpeg.exe as a background task, send it a start and stop command and have it record the screen. I’m looking to build a WebRTC server/service that runs independent of my app, but can be commanded in a similar way to stream using the WebRTC protocol.

---

<div class="post-metadata">

**Author:** ![zaidiqbal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/zaidiqbal/32/1498_2.png) [@zaidiqbal](https://mediasoup.discourse.group/u/zaidiqbal)\
**Post date:** [August 10, 2022, 6:32pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/12 "2022-08-10T18:32:19Z")

</div>

In that case you will need mediasoup client to communicate to your mediasoup server. Now that mediasoup client is not officially available for java. What you can do is use the c++ based mediasoup client and if you can’t use it directly you may have to expose it’s methods to java via some bridge, no idea how. That’s the same process how mediasoup c++ client is used in android/ios.

---

<div class="post-metadata">

**Author:** ![zaidiqbal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/zaidiqbal/32/1498_2.png) [@zaidiqbal](https://mediasoup.discourse.group/u/zaidiqbal)\
**Post date:** [August 10, 2022, 6:33pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/13 "2022-08-10T18:33:27Z")

</div>

Your server will use mediasoup server side library which is nodejs based. Which infact work in c++ under the hood.

---

<div class="post-metadata">

**Author:** ![chazhenry](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/chazhenry/32/1694_2.png) [@chazhenry](https://mediasoup.discourse.group/u/chazhenry)\
**Post date:** [August 10, 2022, 6:37pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/14 "2022-08-10T18:37:04Z")

</div>

Yes. That’s my original ask. My app source code should be irrelevant. I don’t want to compile them together for multiple reasons. My app will talk sockets to another standalone app - a custom MS. So, back to the original question: Can I wrapper a socket protocol around MS and have my app command it to stop/start streaming? When my app ends, it will send ‘exit’ to the local MS service.

---

<div class="post-metadata">

**Author:** ![zaidiqbal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/zaidiqbal/32/1498_2.png) [@zaidiqbal](https://mediasoup.discourse.group/u/zaidiqbal)\
**Post date:** [August 10, 2022, 6:41pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/15 "2022-08-10T18:41:44Z")

</div>

Yes you can do that. Once you have your mediasoup app you can use it anyway you like.  
The main challenge here will be how to pass stream from your app to this custom MS app.

---

<div class="post-metadata">

**Author:** ![chazhenry](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/chazhenry/32/1694_2.png) [@chazhenry](https://mediasoup.discourse.group/u/chazhenry)\
**Post date:** [August 10, 2022, 6:43pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/16 "2022-08-10T18:43:55Z")

</div>

So I have all the source to extend MS server side library and add a socket based comm protocol? My thought would then be to use electron or some compiler to make it a standalone exe. My app would then use it to broadcast. I understand that I’d need to do so for a portion of the screen, but does MS not have share parameters like desktop/app/screen? I would like to send a high level command like that and not have to produce the stream for it.

---

<div class="post-metadata">

**Author:** ![zaidiqbal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/zaidiqbal/32/1498_2.png) [@zaidiqbal](https://mediasoup.discourse.group/u/zaidiqbal)\
**Post date:** [August 10, 2022, 6:50pm UTC](https://mediasoup.discourse.group/t/run-as-headless-pc-service/4454/17 "2022-08-10T18:50:30Z")

</div>

Mediasoup doesn’t have these parameters, it doesn’t know all this stuff it just needs stream from client side that stream is sent to server and server then distribute it in SFU way.

Didn’t you said initially that you don’t need a central server? mediasoup is all about central server
