wulkano / Aperture

Record the screen on macOS
MIT License
1.24k stars 112 forks source link

Windows support #46

Closed albinekb closed 5 years ago

albinekb commented 7 years ago

Related PR's:

Initial support for Windows capture with Aperture.CLI (#56) Initial Windows support (#38)

Edit from @skllcrn:

We've thought a lot about this and have decided to focus our efforts on macOS. That means that we will not officially support or maintain Aperture or Kap on other platforms.

This is free and open-source side project for us which we do to learn and have fun, the fact of the matter is that we're not currently motivated to maintain these projects on other platforms. That might change in the future, but for now we're giving the lead to the community. We encourage a fork of Aperture to support other platforms, we'd even encourage you to use the Aperture name, as long as as you develop it to maintain API parity and share our focus on performance and quality.

skoshx commented 6 years ago

Hello, i recently came across Kap, as i was browsing @sindresorhus projects and saw that it was macOS only (i undestand why, windows is trash for developing). I started looking for libraries that could be used to record screen but apparently all of them for some reason use 90% CPU and record only like 10FPS.

I have started implementing a similar screen recorder as aperture, and once i finish it, i would be glad to maintain the Windows side of things..

jtoy commented 6 years ago

+1

ghost commented 6 years ago

Hey, I'm not sure if this helps in any way to this project but I faced the same performance troubles with generic screen capture methods (on Windows) and decided to roll my own code for capturing screenshots and recording/encoding the screen.

It's all on the Captain app but I'm planning to move all the capture/recording/encoding code to a homonymous C# library that could be more or less easy to integrate with Node.js.

For achieving extra performance, it uses DXGI Desktop Duplication on modern Windows and falls back to Direct3D 9 or GDI (which are less performant but still working). Video encoding is done using native Media Foundation which is hardware accelerated and very performant in many cases (i.e. capturing and encoding is all done on the GPU whenever possible)

However, it all requires a lot of work and polish, but it works.

Edit: I forked aperture and tried to use edge with my library to no avail. I think a CLI wrapper (which is the same approach used on OSX) is the way to go. Edit 2: I got it working, somehow (no audio for now though)

sindresorhus commented 5 years ago

Closing as it's not something we intend to do. Just make a different npm package.