-
Notifications
You must be signed in to change notification settings - Fork 6.8k
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
Functional Spec for Video GIF Capture #6900
Conversation
Surprised ShareX wasn't included for comparison. Also, I think window/region selection is hugely important. Having a full screen can be overkill and could require additional cropping/editing which is non-trivial. Lastly, GIF is perhaps more an idea than a specification here. Recording an animation of what's on-screen and being able to easily share it is the goal. Sites like Giphy, Twitter, etc... don't actually show GIFs. A GIF file has limited support for color and the file size is poorly optimized. Encoding a video and wrapping it in an mp4 would work great. Coincidentally, ShareX does all of this. You can invoke the screen recorder, select a region or window or entire screen and it uses ffmpeg to encode the video. Dig into the options and it can automatically place it on the clipboard and you're off to the races. |
@shayne There is a certain explanation on the part of the crutkas |
doc/specs/VideoGIFSpec.md
Outdated
| Save to MP4 |![Y](./images/GIFSpec/Y.png "Yes") |![Y](./images/GIFSpec/Y.png "Yes") |![Y](./images/GIFSpec/Y.png "Yes") |![Y](./images/GIFSpec/Y.png "Yes") |![N](./images/GIFSpec/N.png "No") |![Y](./images/GIFSpec/Y.png "Yes") | | ||
| Save to GIF |![N](./images/GIFSpec/N.png "No") |![Y](./images/GIFSpec/Y.png "Yes") |![Y](./images/GIFSpec/Y.png "Yes") |![Y](./images/GIFSpec/Y.png "Yes") |![N](./images/GIFSpec/N.png "No") |![Y](./images/GIFSpec/Y.png "Yes") | | ||
| Copy Captured Media to Clipboard |![N](./images/GIFSpec/N.png "No") |![Y](./images/GIFSpec/Y.png "Yes") |![N](./images/GIFSpec/N.png "No") |![Y](./images/GIFSpec/Y.png "Yes") |![Y](./images/GIFSpec/Y.png "Yes") |![Y](./images/GIFSpec/Y.png "Yes") | | ||
| Microphone Audio |![Y](./images/GIFSpec/Y.png "Yes") |![N](./images/GIFSpec/N.png "No") |![Y](./images/GIFSpec/Y.png "Yes") |![Y](./images/GIFSpec/Y.png "Yes") |![N](./images/GIFSpec/N.png "No") |![N](./images/GIFSpec/N.png "No") | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm curious why you don't want to support microphone audio recording too.
This is incredibly handy for explaining something when you're trying to demonstrate a problem that you're making a capture for.
I think it's a small enough thing that you really should consider putting it in scope.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why we think this is a stretch goal is this can have a lot of configuration.
Do you want microphone on this capture? all captures by default? Which microphone? Who is handling the levels, the OS or this tool?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Audio input is very important in such a tool. It's a Power Toy, right?
I really keep an eye on a tool where the screen is capture and a Webcam / other cam can be captured as well and you can choose that the shape of this second screen can have rounded corners and some shadow effects. That's the perfect tool for tutorials on Windows 😊👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you want microphone on this capture? all captures by default?
Since there is going to be a selection of whether you want to capture a click-and-drag rectangle, a window or full screen, in the same UI a toggle for mic on/off could be included. For keyboard shortcuts, an alternative key could be used to initiate a recording with mic. (ctrl -> alt)
Which microphone?
Whichever Audio input device is set as Default Communication Device can be set by default. Additionally, a drop-down in settings to set a different device.
Who is handling the levels, the OS or this tool?
I would say the OS.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd be happy with 'default communications mic'.
I have a mic that has it's own gain, so I'd be ok with levels set by the OS.
I think the only significant option is 'mic on' or 'mic off' and default to off.
Alternatively, this could be handled by a hotkey just turning on mic passthru (since then it'll go thru the desktop audio).
It would be nice if these enhancements would also enhance
That would be nice. I think the Snip tool, as mentioned in the spec, would help to accomplish most of this. But, it would be cool if the power tool allowed us to pop that up without using the |
@shayne one place where gif support is still important is in github PRs. My team uses gifs a lot for demonstrating UI changes in PR descriptions. I don't believe that github allows embedding videos yet. |
You could override the default keystroke that but we have a delicate balance between options for everything versus be a permutation which then becomes a test matrix issue. I also would really like to focus on what is the MLP, minimal lovable product. Without what you list here, is what is being proposed not good enough? |
@shayne ScreenToGif also lets you do it. Also why we are also saying "Video/GIF" instead of only GIF. @radix directly called out why gif support is still needed and is the exact scenario we reference in the golden path scenarios. Also see Section 3.1.8.3, we directly call out saving it as a video. ShareX is a great program, we just didn't add it in the compete data since we felt there was a solid amount to see the landscape. |
I tried several gif programs over the years, and one outstanding example of smart processing is GifCam. Why is that? It analyses each frame and compares it with the previous frame regarding a change of information (i.e., change of color). If there is no change, a green pixel will be drawn. Which basically results in a green screen sequence for parts that were not in motion during a sequence. And the result looks like this: This dramatically reduces the file size, compared to a naive approach, which would just save every frame as it is. |
This PR is just a functional specification, it doesn't include technical implementation details, but your suggestion is very good. Thank you for the idea. |
I see you have "Optional Cursor Capture" listed. Not sure if its so obvious it's already included, but would be great to have cursor "click" animation to indicate the user clicked on the screen. In other implementations I have seen this as a circle extending out from the click's point of origin. Perhaps different coloured animation for Left/right cursor clicks? |
So the specs at the top list a non goal as GIF to video encoding but in the graph of features, it shows export to video. Are we getting both? I do like the ease of getting the app to open using the keyboard mapping. But understand if that is not MLP. |
Will this hook into and extend the Snip & Sketch utility built into Windows, or be a stand-alone replacement? Either way, I'm excited for this tool to become reality. I've been using the LICEcap utility recently to do this type of thing because it's free, small, and fast. It has some nice features that would be great to replicate such as a framerate limiting, pause/resume during recording, and a "pre-roll" timer to allow a few seconds to set up your scenario before starting recording. |
@kalaschnik This PR is just the spec, we are not intentionally talking about implementation |
@jasongaylord that is referring to transcoding. We will not do GIF->Video and Video->GIF transcoding for existing files |
Please add a function to capture a Webcam or other cam for Tutorial stuff. I keep an eye out of the perfect tool, wich offers me the option to get an rounded corners shape from the Webcam with shadow effects out of the box to make tutorials on Windows. Embedding a microphone / audio is important too. |
OBS I think would be a better tool for that. Goal here is quick and light weight. I believe there is nothing wrong having different tools for different proposes. |
Command line/API: The use case around adding clips to bug capture would benefit from having the ability to setup and launch programmatically and/or through command line. This would allow test automation tools/frameworks/ci-cd pipelines etc. to hook in and setup, start, and stop, and save a recording. Thanks. |
Cursor Click, and Touch too |
Oooh. I like the idea of a simple CLI to go with it. The number of times that I'd love to be able to say |
We are viewing this PR as closed for feedback. We'll be doing the final updates and will shortly push it to the wiki |
Is currently P0, I suggest P1 or even P2 since the users will be able to do the selection as many time as they want to make sure they have the desired selection, so it seems it's not a must have feature for the first release.
Shouldn't be the other way around and have save to GIF in the first release and save to video in the second release? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work!
Summary of the Pull Request
What is this about?
This pull request is adding the functional spec for the Video GIF Capture.
This is for work post-stabilization of current roadmap work and is only the spec for what we are planning to support.
Once everyone has provided feedback, we'll update the spec and then move it to the Wiki.
Easy viewing link to the MD file in spec
PR Checklist
This PR will be closed for feedback October 12th, 2020.