Comments (24)
was about to open the same issue for Linux: yep, cross-platform would be awesome :)
from kap.
+1 for Windows support
from kap.
I think it's better to open separate issue for linux.
from kap.
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.
from kap.
wow nevermind... I just saw it's written by you too. :D I'll try to get it working on Windows somehow.
from kap.
Open source software for Mac only always makes me laugh. Just WTF
from kap.
@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.
from kap.
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.
from kap.
@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
from kap.
Maybe we could use this library for recording the screen?
https://github.com/wulkano/aperture.js
from kap.
Commenting "+1" doesn't achieve anything. This is why github introduced emoji reactions to comments. Please refrain from commenting "+1".
from kap.
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.
from kap.
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!
from kap.
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.
from kap.
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. 🤔
from kap.
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.
from kap.
+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.
from kap.
From what I've been prospecting, it's an issue within chromium.
For windows, the native methods relay on basically 3 apis:
- 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)
- 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
- 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.
from kap.
@madcampos Did you make sure to enable GPU encoding with ffmpeg?
from kap.
@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)
from kap.
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
from kap.
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.
from kap.
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!
from kap.
See https://github.com/wulkano/aperture#why and wulkano/Aperture#30 (comment). Closing in favour of #456.
from kap.
Related Issues (20)
- libwebp : Vulnerable Electron 13.6.9 found in Kap
- Unhandled Promise Rejection HOT 1
- Has Kap development been abandoned? HOT 5
- Does not show the UI, and doesn't show up in the menubar. HOT 1
- Unhandled Promise Rejection HOT 2
- Error on startup (M1 Mac)
- Directly Record Compressed
- Activation of Kap is slow with large displays HOT 4
- The background color of reduced size on white is pink-ish. HOT 1
- Add support for multiple loop types HOT 1
- Kap Behaves Unexpectedly when Magnification tool on MacOS is used.
- Dotted line shows at the bottom after convert. HOT 3
- Limiting In-app Navigation, Santizing Links, and Electron.js Version Upgrade
- Unhandled Promise Rejection Error: Cannot download "https://objects.githubusercontent.com/github-production-release-asset-2e65be/65411043/dc097279-94c4-4189-adf7-7eb46e2930a0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220303%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220303T202905Z&X-Amz-Expires=300&X-Amz-Signature=14ded9e5de067facf9d78c074c08405ca088590d94d4d27acf996a3251ce2927&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=65411043&response-content-disposition=attachment%3B%20filename%3DKap-3.5.4-mac.zip&response-content-type=application%2Foctet-stream", status 503: at ClientRequest.<anonymous> (/Applications/Kap.app/Contents/Resources/app.asar/node_modules/electron-updater/node_modules/builder-util-runtime/out/httpExecutor.js:213:34) at SimpleURLLoaderWrapper.<anonymous> (electron/js2c/browser_init.js:105:6816) HOT 1
- Support local Google Drive copy
- Crash on start M3 Pro HOT 6
- Contributing – running app locally by yarn start, but I can't allow recording permissions in the development HOT 5
- Option to Disable Overlay in Non-Recording Screen
- Unhandled Error
- After fresh installation, could not find the option "Select input device". After solved this issue, no Audio in playback.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kap.