Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Windows #20

Closed
jadbox opened this issue Oct 5, 2016 · 24 comments
Closed

Support Windows #20

jadbox opened this issue Oct 5, 2016 · 24 comments

Comments

@jadbox
Copy link

jadbox commented Oct 5, 2016

Please? ;)

What's the level of effort- is there Mac only extensions/libs being used with Electron?

@timothyis
Copy link
Member

timothyis commented Oct 5, 2016

Our main lib that we created is Mac only right now. We want it to be full-on web tech and we'd love to support other systems, but we can't do that at the moment.

Pull requests are welcome at Aperture to make it cross-compatible!

@maxlath
Copy link

maxlath commented Oct 6, 2016

was about to open the same issue for Linux: yep, cross-platform would be awesome :)

@dmitry
Copy link

dmitry commented Oct 7, 2016

I think it's better to open separate issue for linux.

@timothyis timothyis changed the title Windows 10 builds Support Windows Oct 7, 2016
@timothyis timothyis mentioned this issue Oct 7, 2016
@madcampos
Copy link

Doesn't electron's desktopCapturer api supply the methods needed?
I think it's almost like what is used for webrtc or something like that.

@doot0
Copy link
Contributor

doot0 commented Oct 20, 2016

@madcampos It does, but the performance is does not meet the standards we want to deliver. We experimented with it early on but we couldn't glean a decent FPS from the capturer API, hence why we opted to write a native library with AVFoundation and use that instead.

@madcampos
Copy link

What are the performance problems?
Maybe we can workout something, if it's more performant on windows there can be a option to use the native library on one platform and the electron builtin on another, or offer it as a fallback even with performance hits while a native addon is in the works.

@matheuss
Copy link
Member

matheuss commented Oct 20, 2016

@madcampos I'm busy right now but I don't want to leave you without an answer, so I'm giving a quick one:

We tried the UserMedia API for several days and it turned out to be very shitty: we had an average of ~15 fps when recording the whole screen and it used a lot of CPU for that. Then we moved to ffmpeg, which can record just fine, but also uses a lot (less than UserMedia) of CPU.

So we decided to go native. It's the hardest path, but the best in terms of performance – based on our experience 😄

See aperture.js' Why section for more info: aperture.js#why

@doot0
Copy link
Contributor

doot0 commented Oct 20, 2016

To expand a little;

We've actually discussed this internally for a little while. We have explored using ffmpeg as a cross-platform fallback but the CPU usage has shown to be extremely costly (see here for comparison). Additionally, in order to meet our ideal performance margins we would need to tweak performance for ffmpeg on a per-system basis, which would probably be pretty complex. 🤔

@levrik
Copy link

levrik commented Nov 20, 2016

OBS is doing some screen capturing on Windows. I think the code is located here: https://github.com/jp9000/obs-studio/tree/master/plugins/win-capture
But I don't know how the CPU usage or performance is and if this is helpful.

@PaulBGD
Copy link

PaulBGD commented Nov 20, 2016

After I'm finished with #37 I'll look into getting this working on Window. Most of the work separating OS code is done in #37 so this shouldn't be too hard.

@aredfox
Copy link

aredfox commented Dec 23, 2016

+1
I noticed desktopCapturer is indeed a pitfall and too slow, it (calling .getSources()) also freezes electron UI/process for a brief moment (even when using proper callbacks etc) - on all platforms. Since I feel the API that comes with electron really underdelivers, I posted this as an issue on electron/electron electron/electron#8246.

@madcampos
Copy link

From what I've been prospecting, it's an issue within chromium.
For windows, the native methods relay on basically 3 apis:

  1. GDI - witch is somewhat slow depending on the size of the screen and the codec been used, I tested it with ffmpeg (it's their default method)
  2. DirectX - from what I read, it can be fast but is a little harder to implement/depend on more libs/versions witch can lead to dll hell
  3. WinRT (universal platform api) - it's shinny and new, meaning it will be win 8+ but seems easy to implement.

The problem i got with ffmpeg was frame drop on the recording, some combinations of apis + codecs barely got 30fps. And that is a problem also, encoding to something other than AVI will be a question of post-processing the video.

@PaulBGD
Copy link

PaulBGD commented Dec 24, 2016

@madcampos Did you make sure to enable GPU encoding with ffmpeg?

@madcampos
Copy link

@PaulBGD I think no, it wasn't enabled... I don't think there is an option with the pre-compiled binaries (the one I'm using)

@bdbch
Copy link

bdbch commented Jan 12, 2017

Maybe we could use this library for recording the screen?
https://github.com/wulkano/aperture.js

@bdbch
Copy link

bdbch commented Jan 12, 2017

wow nevermind... I just saw it's written by you too. :D I'll try to get it working on Windows somehow.

@grahamperrin
Copy link

Multi-platform #123 was closed in favour of this issue 20 so I'll express an interest in use on FreeBSD-based TrueOS Desktop. Related: electron/electron#3797

@Jbithell
Copy link

+1 for Windows support

@doot0
Copy link
Contributor

doot0 commented Feb 16, 2017

Commenting "+1" doesn't achieve anything. This is why github introduced emoji reactions to comments. Please refrain from commenting "+1".

@Jbithell
Copy link

Jbithell commented Feb 16, 2017

I'd like it on Windows because it looks like a really cool piece of software, Macs are prohibitively expensive, and Windows has been crying out for this kind of thing for a long time.

@wulkano wulkano locked and limited conversation to collaborators Feb 16, 2017
@matheuss
Copy link
Member

matheuss commented Feb 16, 2017

Actually commenting +1 just adds one useless notification to the ~100 that appeared on my github.com/notifications just today 😐

If someone has any useful info/idea/etc about how to port Kap to Windows, please feel free to contribute!

@wulkano wulkano unlocked this conversation Oct 20, 2017
@wulkano wulkano deleted a comment from albinekb Nov 2, 2017
@wulkano wulkano deleted a comment from Torbilicious Nov 2, 2017
@wulkano wulkano deleted a comment from albinekb Nov 2, 2017
@wulkano wulkano deleted a comment from Fydon Nov 2, 2017
@wulkano wulkano deleted a comment from Torbilicious Nov 2, 2017
@ghost
Copy link

ghost commented Feb 2, 2018

Could FFMPEG support be added for Windows in Aperture?

Cos using Graphics Acceleration to record it provides far better framerate than using CPUs. E.g. using Intel QuickSync H.264 on Intel iGPUs.

OBS Studio implements QuickSync H.264 support (Intel iGPUs) as well as NVENC support (on Nvidia dGPUs)and AMD's GPU accelerated codec support so it's clearly possible.

@benfavre
Copy link

benfavre commented Feb 3, 2018

Open source software for Mac only always makes me laugh. Just WTF

@wulkano wulkano deleted a comment from ikourfaln Feb 3, 2018
@wulkano wulkano locked as off-topic and limited conversation to collaborators Feb 3, 2018
@skllcrn
Copy link
Member

skllcrn commented May 11, 2018

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests