mathewsachin / captura Goto Github PK
View Code? Open in Web Editor NEWCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes
Home Page: https://mathewsachin.github.io/Captura/
License: MIT License
Capture Screen, Audio, Cursor, Mouse Clicks and Keystrokes
Home Page: https://mathewsachin.github.io/Captura/
License: MIT License
Hello,
The Region Selector will not size itself to an object with 1024x768 pixels. To illustrate this, I created a program that simulates a Virtual Machine Guest window (what I use Captura for). The Region Selector works great with sizes of 800x600, 1280x720, and so on. But it will not conform to 1024x768 resolution.
Watch video for a demonstration of this bug.
When RegionSelector is Maximized, the area captured is the same as that when it was in Normal state
This is the console output
PS C:\Users\phg\Desktop> choco install captura
Chocolatey v0.10.7
Installing the following packages:
captura
By installing you accept licenses for the packages.
Progress: Downloading captura 5.0.0... 100%
captura v5.0.0 [Approved]
captura package files install completed. Performing other installation steps.
The package captura wants to run 'chocolateyinstall.ps1'.
Note: If you don't run this script, the installation will fail.
Note: To confirm automatically next time, use '-y' or consider:
choco feature enable -n allowGlobalConfirmation
Do you want to run the script?([Y]es/[N]o/[P]rint): y
ERROR: The response content cannot be parsed because the Internet Explorer engine is not available, or Interne
t Explorer's first-launch configuration is not complete. Specify the UseBasicParsing parameter and try again.
The install of captura was NOT successful.
Error while running 'C:\ProgramData\chocolatey\lib\captura\tools\chocolateyinstall.ps1'.
See log for details.
Chocolatey installed 0/1 packages. 1 packages failed.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Failures
- captura (exited -1) - Error while running 'C:\ProgramData\chocolatey\lib\captura\tools\chocolateyinstall.ps1'.
See log for details.
Apparently, the command Invoke-WebRequest https://api.github.com/repos/MathewSachin/Captura/releases/latest
fails if IE has never run.
Either the parameter "-UseBasicParsing" should added, or user should be prompted to run IE.
Updating captura also fails under the conditions above.
Add options to toggle mouse and keyboard overlay while recording. Specially keyboard toggle would be useful to trace special keys which can't be screen (like shortcuts in applications).
It would great to have an option
to add overlay with time elapsed
something like in Licecap
maybe even with some configuration
like time elapsed/time till end/total time
it would be useful in gif recordings
Using V6.0 version, through command line captura start --length 10 --cursor --keys --speaker=0, the countdown ends the command line tool to stop, no video output. The start and end buttons in UI can be recorded and saved, and the win10 I use
now i want record both side audio in/out.
but now this project cant record both.
i hope u help me.
When I run console app like "captura start" and then just close console window the output video file is broken.
It would be nice to stop video recording when user terminate process, like this:
AppDomain.CurrentDomain.ProcessExit +=
new EventHandler(CurrentDomain_ProcessExit);
Hi. Is there any minimum system requirement for using Captura ? I tried it in a 1.4 GHz Duo Core, 4GB RAM system. The system gets stuck everytime I do that. Also is there a way to make it run in this configuration ?
If I select "Region" and then click on "Snap to Window" (press and release immediately) in Region Selector, I get an Exception.
Example is attached.
2017-07-04-10-43-46.zip
Hello, developer. Here I got an issue when I was recording with audio. It seems that it cannot create any video file while recording, and when the record stops, I get only an MP4 file with a frame of screenshot.
Would you please solve this issue?
Note - FFMpeg log with issue:
ffmpeg version N-90094-ga877d22d9a Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libmfx --enable-amf --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth
libavutil 56. 7.101 / 56. 7.101
libavcodec 58. 11.101 / 58. 11.101
libavformat 58. 9.100 / 58. 9.100
libavdevice 58. 1.100 / 58. 1.100
libavfilter 7. 12.100 / 7. 12.100
libswscale 5. 0.101 / 5. 0.101
libswresample 3. 0.101 / 3. 0.101
libpostproc 55. 0.100 / 55. 0.100
Input #0, rawvideo, from '\\.\pipe\captura-c8d71366-b3c8-4da6-8370-1097a7f7969c':
Duration: N/A, start: 0.000000, bitrate: 663552 kb/s
Stream #0:0: Video: rawvideo (BGRA / 0x41524742), bgra, 1920x1080, 663552 kb/s, 10 tbr, 10 tbn, 10 tbc
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, s16le, from '\\.\pipe\captura-3cf4cc2b-b08d-40a2-94a8-80380626931a':
Duration: N/A, bitrate: 1411 kb/s
Stream #1:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 00000234d02ff840] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 00000234d02ff840] profile Constrained Baseline, level 4.0
[libx264 @ 00000234d02ff840] 264 - core 155 r2901 7d0ff22 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=10 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=15.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
Finishing stream 0:1 without any data written to it.
Output #0, mp4, to 'D:\鎴戠殑鏂囨。\Captura\2018-02-23-16-58-40.mp4':
Metadata:
encoder : Lavf58.9.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, q=-1--1, 10 fps, 10240 tbn, 10 tbc
Metadata:
encoder : Lavc58.11.101 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 512 kb/s
Metadata:
encoder : Lavc58.11.101 aac
video:262kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.297385%
[libx264 @ 00000234d02ff840] frame I:1 Avg QP:12.00 size:267404
[libx264 @ 00000234d02ff840] mb I I16..4: 100.0% 0.0% 0.0%
[libx264 @ 00000234d02ff840] coded y,uvDC,uvAC intra: 29.8% 20.0% 18.6%
[libx264 @ 00000234d02ff840] i16 v,h,dc,p: 64% 33% 2% 1%
[libx264 @ 00000234d02ff840] i8c dc,h,v,p: 76% 15% 8% 1%
[libx264 @ 00000234d02ff840] kb/s:21392.32
[aac @ 00000234d0302800] Qavg: nan
As I found out the user has no choice where to install Capture.
He is forced to install it into
C:\Users<username>\AppData\Local\Captura\
Why not letting the user select a different folder e.g.
D:\tools\screenrec\Captura
?
Furthermore I would appreciate if you could offer another separate portable package of Capture
which needs only to be extracted to run.
Thanks
It would be nice if there was an installer packages, that would create shortcuts in start menu and desktop, put files in appropriate places, detect ffmpeg binaries, and so on.
It needs to make screenshots and execute them.
One sulution is to make screenshot into shared memory, and execute it in a target application.
Is there an Captura's API which can do a part of this.
I think I just found a bug. If I select a microphone or speaker audio source, no video file is generated. Without any audio source capturing works. Can you please take a look at this?
Webcam Capture is not working for me. Windows 10 64-Bit 1703. Chose "Integrated Camera" but preview windows remains black whereas a recording will show white noise. Other programs such as OneNote can use the webcam.
This is a built-in device on my Lenovo T540p.
Device managers says it's a "SunplusIT Integrated Camera".
Device Path:
USB\VID_5986&PID_026A&MI_00\6&7AE9AEF&0&0000
Hardware-IDs:
USB\VID_5986&PID_026A&REV_0003&MI_00
USB\VID_5986&PID_026A&MI_00_
Running Captura as Administrator makes no difference. Enabling Desktop Duplication API makes no difference.
How can I help debugging?
System.Runtime.InteropServices.ExternalException (0x800401D0): Requested Clipboard operation did not succeed.
at System.Windows.Forms.Clipboard.ThrowIfFailed(Int32 hr)
at System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy, Int32 retryTimes, Int32 retryDelay)
at System.Windows.Forms.Clipboard.SetText(String text, TextDataFormat format)
at System.Windows.Forms.Clipboard.SetText(String text)
at Captura.ViewModels.MainViewModel.<StopRecording>d__29.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Captura.ViewModels.MainViewModel.<<-ctor>b__11_3>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)
at Captura.App.Main()
When i try to capture DISPLAY1 only it captures DISPLAY1 and a black screen at the position of DISPLAY2, so the result is, on the left of the screen, my video and on the right, a black square.
Since Captura has FFMpeg support already would it be possible to add webm (VP8) exporting?
While one could use another software to convert mp4 files made in Captura to webm it would be easier if one didn't have to do an extra step like that, all modern browsers support direct webm playback.
I still use WebMCam by thetarkus since Captura doesn't have the option, which I wish it did because besides this I'm very much liking Captura overall, though I'm not sure why the frame rate is limited to 30.
Would it be possible to also save the last used video codec and window so I don't have to set them again after every restart?
Your work is very good. Thank you. But do not try to capture a specific window. When minimized, the window shrinks or open a new window on the full screen is still recording. When you will be able to fix this problem? Also How to add system sound except for the microphone sound ?
If Captura encounters a global hotkey that it wants to use, it tries to show a human-readable error message on startup and carry on - but this is bugged and crashes the application altogether.
Steps to reproduce:
Runs without further issues after commenting out the following line:
Stack trace:
System.InvalidOperationException occurred
HResult=0x80131509
Message=Cannot set Owner property to a Window that has not been shown previously.
Source=PresentationFramework
StackTrace:
at System.Windows.Window.set_Owner(Window value)
at FirstFloor.ModernUI.Windows.Controls.ModernDialog..ctor()
at Captura.Models.MessageProvider.<>c__DisplayClass0_0.<ShowError>b__0() in D:\Workspace\Hacktoberfest\Captura\src\Captura\Models\MessageProvider.cs:line 15
at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout)
at System.Windows.Threading.Dispatcher.Invoke(Action callback)
at Captura.Models.MessageProvider.ShowError(String Message) in D:\Workspace\Hacktoberfest\Captura\src\Captura\Models\MessageProvider.cs:line 13
at Captura.HotKeyManager.Populate() in D:\Workspace\Hacktoberfest\Captura\src\Captura.Core\Models\Hotkeys\HotKeyManager.cs:line 52
at Captura.HotKeyManager.RegisterAll() in D:\Workspace\Hacktoberfest\Captura\src\Captura.Core\Models\Hotkeys\HotKeyManager.cs:line 20
at Captura.ViewModels.MainViewModel.Init(Boolean Persist, Boolean Timer, Boolean Remembered, Boolean Hotkeys) in D:\Workspace\Hacktoberfest\Captura\src\Captura.Core\ViewModels\MainViewModel.cs:line 237
at Captura.MainWindow..ctor() in D:\Workspace\Hacktoberfest\Captura\src\Captura\MainWindow.xaml.cs:line 62
Why not create a custom installer with inno setup?
With the languages already found in the Captura and also please add my language that you send.
It would be good.
See this video for sample (it was around 10 seconds long when I took it):
https://youtu.be/PtNPoYsXy-0
Edit: It only does this if the frame rate of the video exceeds 30fps.
When I run Captura.Console app from my GUI app like this:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = true;
startInfo.FileName = captureExePath;//captura.exe
startInfo.Arguments = "start --source 100,100,300,400";
process = new Process();
process.StartInfo = startInfo;
process.Start();
I get an exption:
"Cannot read keys when either application does not have a console or when console input has been redirected from a file. Try Console.Read."
at System.Console.ReadKey(Boolean intercept)
at Captura.Console.Program.Start(MainViewModel ViewModel, StartCmdOptions StartOptions)
at Captura.Console.Program.<>c.<Main>b__0_0(String verb, Object options)
at CommandLine.Parser.ParseArguments(String[] args, Object options, Action`2 onVerbCommand)
at Captura.Console.Program.Main(String[] args)
This is caused by line 385 Program.cs:
while (ReadKey(true).KeyChar != 'q') ;
It would be nice to change this block of code for something more "external friendly" :)
...
else
{
var text = "Press q to quit";
Write(text);
while (ReadKey(true).KeyChar != 'q') ;
Write(new string('\b', text.Length));
}
...
Downloaded the compiled app first and it ran great. I downloaded the code and ran in Visual Studio 2017 and the screen capture and video captures are all black with no images. Any ideas what the issue might be?
Hello
Thanks for your project, I took some inspiration for my own recorder :)
While working on that I found out that ffmpeg/mp4 fails when the screen resolution is not dividable by 2. This can happen if you have multiple screens where one is lower than the other.
To fix this, I use scaling for the videou out like this:
-vf "scale={img.Width}:-2"
With that line, it uses the regular width (which is usually dividable by 2) and makes the height dividable by 2 but keeping the aspect ratio. Maybe there should be some more calculation in case that the width is also not dividable by 2.
When I enable mouse click monitoring a fat yellow circle is drawn around the mouse click.
I found no option
Could you add these options
Add translations for more languages.
See the Translation Guide
Happy Hacktoberfest!
Thank you to all the contributors. 🎉
Excellent video capture program! I use it to make tutorials/info videos using virtual machines. Being able to record the VM guest from the host is important to me. Thank you.
I have a couple of suggestions:
How can I donate to you? Your PayPal link does not work. I would like to use PayPal or CC card.
This app is SO much easier to use than OBS for recording from the screen.
Is there any way you'd consider adding Twitch / YouTube Live / LiveStream / etc support for real time streaming?
Hi,
Thank you for this great project. I am using Screna in one of my projects. I use RegionProvider, MixedAudioProvider and FFMpegWriter. While recording the FFMpeg exited suddenly without me calling pause or stop method. Though it happened only once I am little bit skeptical on whether this might happen again. What do you think might be the reason for this ?
Reference:
https://developer.nvidia.com/ffmpeg
it is only a suggestion for more efficiency of "Captura", for those who posses NVIDIA graphic cards.
Hi,
I've just downloaded the latest portable version and scanned the files using VirusTotal which found the following issues:
Comodo | Heur.Packed.Unknown | 20171125
Cylance | Unsafe | 20171125
Cyren | W32/GenBl.3EAA0B13!Olympus | 20171125
TrendMicro-HouseCall | Suspicious_GEN.F47V1117 | 20171125
Captura looks great and I would love to install it but having just cleaned my system yesterday from a troublesome infection I am double checking everything prior to installing it.
I have attached the file so you can have a look at it.
Hope this helps
Where are the settings pf Captura stored?
I prefer a storage into an *.ini file in the installation folder. This way I could keep all related files together and run Capture from USB flash drive.
Furthermore I could copy this *.ini file onto another computer into another Capture installation
Could you let users at least export (+import) settings
Hi, I am using Windows 10 and unable to resize the region capture size. And it also randomly move by itself sometimes.
I used "captura start" and then used "q" to quit the recording after about 10secs. It says a video file was saved. But it has size 0. I tried setting a filename in another directory. All other params where omiited so default. ffmpeg is available in path. The ui captura works fine.
capturalist.txt
When I run "captura shot --source 100,100,300,400" the program stops with exception:
Unhandled Exception: System.Exception: 100,100,300,400 is not a valid value for Int32. ---> System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.ComponentModel.Int32Converter.FromString(String value, NumberFormatInfo formatInfo)
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Drawing.RectangleConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at Captura.Console.Program.HandleVideoSource(MainViewModel ViewModel, CommonCmdOptions CommonOptions)
at Captura.Console.Program.Shot(MainViewModel ViewModel, ShotCmdOptions ShotOptions)
at Captura.Console.Program.<>c.<Main>b__0_0(String verb, Object options)
at CommandLine.Parser.ParseArguments(String[] args, Object options, Action`2 onVerbCommand)
at Captura.Console.Program.Main(String[] args)
This is caused by culture of my OS, wich is different from en-us. Line 122 MainViewModel.cs:
var rect = (Rectangle)RectangleConverter.ConvertFromString(Settings.Instance.LastSourceName);
But I'cant provide corect input because of the limitation "^\d+,\d+,\d+,\d+$" in Program.cs:
if (Regex.IsMatch(CommonOptions.Source, @"^\d+,\d+,\d+,\d+$"))
{
var rect = (Rectangle)MainViewModel.RectangleConverter.ConvertFromString(CommonOptions.Source);
FakeRegionProvider.Instance.SelectedRegion = rect;
video.SelectedVideoSourceKind = VideoSourceKind.Region;
}
It would be nice to make RectangleConverter.ConvertFromString(CommonOptions.Source) culture invariant.
I have 1080p screen, and in my case windows 10 automatically changes DPI to 125%, so when you try to record a region with Captura it offsets the recording area by 25%.
Since Windows 10 changes DPI automatically for screens larger than 1080p, it will affect a lot of users.
Hi, when I want to use Captura 7.01 (Windows 10), all dropdown menus stay empty - no matter if I use the setup or the portable version. (Please see screenshot.) Strangely, I had used the portable version before, and then it had worked. But after deleting the portable version and installing the setup version, I cannot use either version any longer. Kind regards, Mat
Sometimes i want to add to captured video
some title or info about recording
it would be great if i could set some text overlays in config
and then use them in video
best with options like for keystrokes - font border background
great if i could create few text overlays and just enable disable them
even greater if i could use some defined variables like %date%, %time%, %dayname%
as always this is just a suggestion:)
hi want captura when runnig, most top
but not show in video
can i ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.