vkohaupt / vokoscreenNG

vokoscreenNG is a powerful screencast creator in many languages to record the screen, an area or a window (Linux only). Recording of audio from multiple sources is supported. With the built-in camera support, you can make your video more personal. Other tools such as systray, magnifying glass, countdown, timer, Showclick and Halo support will help
https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html
GNU General Public License v2.0
1.14k stars 92 forks source link

[Feature] Loop recording (and loop-to-standard) #334

Open qs-arno opened 3 weeks ago

qs-arno commented 3 weeks ago

It would be really nice if loop recording were supported. What this means is that the user specifies an amount of recording (given in units of time or disk space) and the recorder preserves a rolling amount of data to match.

In other words, if I turn "loop recording" on and specify "30 seconds", then vokoscreenNG would keep only the most recent 30 seconds of recording. Pressing a hotkey (or interacting with the GUI, I suppose) would cause the current 30 seconds' worth of video to be written to disk. Recording is continuous while this happens (e.g., for the next time you use the hotkey).

This functionality is useful if you're not sure when you might do something awesome over a long period of time, but you don't want to fill your disk up with gigabytes of useless video.

A useful extension would be a second hotkey to switch from loop recording to standard recording. In other words, vokoscreenNG starts with only keeping the last 30 seconds, but when this second hotkey is pressed it writes the current 30 seconds to disk and then continues appending further video to the disk file, either indefinitely or as specified by the existing timers.

vkohaupt commented 1 week ago

I've read through this several times in the last few days. I don't understand it and now I'm wondering if the pause button is broken or not displayed.

qs-arno commented 1 week ago

Let me see if I can explain in a different/better way.

This isn't about having a pause button to start/stop recording quickly and easily; it's about recording all the time but only writing a 30-second video clip to disk when the user requests it.

As a truly extraordinary coincidence, between the time I opened this feature request and now, Valve has actually updated Steam's stable build with this same functionality (https://store.steampowered.com/sale/gamerecording); their term for what I'm calling "loop recording" is "background recording".

It's a good implementation in principle, but I'm still quite interested in seeing this in vokoscreenNG for a few reasons:

  1. Steam is a very resource-intensive program on its own, so having to run it for its recording features when the thing you want to record doesn't require it can bog things down.
  2. Steam's implementation is centered around recording gameplay, and the whole UI is accessed via its (Steam's) in-game overlay. Most of what I want to record isn't video games, so rigging up Steam and going through it's "in-game overlay" to record my desktop is a big hassle.
  3. Steam uses the physical disk to store all the video (instead of in RAM), so you're just beating the crap out of your disk all day if you leave it running (which is the whole point of having the feature). You could use a RAM disk to get around this (I wrote a Linux guide here: https://steamcommunity.com/sharedfiles/filedetails/?id=3360879162), but ideally the recording software would just use RAM on its own so the user doesn't have a manage having a RAM disk.
  4. vokoscreenNG has a whole army of additional recording features that Steam's implementation will never have ('cause it doesn't make sense for their use case).

Hope this helps explain...feel free to reply if you still have questions!